インストール - Ethernetドライバ
概要
Linuxで イーサネットデバイスを使用する場合、専用ドライバをインストールする必要がある可能性がある。
ここでは、イーサネットデバイスの各チップにおいて、専用ドライバのインストール手順を記載する。
RTL8126
搭載しているデバイス
- PCIeネットワークカード (NIC)
- ASUS XG-C261 : 2.5GbE PCIe NIC
- TP-Link TG-3468 : 2.5GbE対応モデル
- マザーボード (オンボードLAN)
- ASUS : ROG/TUF/Primeシリーズの多くのモデル
- MSI :MPG/MAGシリーズ
- GIGABYTE : AORUSシリーズ
- ASRock : 各種AMD/Intelマザーボード
- USB接続ネットワークアダプタ
- ASUS USB-C2500 : USB 3.0/3.1接続の2.5GbEアダプタ
ビルドに必要なライブラリのインストール
システムパッケージの更新とビルドに必要なライブラリのインストールする。
sudo zypper update sudo zypper install -t pattern devel_kernel dkms
Wi-Fiデバイスの確認
イーサネットデバイスが認識されているかどうかを確認する。
sudo hwinfo --network
# 出力例: 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)
ソースコードのダウンロード
RTL8126ドライバのソースコードをダウンロードする。
- 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
git clone https://github.com/openwrt/rtl8126.git
RTL8126ドライバのインストール (セキュアブートが無効の場合)
ダウンロードしたソースコードがあるディレクトリに移動して、RTL8126ドライバをビルドしてインストールする。
cd <RTL8126ドライバのソースディレクトリ> make -j $(nproc) sudo make install
必要であれば、カーネルオブジェクトを圧縮することもできる。
cd /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/ sudo zstd --rm r8126.ko または sudo zstd --ultra -22 --rm r8126.ko
※注意
Linuxカーネルをアップデートした場合は自動的にRTL8126ドライバが削除されるため、再度、RTL8126ドライバをインストールする必要がある。
RTL8126ドライバをデプロイする。
sudo depmod -a $(uname -r)
RTL8126ドライバを読み込む。
sudo modprobe -v r8126
RTL8126ドライバのインストール (セキュアブートが有効の場合)
ダウンロードしたソースコードがあるディレクトリに移動して、RTL8126ドライバをビルドする。
cd <RTL8126ドライバのソースディレクトリ> make -j $(nproc)
まず、署名に必要な設定ファイルを作成する。
mkdir -p ~/MOK/RTL8126 && cd ~/MOK/RTL8126 vi RTL8126.config
# ~/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
キーペアを作成する。
openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config ./RTL8126.config \ -outform DER -out ./RTL8126.der -keyout ./RTL8126.priv \ -addext "extendedKeyUsage=codeSigning"
次に、MOK(Module owned Key)にキーをインポートする。
--root-pwオプションを付加することにより、再起動時のRealtek RTL8126モジュールの署名において、rootパスワードが必要となる。
sudo mokutil --import ./RTL8126.der --root-pw
PCを再起動して、上記のキーの署名する。
sudo systemctl reboot
RTL8126ドライバをインストールする。
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/
Realtek RTL8126ドライバ (r8126.ko) を署名する。
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
必要であれば、Realtek RTL8126モジュールをXZ形式またはZstandard形式に圧縮する。(任意)
# 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
※注意
Linuxカーネルをアップデートした場合は自動的にRTL8126ドライバが削除されるため、再度、RTL8126ドライバをインストールする必要がある。
RTL8126ドライバをデプロイする。
sudo depmod -a $(uname -r)
RTL8126ドライバを読み込む。
sudo modprobe -v r8126
RTL8126ドライバのアンインストール (セキュアブートが無効の場合)
RTL8126ドライバをアンインストールする。
cd <RTL8126ドライバのソースディレクトリ> sudo make uninstall
RTL8126ドライバファイルを削除する。
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
ドライバ群をデプロイする。
sudo depmod -a $(uname -r)
RTL8126ドライバのアンインストール (セキュアブートが有効の場合)
RTL8126ドライバをアンインストールする。
cd <RTL8126ドライバのソースディレクトリ> sudo make uninstall
RTL8126ドライバファイルを削除する。
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
ドライバ群をデプロイする。
sudo depmod -a $(uname -r)
次に、Realtek RTL8126ドライバの署名を削除する。
Realtek RTL8126モジュールの署名を削除する場合、以下のコマンドを実行して再起動する。
--root-pwオプションを付加することにより、再起動時のRealtek RTL8126デバイスの署名の削除において、rootパスワードが必要となる。
cd <Realtek RTL8126モジュールの署名ファイルが存在するディレクトリ> sudo mokutil --delete ./RTL8126.der --root-pw sudo systemctl reboot
DKMSの使用
DKMSを使用して自動的にビルドおよびインストールすることも可能である。
まず、以下に示すGithubリポジトリからソースコードをクローンする。
git clone https://github.com/awesometic/realtek-r8126-dkms.git cd realtek-r8126-dkms
DKMSモジュールをインストールする。
sudo ./dkms-install.sh
RTL8126モジュールが正常にロードされていることを確認する。
lsmod | grep -i r8169
上記の設定を有効化するため、initrdを再構築する。
sudo dracut -f /boot/initrd $(uname -r)
※注意
もし、RTL8169モジュールが既にインストールされている場合、RTL8126モジュールよりも優先的にロードされるため衝突を起こす可能性がある。
そのため、RTL8169モジュールがロードされないようにブラックリストに設定する。
sudo vi /etc/modprobe.d/blacklist-r8169.conf
# /etc/modprobe.d/blacklist-r8169.confファイル blacklist r8169