NIC変更で再挑戦/でもダメ
Windows95では問題無く使えていたElecom Laneed LD-NE20/Tではあるが、Linuxではどうにも上手くいかない。初心者がこれ以上関わっても時間の無駄と思われるので、NICを変更することにした。
RTL8029AS
NE2000互換という触れ込みで痛い目にあったので、今度は3com等のメジャーなNICを使いたい。たまたまであるが、Gatewayに付けたNICは、3com EtherLink III ISA(3C509B-TP)というLinuxには打ってつけのカードであるが、Gatewayは安定指向のメインマシンであり、ケースもでかくて面倒なので、このNICを外すのはどうもいやである。
一方、気軽にデバイスの拡張をしている自作2号(Epox)に付けたノーブランドのNIC(PCI)を取り外してみると、RTL8029AS 7C247S1 802C TAIWANと書かれたチップが載っている。どうせノーブランドだからなぁと思いながら、gooで検索をしてみると、これが結構引っかかる。いくつかのサイトを見てみると、実はこれ、最近よく使われているチップらしく、Realtekというベンダの製品と分かった。しかも、Realtekを訪れると、ちゃんとLinux用のドライバもあるし、別の情報ではLinux上でNE2000のドライバで動作するらしい。おお、これは上手くいけば掘り出し物かもしれない。
まずは設定を元に戻す
Elecom Laneed LD-NE20/Tを使えるようにするために、訳も分からず色々と闇雲にやったことを元に戻す。
1.lilo.conf
/etc/lilo.confに追加したappend="ether=9,0x280,eth0"を削除して、/sbin/liloを実行し、rebootする。
2.カーネルの再構築
Mainウインドウで/usr/src/linuxに移り、make xconfigと入力し、Network device supportのNE2000/NE1000 supportを"y"から"m"に戻す。
さらに、3COM cards、AMD LANCE and PCnet (AT1500 and NE2100) support、Western Digital/SMC cardsも一応"n"から"y"に戻す。
General SetupでNetworking Support "y" Networking OptionsでTCP/IP networking "y" Network Device SupportでEthernet (10 or 100Mbit) "y"は元々そうだったのでそのまま。
Save and Exitを押し、確認メッセージにOKと答え、 X Windowを終了する。
/usr/src/linuxに移り、make dep、make clean、make zlilo、make modules、make modules_install、depmod -aを実行し、rebootで再起動する。問題なく起動するが、もちろんeth0はダメで、ブート時にDelaying eth0 initialization.と出ている。
3.Windows
さらに、Windows95等も起動して、やらくても大丈夫と思うが、一応、デバイスマネージャ上でNE2000 Compatibleとなっているネットワークアダプタを削除する。ただし、Windows98beta3はデバイスの削除で凍り付いて上手くいかないので放置した。
以上で一旦電源を落とし、Elecom Laneed LD-NE20/Tを外し、ノーブランドのRTL8029ASに入れ替える。
Elecom Laneed LD-NE20/T再確認
Elecom Laneed LD-NE20/Tを外すと、あれ?ジャンパピンがある。よく分からない部分もあるが、おおよそ次の通りになっている。そもそもJP6がOFFなので、この設定は無効で、ユーティティで書き込んだEEPROMの内容が有効なはずだが。
JP1 | JP2A 10BASE 321 |
JP2 10BASE 21 |
JP3:NE2000 MODE | JP4 ROM ADDR BASE 1234 |
JP5 | JP6 | JP7 IRQ | JP8 |
OFF:NE2000 | 300H 000 | ピンが見当たらない | ON:MODE0 | NO ROM 000X | 1-2:UTP | ON:JUMPER MODE | 3 | ON:FAST READ |
ON:NE1000 | NONE 001 | OFF:MODE1 | C000H 0010 | 2-3:BNC | OFF:JUMPERLESS | 4 | OFF:NON-FAST READ | |
240H 010 | C400H 0011 | 5 | ||||||
280H 011 | C800H 0100 | 7 | ||||||
2C0H 100 | CC00H 0101 | 9 | ||||||
320H 101 | D000H 0110 | 10 | ||||||
340H 110 | D400H 0111 | 11 | ||||||
360H 111 | D800H 1000 | 12 | ||||||
ピンが見当たらない | DC00H 1001 | |||||||
C000H 1010 | ||||||||
C800H 1011 | ||||||||
D000H 1100 | ||||||||
D800H 1101 | ||||||||
C000H 1110 | ||||||||
D000H 1111 |
また、チップには「NetWare Tested and Approved」なんてシールが貼られているが、これを剥がすと、「UMC UM9003AF 9537-ET M723F1」と書いてある。一応Webで色々検索してみると、やはりこのチップ、一癖ありそうである。
RTL8029ASのインストール
RTL8029ASを取り付け、まずはWindows95でセットアップをする。付属のFDからドライバをインストールし、難なくセットアップは完了。
次にLinuxを起動させる。しかし、またDelaying eth0 initialization.が出ている。案の上、ifconfig -aでeth0は表示されない。
ここで新しく知ったコマンドをやってみる。/procに移動し、cat pci。すると、PCIデバイスのリストが表示される。
Bus 0, device 9, function 0: Ethernet controller:Realtek 8029 (rev0). Medium devsel. IRQ 9. I/O at0xe000. |
確かにある。ハードウエアとして認識されているようである。しかし、他のioports、interrupts、devices、net/devには全然それらしきものは無く、どうもこのデバイスはeth0ということになっていない感じである。make xconfigはやっていないが、新しいデバイスを追加したということで、カーネルの再構築もやってみるが、これでもダメ。
/etc/lilo.confとetc/conf.modulesの変更
さらに、I/Oが0xe000となっているのが気になるので、/etc/lilo.confにappend="ether=9,0xe000,eth0"を追加してみる。/sbin/liloを実行後、rebootしてみる。しかし、これでもダメ。
Network ConfigurationのInterfaceでeth0のactiveの項がinactiveになっているので、Activateというボタンを押してみる。すると、activeになるが、どうもこれも違う。
今度のカードはPCIなのに、NE2000はあくまでISAカードの中にあるのも気になるが、それはどうしていいのか、問題なのかも分からない。
さらにネット上を彷徨うと、「IRQとI/Oアドレスをlilo.confに書き込み、かつ/etc/rc.d/rc.modulesの/sbin/modprobe ne io=XXXXXの部分に/proc/pciに書かれていたI/Oアドレスを書く」とある。ところが、/etc/rc.dの中にrc.modulesが無い。
また別の方法として「/etc/modules.conf(conf.modulesでも同じ)にalias eth0 neを入れる」というのもある。ファイルを捜すと、/etc/conf.modulesはあった。しかし、これ、開いてみると何も書いていない。もうヤケクソでやってみる。rebootをかけた際に、サッと画面が切り替わったのでよく見なかったが、どうも正常に終了しなかったようである。それでも、再起動はかかり、sendmailで止まったところで画面を見ていると次のメッセージが新しく出ている。
ne.c: Module autoprobing not allowed. Append "io=0xNNN" value(s) |
io=0xNNNを足せと言っているようなので、etc/conf.modulesにalias eth0 ne io=0xe000としてみる。これで、再起動すると、
modprobe: Can't locate module eth0 |
となり、やはり上手くいかない。modprobeというコマンドをゴチャゴチャとオプションを付けて実行もしてみるが効果無し。
モジュールは止めてカーネル再構築
RealtekのWebにもう一度行って、Linux用のドライバとドキュメントのセットを拾ってきて見ると、このドライバはkernel 1.2.13対応ということで古く、新しいカーネルではNE2000を使うように書いている。そこには方法も書いているが、ドライバはモジュールではなく、[*]で組み込むように書いているのでそのようにしてみる。が、これもmodprobe: Can't locate module eth0である。
あとは、/etc/lilo.confに追記したappend="ether=9,0xe000,eth0"を削除、etc/conf.modulesに記述したalias eth0 ne io=0xe000も削除してみる。でもダメ。
更新ソフトのアップデート
Red Hat Linux 4.2のインストールに使ったLinux Japan Vol.6のCDには、さらに更新ソフトのアップデートが記述されていたのを思い出し、これもやってみる。CD-ROMのマウント後、rpm -Uvh --nodeps --force *.rpmと入力して終わりとある。しかし、これもダメ。
その後、駄目押しで、/etc/lilo.confの先頭にappend = "reserve=0xe000,32 ether=9,0xe000,eth0"とも書いてみるが、やはりダメ。
あ〜もう疲れた。