NIC地獄/意外な結末

NICではまって何日たっただろう。しかし、そこには意外な結末が待っていた。


ドライバをモジュールから組み込みに変えてカーネル再構築

まず、/etc/conf.modulesに記述したalias eth0 neは削除。

stratx、cd /usr/src/linux、make xconfig、「Network device support」の「NE2000/NE1000 support」を"m"から"y"に変更、Save and Exit、Exit Fvwm

cd /usr/src/linux、make dep、make clean、make zlilo、make modules、make modules_install、depmod -a

reboot

これで再起動するが、またDelaying eth0 initialization.と出る。

/etc/lilo.confにappend = "ether=9,0xe000,eth0"を追加

忘れていたが、この時点で/etc/lilo.confの最上行にはappend = "reserve=0xe000,32 ether=9,0xe000,eth0"と書いてあった。これをappend = "ether=9,0xe000,eth0"に変更して、/sbin/liloを実行後、 rebootしてみる。しかし、これもDelaying eth0 initialization.でダメ。

Ethernet-HOWTO

気分を変えて、英語版のEthernet-HOWTOを見ると、次のような記述がある。

5.27.2. NE2000-PCI (RealTek/Winbond/Compex)

Status -- Supported

Yes, believe it or not, people are making PCI cards based on the ten year old interface design of the ne2000. At the moment nearly all of these cards are based on the RealTek 8029 chip, or the Winbond 89c940 chip. The Compex, KTI, VIA and Netvin cards apparently also use these chips, but have a different PCI ID. The linux kernel v2.0.33 has support to automatically detect all these cards and use them. (If you are using a kernel v2.0.30 or older, you should upgrade to ensure your card will be detected.)

Note that you have to say `Y' to the `Other ISA cards' option when running make config as you are actually using the same NE2000 driver as the ISA cards use. (That should also give you a hint that these cards aren't anywhere as intelligent as say a DEC 21040 card...) In the future, a PCI-only NE2000 driver will be included in the kernel source for these cards. The driver is currently available for testing at:

http://cesdis.gsfc.nasa.gov/linux/drivers/ne2k-pci.html

Some newer motherboards don't enable all the PCI cards at power-up, and this generally causes the card to be detected, but to fail the probe. Code to enable such cards is due to be added to the v2.0.34 ne.c driver, based on that which is in the above PCI-only driver.

If you have a NE2000 PCI card that is not detected by the driver, please contact the maintainer of the NE2000 driver as listed in /usr/src/linux/MAINTAINERS along with the output from a cat /proc/pci and dmesg so that support for your card can also be added to the driver.

気になるのは、マザーボードによっては、電源投入時に全てのPCIカードが使用可能になっておらず、カードは検出されるが調査に失敗するという点である。PCI専用のドライバがある、カーネル2.0.34ではこれも解決できるらしいが。

NICの取り付けスロットを変更

マザーボード(ASUS P/I-P55T2P4)上で、NICを取り付けているスロットをPCI#4からPCI#2へ移動してみる。再起動すると、やはりDelaying eth0 initialization.である。

ここで、/proc/pciを見てみると、次のようになっている。

Ethernet controller: Reaktek 8029 (rev 0)はIRQ 12 I/O at 0xe000
VGA compatible controller: S3 Inc. Trio32/Trio64 (rev 64)がIRQ 9

/etc/lilo.confに記述したappend = "ether=9,0xe000,eth0"をappend = "ether=12,0xe000,eth0"に変更してrebootしてみる。しかし、これもDelaying eth0 initialization.でダメ。

NIC自体の故障か

こうなると後は、カーネルを2.0.34以上に上げるしかない。ftpサイトからカーネルlinux-2_0_35_tar.gzと、念のためpatch-2_0_33.gz、patch-2_0_34.gz、patch-2_0_35.gzをダウンロードする。

パッチは1MB以下なので、フロッピーでも移動できるが、カーネルソースは6MB以上なのでフロッピーは使えない。仕方がないので、Windows95を起動して、ネットワークでファイルをコピーするしかない。

が、ここで異変が起きた。パッチファイルのコピーは3つともOKであったが、カーネルソースをコピーしようとExplorerで操作した瞬間、画面はブラックアウトとなり、何も受け付けなくなった。他のWindows95も含めて4、5回やったが、どれもダメである。また、ネットワーク関連の設定をしようと操作してもブラックアウト&完全フリーズが発生する。Winipcfg.exeでもエラーが出るので、設定を見るとTCP/IPがどっかへ行ってしまっている。

これはカード自体の故障か、あるいはPCIスロットが2.0のマザーボードのせいか。いずれにしても、どうやらこの状態でLinuxの設定をやっても無駄なようである。

ちなみに、Webを検索していて、このNICはSVECのPN0456-T(RTL8029)と分かった。箱には入っているがノーブランドのバルクと思っていたが、どうも違うようである。SVECのWebサイトにはデータシートやドライバがあったが、今となっては.....


最初に戻る