最近のマザーボードに、 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 ) 次の写真は、部屋がきたない(笑)。 数日の予定ですが、机のしたに仮設した実験機。 以上ですっ。