インストール - Ethernetドライバ

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

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ドライバのソースコードをダウンロードする。


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