ぶていのログでぶログ

思い出したが吉日

Intel iceドライバをDKMS対応する

昨日書いたUbuntu 22.04でIntel E810 NICを使ってbondingデバイスを設定するとブート時にハングアップする の続き。

Intelのiceドライバは以下からダウンロードできる。 www.intel.co.jp

インストール自体は同梱のREADMEに書いてある手順でできる。 私の手元のUbuntu22.04では以下の手順でインストールできた。

$ sudo apt update
$ sudo apt install -y build-essential
-- snip --
$ tar xvf ice-1.11.14.tar.gz
-- snip --
$ cd ice-1.11.14/src/
$ make install
-- snip --

# 一度再起動しないとmodprobeしても差し替わらないっぽい?
$ sudo shutdown -r now

DKMSに対応する

make install すると今のカーネルには組み込まれるのだが、カーネルアップデートしたらカーネル組み込みのiceドライバに戻ってしまう。 そこでIntel提供のiceドライバをDKMSに対応させる。

help.ubuntu.com

まずはdkmsパッケージをインストールする。

$ sudo apt install -y dkms

次にiceドライバのソースコードをコピーする。

$ sudo cp -R ice-1.11.14 /usr/src/ice-1.11.14

次にdkms.confを設定する。 dkms.confの詳細については UbuntuTips/Others/DkmsHowTo - Ubuntu Japanese Wiki を参照のこと。

$ sudo vim /usr/src/ice-1.11.14/dkms.conf
# 以下の内容を入力する
PACKAGE_NAME="ice"
PACKAGE_VERSION="1.11.14"
CLEAN="cd src; make clean"
BUILT_MODULE_LOCATION[0]="src/"
BUILT_MODULE_NAME[0]="ice"
MAKE[0]="cd src; 'make' all KSRC=/lib/modules/${kernelver}/build"
DEST_MODULE_LOCATION[0]="/kernel/drivers/net/ethernet/intel/ice"
AUTOINSTALL="yes"

dkmsに登録しビルドする。

$ sudo dkms add -m ice -v 1.11.14
$ sudo dkms build -m ice -v 1.11.14
-- snip --
$ sudo dkms install -m ice -v 1.11.14

ice.ko:
Running module version sanity check.
 - Original module
 - Installation
   - Installing to /lib/modules/5.15.0-71-generic/updates/dkms/

depmod...

問題なければこれでインストールされているはず。

$ modinfo ice | grep -i version
version:        1.11.14
srcversion:     4DA87E43DC1804C279E5F47
vermagic:       5.15.0-71-generic SMP mod_unload modversions

ちなみに、不要になったら削除もできる。削除すると元のドライバを復旧してくれるようで便利。

$ sudo dkms remove -m ice -v 1.11.14
Module ice-1.11.14 for kernel 5.15.0-71-generic (x86_64).
Before uninstall, this module version was ACTIVE on this kernel.

ice.ko:
 - Uninstallation
   - Deleting from: /lib/modules/5.15.0-71-generic/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.

depmod...
Deleting module ice-1.11.14 completely from the DKMS tree.
$ modinfo ice | grep -i version
srcversion:     2EE54BEB9C4F42B97FEFC77
vermagic:       5.15.0-71-generic SMP mod_unload modversions