CentOS stream 8 にRTL8125Bのドライバを入れようとする

環境は我が家のファイルサーバ CentOS Stream 8

そこに入れるのはRealtek製2.5GbEコントローラRTL8125Bのドライバですが
オフィシャルサイトでソースコードで公開されています。

今日の時点では

2.5G Ethernet LINUX driver r8125 for kernel up to 5.6 9.007.01 2021/11/17

ということでこれをダウンロードしてtar.bz2のアーカイブを展開

出てきたソースをとりあえずautorunかけると失敗する。

ログ出す為にsrcでmakeかけると

[rance@ruriko src]$ make

CC: cc
CCVERSION: 8
KERNEL_GCC_VERSION: 8.5.0
KVER: 4.18.0-310.el8.x86_64
KMAJ: 4
KMIN: 18
KREV: 0
BASEDIR: /lib/modules/4.18.0-310.el8.x86_64
DRIVERDIR: /lib/modules/4.18.0-310.el8.x86_64/kernel/drivers/net/ethernet/realtek
PWD: /home/rance/www/rpm/driver/r8125-9.007.01/src
RTKDIR: kernel/drivers/net/ethernet/realtek

make -C /lib/modules/4.18.0-310.el8.x86_64/build M=/home/rance/www/rpm/driver/r8125-9.007.01/src clean
make[1]: ディレクトリ ‘/usr/src/kernels/4.18.0-310.el8.x86_64’ に入ります
make[1]: ディレクトリ ‘/usr/src/kernels/4.18.0-310.el8.x86_64’ から出ます
make -C /lib/modules/4.18.0-310.el8.x86_64/build M=/home/rance/www/rpm/driver/r8125-9.007.01/src modules
make[1]: ディレクトリ ‘/usr/src/kernels/4.18.0-310.el8.x86_64’ に入ります
CC [M] /home/rance/www/rpm/driver/r8125-9.007.01/src/r8125_n.o
/home/rance/www/rpm/driver/r8125-9.007.01/src/r8125_n.c:62:10: 致命的エラー: linux/pci-aspm.h: そのようなファイルやディレクト
リはありません
#include
^~~~~~
コンパイルを停止しました。
make[2]: *** [scripts/Makefile.build:316: /home/rance/www/rpm/driver/r8125-9.007.01/src/r8125_n.o] エラー 1
make[1]: *** [Makefile:1569: module/home/rance/www/rpm/driver/r8125-9.007.01/src] エラー 2
make[1]: ディレクトリ ‘/usr/src/kernels/4.18.0-310.el8.x86_64’ から出ます
make: *** [Makefile:176: modules] エラー 2

ということで、linux/pci-aspm.hが無いという事でエラー

これは今のカーネルVerでは削除されたヘッダファイルなので存在しません。

r8125_n_cファイルを開いて見てみますと

   60 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
   61 #if LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0)
   62 #include <linux/pci-aspm.h>
   63 #endif
   64 #endif

 

どうもカーネルバージョンナンバーでヨシとするかダメとするかの構文で4.18が上手く拾えてないようだ。

   61 #if LINUX_VERSION_CODE < KERNEL_VERSION(4,4,0)

に書き換え

 

さらにこれでmakeかけると

 

[rance@ruriko r8125-9.007.01]$ make
make -C src/ clean
make[1]: ディレクトリ ‘/home/rance/www/rpm/driver/r8125-9.007.01/src’ に入ります
make -C /lib/modules/4.18.0-310.el8.x86_64/build M=/home/rance/www/rpm/driver/r8125-9.007.01/src clean
make[2]: ディレクトリ ‘/usr/src/kernels/4.18.0-310.el8.x86_64’ に入ります
make[2]: ディレクトリ ‘/usr/src/kernels/4.18.0-310.el8.x86_64’ から出ます
make[1]: ディレクトリ ‘/home/rance/www/rpm/driver/r8125-9.007.01/src’ から出ます
make -C src/ modules
make[1]: ディレクトリ ‘/home/rance/www/rpm/driver/r8125-9.007.01/src’ に入ります
make -C /lib/modules/4.18.0-310.el8.x86_64/build M=/home/rance/www/rpm/driver/r8125-9.007.01/src modules
make[2]: ディレクトリ ‘/usr/src/kernels/4.18.0-310.el8.x86_64’ に入ります
  CC [M]  /home/rance/www/rpm/driver/r8125-9.007.01/src/r8125_n.o
/home/rance/www/rpm/driver/r8125-9.007.01/src/r8125_n.c:12081:31: エラー: initialization of ‘void (*)(struct net_device *, un
signed int)’ from incompatible pointer type ‘void (*)(struct net_device *)’ [-Werror=incompatible-pointer-types]
         .ndo_tx_timeout     = rtl8125_tx_timeout,
                               ^~~~~~~~~~~~~~~~~~
/home/rance/www/rpm/driver/r8125-9.007.01/src/r8125_n.c:12081:31: 備考: (‘rtl8125_netdev_ops.xe7x84xa1xe5x90x8d>.ndo_tx
_timeout’ 用の初期化付近)
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:316: /home/rance/www/rpm/driver/r8125-9.007.01/src/r8125_n.o] エラー 1
make[2]: *** [Makefile:1569: _module_/home/rance/www/rpm/driver/r8125-9.007.01/src] エラー 2
make[2]: ディレクトリ ‘/usr/src/kernels/4.18.0-310.el8.x86_64’ から出ます
make[1]: *** [Makefile:176: modules] エラー 2
make[1]: ディレクトリ ‘/home/rance/www/rpm/driver/r8125-9.007.01/src’ から出ます
make: *** [Makefile:41: modules] エラー 2

 

相変わらずエラー

該当文字列の処理を行ってるところで同じようにバージョン違いで

 

  338 #if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)
  339 static void rtl8125_tx_timeout(struct net_device *dev, unsigned int txqueue);
  340 #else
  341 static void rtl8125_tx_timeout(struct net_device *dev);
  342 #endif

13964 #if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)
13965 static void
13966 rtl8125_tx_timeout(struct net_device *dev, unsigned int txqueue)
13967 #else
13968 static void
13969 rtl8125_tx_timeout(struct net_device *dev)
13970 #endif   このあたりを   338 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0)
13964 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0)

 

に書きかえて見る。

 

[rance@ruriko r8125-9.007.01]$ sudo ./autorun.sh
[sudo] rance のパスワード:

Check old driver and unload it.
Build the module and install
At main.c:160:
– SSL error:02001002:system library:fopen:No such file or directory: crypto/bio/bss_file.c:69
– SSL error:2006D080:BIO routines:BIO_new_file:no such file: crypto/bio/bss_file.c:76
sign-file: certs/signing_key.pem: No such file or directory
DEPMOD 4.18.0-310.el8.x86_64
load module r8125
Completed.

 

と、通ったようだ。

 

ドライバーソースのautorun.shをsudoに続いて発行するとドライバを適正位置まで配置してくれます。

 

[rance@ruriko r8168-8.049.02]$ ls /usr/lib/modules/4.18.0-310.el8.x86_64/kernel/drivers/net/ethernet/realtek/
8139cp.ko.xz  8139too.ko.xz  r8125.ko  r8169.ko.xz

 

r8169に8125が内包されてるようなのでのちほど除去

 

 

コメントを残す

メールアドレスが公開されることはありません。