MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - Ethernetドライバのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - Ethernetドライバ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Linuxで イーサネットデバイスを使用する場合、専用ドライバをインストールする必要がある可能性がある。<br> <br> ここでは、イーサネットデバイスの各チップにおいて、専用ドライバのインストール手順を記載する。<br> <br><br> == RTL8126 == RTL8126は、Linuxカーネル 6.9で初期サポートが追加され、一部のRTL8126チップが動作する。<br> Linuxカーネル 6.10以降では、正式なサポートが導入され、より安定した動作を得ることができる。<br> <br> そのため、それ以前のカーネルバージョンで使用する場合は、RealtekまたはサードパーティのDKMSパッケージを手動でインストールする必要がある。<br> <br> ==== 搭載しているデバイス ==== * PCIeネットワークカード (NIC) ** ASUS XG-C261 : 2.5GbE PCIe NIC ** TP-Link TG-3468 : 2.5GbE対応モデル *: <br> * マザーボード (オンボードLAN) ** ASUS : ROG/TUF/Primeシリーズの多くのモデル ** MSI :MPG/MAGシリーズ ** GIGABYTE : AORUSシリーズ ** ASRock : 各種AMD/Intelマザーボード *: <br> * USB接続ネットワークアダプタ ** ASUS USB-C2500 : USB 3.0/3.1接続の2.5GbEアダプタ <br> ==== ビルドに必要なライブラリのインストール ==== システムパッケージの更新とビルドに必要なライブラリのインストールする。<br> sudo zypper update sudo zypper install -t pattern devel_kernel dkms <br> ==== Wi-Fiデバイスの確認 ==== イーサネットデバイスが認識されているかどうかを確認する。<br> sudo hwinfo --network <br> # 出力例: 87: None 00.0: XXXXX Ethernet [Created at net.XXX] Unique ID: xxxx.xxxxxxxxxxx Parent ID: yyyy.yyyyyyyyyyy SysFS ID: /class/net/eth0 SysFS Device Link: /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:06.0/0000:08:00.0 Hardware Class: network interface Model: "Ethernet network interface" Driver: "r8126" Driver Modules: "r8126" Device File: eth0 HW Address: aa:bb:cc:dd:ee:ff Permanent HW Address: xx:yy:zz:uu:vv:ww Link detected: yes Config Status: cfg=no, avail=yes, need=no, active=unknown Attached to: #17 (Ethernet controller) <br> ==== ソースコードのダウンロード ==== RTL8126ドライバのソースコードをダウンロードする。<br> <br> * Realtekの公式Webサイト *: Unix (Linux) の "5G Ethernet LINUX driver r8126 for kernel up to X.XX " *: https://www.realtek.com/Download/List?cate_id=584 * Github *: <code>git clone https://github.com/openwrt/rtl8126.git</code> <br> ==== RTL8126ドライバのインストール (セキュアブートが無効の場合) ==== ダウンロードしたソースコードがあるディレクトリに移動して、RTL8126ドライバをビルドしてインストールする。<br> cd <RTL8126ドライバのソースディレクトリ> make -j $(nproc) sudo make install <br> 必要であれば、カーネルオブジェクトを圧縮することもできる。<br> cd /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/ sudo zstd --rm r8126.ko または sudo zstd --ultra -22 --rm r8126.ko <br> <u>※注意</u><br> <u>Linuxカーネルをアップデートした場合は自動的にRTL8126ドライバが削除されるため、再度、RTL8126ドライバをインストールする必要がある。</u> <br> RTL8126ドライバをデプロイする。<br> sudo depmod -a $(uname -r) <br> RTL8126ドライバを読み込む。<br> sudo modprobe -v r8126 <br> ==== RTL8126ドライバのインストール (セキュアブートが有効の場合) ==== ダウンロードしたソースコードがあるディレクトリに移動して、RTL8126ドライバをビルドする。<br> cd <RTL8126ドライバのソースディレクトリ> make -j $(nproc) <br> まず、署名に必要な設定ファイルを作成する。<br> mkdir -p ~/MOK/RTL8126 && cd ~/MOK/RTL8126 vi RTL8126.config <br> # ~/MOK/RTL8126/RTL8126.configファイル [ req ] default_bits = 4096 distinguished_name = req_distinguished_name prompt = no string_mask = utf8only x509_extensions = myexts [ req_distinguished_name ] O = SUSE Linux Products GmbH (User Add RTL8126) # 任意の名前 CN = SUSE Linux Enterprise Secure Boot (User Add RTL8126) # 任意の名前 emailAddress = suse@localhost # 任意のメールアドレス [ myexts ] basicConstraints=critical,CA:FALSE keyUsage=digitalSignature subjectKeyIdentifier=hash authorityKeyIdentifier=keyid <br> キーペアを作成する。<br> openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config ./RTL8126.config \ -outform DER -out ./RTL8126.der -keyout ./RTL8126.priv \ -addext "extendedKeyUsage=codeSigning" <br> 次に、MOK(Module owned Key)にキーをインポートする。<br> <code>--root-pw</code>オプションを付加することにより、再起動時のRealtek RTL8126モジュールの署名において、rootパスワードが必要となる。<br> sudo mokutil --import ./RTL8126.der --root-pw <br> PCを再起動して、上記のキーの署名する。<br> sudo systemctl reboot <br> RTL8126ドライバをインストールする。<br> sudo mkdir -p /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/ sudo cp r8126.ko /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/ <br> Realtek RTL8126ドライバ (r8126.ko) を署名する。<br> sudo /lib/modules/$(uname -r)/build/scripts/sign-file sha256 \ ./RTL8126.priv ./RTL8126.der \ /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/r8126.ko <br> 必要であれば、Realtek RTL8126モジュールをXZ形式またはZstandard形式に圧縮する。(任意)<br> # XZ形式の場合 cd /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/ sudo xz -f r8126.ko # Zstandard形式の場合 cd /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/ sudo zstd --rm r8126.ko <br><br> <u>※注意</u><br> <u>Linuxカーネルをアップデートした場合は自動的にRTL8126ドライバが削除されるため、再度、RTL8126ドライバをインストールする必要がある。</u> <br> RTL8126ドライバをデプロイする。<br> sudo depmod -a $(uname -r) <br> RTL8126ドライバを読み込む。<br> sudo modprobe -v r8126 <br> ==== RTL8126ドライバのアンインストール (セキュアブートが無効の場合) ==== RTL8126ドライバをアンインストールする。<br> cd <RTL8126ドライバのソースディレクトリ> sudo make uninstall <br> RTL8126ドライバファイルを削除する。<br> sudo rm /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/r8126 # または sudo rm /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/r8126.xz # または sudo rm /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/r8126.ko.zst <br> ドライバ群をデプロイする。<br> sudo depmod -a $(uname -r) <br> ==== RTL8126ドライバのアンインストール (セキュアブートが有効の場合) ==== RTL8126ドライバをアンインストールする。<br> cd <RTL8126ドライバのソースディレクトリ> sudo make uninstall <br> RTL8126ドライバファイルを削除する。<br> sudo rm /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/r8126 # または sudo rm /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/r8126.xz # または sudo rm /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/r8126.ko.zst <br> ドライバ群をデプロイする。<br> sudo depmod -a $(uname -r) <br> 次に、Realtek RTL8126ドライバの署名を削除する。<br> Realtek RTL8126モジュールの署名を削除する場合、以下のコマンドを実行して再起動する。<br> <code>--root-pw</code>オプションを付加することにより、再起動時のRealtek RTL8126デバイスの署名の削除において、rootパスワードが必要となる。<br> cd <Realtek RTL8126モジュールの署名ファイルが存在するディレクトリ> sudo mokutil --delete ./RTL8126.der --root-pw sudo systemctl reboot <br> ==== DKMSの使用 ==== DKMSを使用して自動的にビルドおよびインストールすることも可能である。<br> <br> まず、以下に示すGithubリポジトリからソースコードをクローンする。<br> git clone https://github.com/awesometic/realtek-r8126-dkms.git cd realtek-r8126-dkms <br> DKMSモジュールをインストールする。 sudo ./dkms-install.sh <br> RTL8126モジュールが正常にロードされていることを確認する。<br> lsmod | grep -i r8169 <br> 上記の設定を有効化するため、initrdを再構築する。<br> sudo dracut -f /boot/initrd $(uname -r) <br> <u>※注意</u><br> <u>もし、RTL8169モジュールが既にインストールされている場合、RTL8126モジュールよりも優先的にロードされるため衝突を起こす可能性がある。</u><br> <u>そのため、RTL8169モジュールがロードされないようにブラックリストに設定する。</u><br> sudo vi /etc/modprobe.d/blacklist-r8169.conf <br> # /etc/modprobe.d/blacklist-r8169.confファイル blacklist r8169 <br><br> == エラー関連 == ==== スリープ / サスペンドができない ==== スリープ / サスペンドが設定されているにもかかわらず、システムがサスペンドできない現象が発生する場合がある。<br> この問題は、ath12kドライバのサスペンドサポートが不完全であることに起因している。<br> <br> * Qualcomm WCN785x (FastConnect 7800) Wi-Fi 7チップ * ath12kドライバを使用するその他のWi-Fiデバイス <br> ===== 症状の確認 ===== # サスペンドを試行 systemctl suspend # ログを確認 sudo journalctl -b -u systemd-suspend.service <br> 以下に示すようなエラーが出力される場合、ath12kが原因である。<br> ath12k_pci 0000:07:00.0: failed to suspend core: -95 PM: Some devices failed to suspend, or early wake event detected Failed to put system to sleep. System resumed again: Operation not supported <br> ===== 解決方法 ===== まず、サスペンド前にWi-Fiモジュールをアンロードするサービスを作成する。<br> sudo nano /etc/systemd/system/wifi-suspend.service <br> <syntaxhighlight lang="ini"> [Unit] Description=Unload ath12k before suspend Before=sleep.target [Service] Type=oneshot ExecStart=/usr/bin/nmcli radio wifi off ExecStart=/usr/sbin/rmmod ath12k [Install] WantedBy=sleep.target </syntaxhighlight> <br> 次に、復帰後にWi-Fiモジュールをロードするサービスを作成する。<br> sudo nano /etc/systemd/system/wifi-resume.service <br> <syntaxhighlight lang="ini"> [Unit] Description=Reload ath12k after resume After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target [Service] Type=oneshot ExecStart=/usr/sbin/modprobe ath12k ExecStart=/bin/sleep 5 ExecStart=/usr/bin/nmcli radio wifi on [Install] WantedBy=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target </syntaxhighlight> <br> サービスを有効化する。<br> sudo systemctl daemon-reload sudo systemctl enable wifi-suspend.service sudo systemctl enable wifi-resume.service <br> 電源管理デーモンを再起動する。<br> # GNOMEの場合 systemctl --user restart gnome-settings-daemon.service # KDEの場合 systemctl --user restart plasma-powerdevil.service <br> 正常にスリープ / サスペンドするかどうかを確認する。<br> systemctl suspend <br> 復帰後、Wi-Fiモジュールが自動的に読み込まれることを確認する。<br> sudo journalctl -b -u wifi-resume.service <br> また、復帰後、Wi-Fiが自動的に再接続されることを確認する。<br> もし、Wi-Fiが自動再接続されない場合は、以下に示す事柄を確認する。<br> * NetworkManagerのWi-Fi設定において、[この優先度で自動的に接続]チェックボックスにチェックが入力されているかどうかを確認する。 * <code>wifi-resume.service</code> 内の <code>ExecStart=/bin/sleep 10</code> の値を増やす。(例 : 10や20) <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
インストール - Ethernetドライバ
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse