最近のマザーボードに、 CentOS 6.10 を入れると、ネットワークが
めんどい、という話があったので、試してみました。
igc のドライバを開発しようと、マザーボードを買ってきたのですが、
なんと「インテル」はいってなかった(爆笑)。
残念ですが、Realtek だったので、そのドライバをテストしました。
Intel の場合、相当改造必要でしたが、Realtek は簡単でした。
ほぼ無修正。(モザイクや、湯気猫の話ではない)
テスト機は GIGABYTE B760 DS3H DDR4 となります。
ツクモ中古で1万4千弱。在庫は3枚くらいありました。
なぜ、そんなこと?というと、Foltia という某システムが、
いまだ、CentOS 6 ベースらしい。
USB-LAN でつなぐというのが、安易な対応で、
KVM 仮想ゲストに入れて、pci パススルーする方法なら、
未来永劫使えそうですけど。
************************
入っていたNICは、 Realtek r8168 でしたが、
CentOS 6.10 標準で、 r8169 と誤認するのは ubuntu 同様。
そのままでは使えません。
せっかくなので、src から make しました。
CentOS 6.10 で、とりあえず動けばいいという方は、
download
にある、r8168only.zip の r8168.ko.tar を
README.txt ( SJIS です ) の手順で入れれば動くはず?
NICtest% tar tvf r8168.ko.tar
-rwxr--r-- root/root 2812623 2024-04-20 23:16 r8168.ko
他、以下ぐたぐた書いてますが、そこに関連するファイルを
download に置いてます。
ほぼstandalone 環境でテストしました。
(あえて、 default route を存在しないIPに設定)
etc-setup.zip テスト機立ち上げ関連。yum とか。
realtek.tar.gz r8168 ドライバ make 環境。そのまま。(owner 221:221)
USB-LAN **********************************************
開発用に、ネットが必要なので、ヨドバシ町田で探したら、
さすがに XP時代のはない。ひとつだけ、Linuxとあったので、
tp-link UE300 (なぜか古いほうが高い)を利用。

Linux と記述あった。
ドライバ入れ替えなくても、この USB-LAN を使うという
方法もあるかと思います。 ( 新しいMB で Foltia 運用 )
なんでもかんでも書いてますので、make だけ知りたい向きは
「 NIC ドライバの詳細 *****」以降までスキップ please。
Cent6.10 インストール *********************************
CentOS-6.10-x86_64-minimal.iso で立ち上げました。
他の rpm は、/inst 以下に展開 (full パッケージ)
USB LAN インストール時にさしておいたら、IP 設定とかできた。
しかし、HDD を MBR形式にしてたから全部やりなおし(笑)。
いまどき、 GPT が標準なんですかねぇ。gparted で事前に rpm 類を
インストール用 HDD に入れていました。
uEFI は遅いから嫌いだけど、それしかないから仕方ない。
boot対象の選択画面とか、わかりやすいですけどね。
ネットワーク (eth1) ********************************
いつもは、真っ先に「Network Manager 」をとめるのですが、
ない!? minimal のせいか。
ちなみに、AlmaLinux8 で、これ止めたら動かなくなった(笑)。
ネットワークですが、
ノートPCでテストしてたときも、自動で ON にならなかったので、
ifup eth1 とやったか、
ifconfig eth1 192.168.100.83 up とやったか失念。
/etc/sysconfig/network-scripts に
ifcfg-eth1 を作成。(詳細は zip ファイルご参照)
これで、reboot しても、リモート作業できます。
そういえば、HWが変わると ethxx がどんどん増える対策として、
/etc/udev/rules.d の 70-persistent-net.rules を消して
ln -s xxx /dev/null があった気しますが、今回やってません。
selinux ********************************
いつものおまじない。
/etc/selinux/config ← 「SELINUX=disabled」
rpm パッケージは /inst/Cent610 以下に置いてます。
gparted で事前にいれておきましたが、O/S いれてから
USB-HDD 経由とかで *.iso コピーもあり。
( mount -o ro,loop full-inst.iso /tmp/iso とか )
yum 設定 ********************************
/etc/yum.repos.d の普通の設定は 仮削除。
( 本来は、enabled=0 だけど、面倒 )
( 以前は、yum --disablerepo=\* とかやってたけど以下が楽)
mkdir org ; mv *.repo org/./
localiso.repo に以下内容を記述
( 先の etc-files.zip にも入れた。
ファイル名、ISO じゃないから、 localinst とかが適切か?(笑) )
[local-BaseOS]
name=Linux 6 - x86_64 (DVD)
baseurl=file:///inst/Cent610
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
これで、がんがん yum で ローカルインストール可能
ユーザ ******************************************
make 用に一般 user 追加。 (group, shadow,passwd 手修正)
普段は、 xinetd とか telnetd を入れるのですが、省略。
rpm 追加 ******************************************
yum install gcc
yum install tcsh ( 趣味です )
yum install kernel-devel
yum install perl
NIC ドライバの詳細 ************************************
https://github.com/mtorromeo/r8168/releases
とりあえず、実機を立ち上げる前に、 CentOS 6.5 で
make してました。以下は実機での作業。
メモ帳に転記してるので、書き間違いあるかも。
基本、一般ユーザで実施。(/var/tmp1 は chmod 777 してます)
user のホームの下でも当然OK。
mkdir -p /var/tmp1/NIC/reaktek に *tar.gz おいて
tar xf r8168-8.050.03.tar.gz
cd r8168-8.050.03/src
mkdir org ; cp -p * org/./ (バックアップ)
r8168_n.c を修正 ( diff r8168_n.c org で確認できます)
CentOS 6.5 では通ったのに、エラーが増えた!!
r8168.h も修正
make
インストールはなんか怖いのでマニュアルで実施。
autorun.sh を参考にしながら。 r8169.ko は名前変更。
以下 root 作業。 チェックせず実施。エラーでても無視。
/sbin/rmmod r8169
[root@NICtest ~]# lsmod | grep r8168
uname -r ( 2.6.32-754.el6.x86_64 これをコピー )
cd /lib/modules/2.6.32-754.el6.x86_64/kernel
cd drivers/net
r8169.ko があったので、リネーム
mv r8169.ko r8169.ko.bak
今作った r8168.ko をここに入れて、chown
cp -p /tmp/r8168.ko .
chown root:root r8168.ko
確認
pwd; ls -ld r8168.ko
/lib/modules/2.6.32-754.el6.x86_64/kernel/drivers/net
-rw-rw-r-- 1 root root 2812623 4月 20 23:16 2024 r8168.ko
chmod 744 r8168.ko ( こんな感じか )
ls -ld r* ( 再確認 )
なんかサイズがでかいけど、 strip しないでおきます。
depmod `uname -r ` ( ようわからんけど真似)
modprobe r8168
lsmod | grep r8 ( で出ました )
ifcfg-eth0 は適当に作ってあるので、
ifdown eth0; ifup eth0 とかやってみた。
ftp テスト *********************************************
性能が心配で測定しましたが、notePC直結だと片方遅い。
仕方ないので、サーバー室(隣の部屋(笑))から来てるケーブルを
直接さしてテストしたら、100MB 1秒で送受信できました。
(ギガHUB,1台しかないんです。買わないとなぁ)
以下、 CentOS 6.5 での作業メモと、各種画像など ************
r8168-8.052.01 は、ありえないエラーがでるので、
r8168-8.050.03 で make。 冗長な部分を 「#if 0」 で解決。
→ r8168_n.c を2箇所修正。 diff r8168_n.c org/./ してね
make install してないのに「勝手に」入れようとしやがる。
make は root じゃなかったので無事影響はなし(笑)。
**************************************************************
撮影した順番に順不同。

