最初の出会い
私が入手したのは、AREA SD-PE25GLAN-1L というパッケージの商品でした。
適当に選びました。
大体どれでも使えるよな。って軽い気持ちでした。
なんでも2.5Gbpsだとかで凄いってことだったので。
お持ち帰り
家について母艦の富士通PRIMERGY TX1310 M3に取り付けました。
# ip a
してみても本体のLANポートしか認識されません。
これは・・・・少し冷や汗が流れ、鼓動が大きく速くなるのが分かりました。
おちついて、
# lspci
:
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM (rev 31)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8125
Realtek 8125って事じゃないか、カニさんチップなんてポピュラーだから大丈夫って思っていたけどそうでもなかった。
ドライバを探す in 自マシン
落ち着き払って
# ls -l /lib/modules/4.18.0-147.8.1.el8_1.x86_64/kernel/drivers/net/ethernet/realtek/
-rw-r--r-- 1 root root 15348 Apr 9 23:03 8139cp.ko.xz
-rw-r--r-- 1 root root 16936 Apr 9 23:03 8139too.ko.xz
-rw-r--r-- 1 root root 33444 Apr 9 23:03 r8169.ko.xz
ない。8125の文字がない。
8139だって8169だって大は小を兼ねるでダメなの?!
駄目です。と冷酷無比な声が聞こえた。
ドライバを探す 本家サイトで
そこで、本家に行きました。
Realtek PCIe FE/GBE/2.5G/Gaming Ethernet Family Controller Software
ここで、一覧表示されるものの中でUnix(Linux)のセクションにあるドライバの中から
2.5G Ethernet LINUX driver r8125 for kernel up to 4.15
を選択してダウンロードします。
メールアドレスを聞かれて、無意味な英数字を入力させられます。
コンパイル
展開するとほぼすべてmode 777でファイルが展開されます。
気持ちが悪いので autorun.sh 以外はxビットを落としたり、wビットを落としたりしました。(まったく個人的嗜好なので)
サイトのdescriptionにもあるようにkernel up to 4.15のためなのか解りませんが、このままautorun.shしてもエラーになります。そこで、足りないものが解ったのでinstallします。
ここからが重要
私の母艦はファイルサーバにするつもりだったので開発キットの類は一切インストールしていなかったのでした。そのため、コンパイラがないだとか、カーネルインクルードファイルがないだとか・・・・
それらの問題を一気に解決する呪文です。
# dnf group install "Development Tools"
# dnf install elfutils-libelf-devel
この呪文の後にautorun.shのあるディレクトリにcdして、
# ./autorun.sh
を入力したらインストールしてinsmodまでしてくれます。そこで、ip a したら、
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 4c:52:62:58:df:8d brd ff:ff:ff:ff:ff:ff
inet 192.168.31.183/24 brd 192.168.31.255 scope global dynamic noprefixroute eno2
valid_lft 161937sec preferred_lft 161937sec
inet6 2001:a452:708:6500:4e52:62ff:fe58:df8d/64 scope global dynamic mngtmpaddr
valid_lft 13621sec preferred_lft 11821sec
inet6 fe80::4e52:62ff:fe58:df8d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:13:3b:b0:1e:b3 brd ff:ff:ff:ff:ff:ff
ここで8125は3番目のenp1s0に相当します。
最後に
再起動させてみて起動後にちゃんとNICが認識されているか確認して大丈夫だったら完成です。
わすれずに depmod
再起動後にNICが認識されていないケースの殆どは、depmod忘れです。
# depmod -a
などとして、/lib/modules/4.18.0-147.8.1.el8_1.x86_64/modules.dep の内容の更新を忘れずに。
確認してみる
# ls -l /lib/modules/4.18.0-147.8.1.el8_1.x86_64/kernel/drivers/net/ethernet/realtek/
total 2596
-rw-r--r-- 1 root root 15348 Apr 9 23:03 8139cp.ko.xz
-rw-r--r-- 1 root root 16936 Apr 9 23:03 8139too.ko.xz
-rw-r--r-- 1 root root 2582552 May 1 20:52 r8125.ko
-rw-r--r-- 1 root root 33444 Apr 9 23:03 r8169.ko.xz
xz圧縮形式にしなくて良いのか
わからないけど、とりあえずこのままにしてましたが、xzコマンドで簡単に圧縮できるので
# xz r8125.ko
として圧縮しましょう。なお、この圧縮をしたあとは、modules.depの内容更新のため、再度、
# depmod -a
を忘れずに。
kernel updateの時に
自動的にドライバを更新させる方法はしらないので原始的に毎回autorunしているのでそこらへんはなんとかしていきたいと思っています。