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が内包されてるようなのでのちほど除去

 

 

[インプレッサ]リアブレーキパッドの交換

本日はリアブレーキパッドの交換を実施

ENDLESSのSSYからプロジェクトμのType PSをチョイス

残圧数mmってところでした。

ラチェットハンドルで、ラチェット部がくるっとひっくり返るこのタイプのハンドルがアストロプロダクツで売っていたのでお買い上げしてしまったw

[アマチュア無線]NanoVNA-Hを入手

ベクトルネットワークアナライザ、NanoVNA-Hを手に入れたので、うちのワイヤーダイポールアンテナ、W735のSWR値を測定してみました。

測定範囲を3.2MHzから7.5MHzまでに設定

3.587MHzと7.070MHzでSWRが綺麗に落ちてるようです。

3.5MHz帯だけ抜いてみると

3.584MHzでSWR1.08

続いて7MHz帯

7.050MHzでSWR1.21
7.1MHzでSWR1.26

7MHz帯で歪みがあるのはワイヤーダイポールの上に少しだけロータリーダイポール730V-2Aの腕がかかってるからでしょう。

W735のバランを利用して14MHz帯のワイヤーを近々に張る予定です。

[PC]テレビ放送受信環境の更新

自宅PCでのTV視聴環境が、アースソフトPT2とPT3の2枚差し環境です。

 

今までは

TVTest+RecTask+TVRock

という化石的環境でした。

 

いい加減ネイティブ64bit化させようかなってことで、この度ソフトウェア回りを一新

TVTest(x64版)+EDCB

の環境に変更。

BonDriverも今まではBonDriver_PT-STとBonDriver_PT3-STの二本立てだったのを、BonDriver_PTxのソースコードをGitHubから入手してVisualStudio2019から64bitでビルドし直し。

 

DirectShow Decorderも、今まではAMD Video Decorderでしたが、MPC Video Decorderに変更。

 

赤CASも正常に認識して映像デコード正常に。

 

あとはキーワード検索予約等もろもろを旧環境から移してこないと・・・。

[アマチュア無線]FT8 JT_Alertでエラー

Twitterでもつぶやきましたが、まだ現象が治まっていないようなので纏めてみます。

 

 

WSJT-X、JTDXのサポートアプリJT_Alertのバージョン2.50系で、フラグ設定によるアラート音が鳴ろうとすると、callsignesウインドウと思われる

JTAlertV2.Managerは動作を停止しました

というアラート画面と共に異常終了します。

 

 

原因を探ったところ、JT_Alert2.50系で必須のランタイムである.Net Frameworkの最新バージョン

.Net Framework 5.0.7

が原因と思われます。

公式フォーラムでも同様の見解であり、microsoft側の修正待ちとなっているようです。

 

仮対応としては、.Net Framework5.0.7をアンインストールし、.Net Framework5.0.6へ戻すことで一応解決はします。

が、WindowsUpdateで勝手に5.0.7に再びアップデートされてしまう為、WindowsUpdateを7日間停止する設定を行い、確実に修正が行われるまで耐えるしかありません。

5.0.7がインストールされてしまったら、再びアンインストールし、5.0.6に戻します。

 

Windows10では

[スタート]-[設定]-[アプリと機能]

から、以下のランタイムを削除します。

 

 

 

このままだとWindowsUpdateで勝手に5.0.7が上書きインストールされてしまいますので、WindowsUpdateの設定ウインドウで、7日間更新を停止の措置を行ってください。

 

次に、マイクロソフトの.Netランタイムダウンロードサイトから、.Net Framework5.0.6のランタイムをダウンロードし、インストールします。

 

https://dotnet.microsoft.com/download/dotnet/5.0

 

ページ中程の右ペインにある、.Net Desktop Runtime 5.0.6 の所にあるリンクからインストーラーをダウンロードします。

JT_Alertの32bit版で使っている方はx86を、64bit版で使っている方はx64版をダウンロードしてインストールします。

 

 

以上でJT_Alertの動作異常は治るはずです。

当該現象がいつまで続くのか解りません。

果たして、MS側の問題なのか、JT_Alert2.50系のバグなのか、修正が待たれます。

 

 

2021/06/23追記

 

JT_Alert2.50.2がリリースされ、当該現象の修正が加えられた模様です。

 

MENU
PAGE TOP