これは600円の4G メモリ。安い!!
最初、画面が出ないのは、このメモリのせいかと、ヨドバシで、
3千円もするメモリを買いに行ったのですが、原因は、MBの相性。
テストは600円のメモリでやりました(笑)。

最初かったCPU(F=GPUなし)。セレロンは嫌だし、これが
安いと思ったけど、MBの不具合か、グラボ経由で、どうやっても
起動画面が出ない。CPUを買いなおしたら一発で解決。
そしたら最初、出なかったグラボ経由でも起動画面が出る!?!?
まぁ、ファームを最新にする元気もないので、このまま、グラボなし
オンボードHDMIでテストしました。
そもそも、再度CPU乗せ変えもめんどくさい。

最初は、PCI のNIC で開発する予定でしたが、間違えて
PCI スロットのないMBを買ってしまった。型番みまちがい。
マイクロAT−Xの予定が、それも違ったし(汗)。
しまいにゃ、PCIカード逆さしして、ドーターのパターンが
いつのまにか焼けてた。300円だったけど捨てました(笑)。
(もうドーターカードには懲りた)
でも、将来このMBに、PT2 さすときは、変換必要だけど、
PT2 は古いMBでいいや。(XP用に予備が2枚もある)

これは、先に書いた、USB接続で使う ethenet (NIC)を
ためしに CentOS 6.5 の機械に刺したログです。
無事認識しました。

ifconfig -a

こんな感じで、電源だけ利用。

↑ 上から見た図

USB-LAN をさしてインストール

HDMI がテレビしかないので(サーバー室の
モニタは新しいのですが、移動がめんどう)
いつまでもテレビを占拠できないので、
土曜の午後、買いに行きました。新宿。安い!

で、机のしたの基板に、マイナスドライバをさして
電源いれるのがだるいので、手元にあった、これを
使いたいと、トグルスイッチを買いに行こうと思った
のですが、アキバまでいくのが面倒だなーと。

そしたら、こんな、便利なものがありました。すばらしい。
HDDランプも重要ですよね。
スピーカとリセットSWは実装せず。

こんな感じ。

HDDランプが光らなかったのですが、どうも
LEDが逆極性になってんじゃないかな?
逆刺ししたら光った。
(LEDは逆さししても壊れないし(笑))

起動画面。うちの42インチプラズマは、縦が
768行しかないのに、HDMI はフルHDで受けるので、
字がにじんで全然読めなかったです。これは助かる。
(モニタは 1600x900 )
次の写真は、部屋がきたない(笑)。

数日の予定ですが、机のしたに仮設した実験機。
以上ですっ。