カーネルの再構築が make modules_install まで終わったら、 次はリブートするのだが、 その前にモジュール関連の設定ファイルの変更を行う。
/etc/rc.d/rc.modules をviエディタで開き、 使用する LAN I/F に対応する行のコメント(行頭の '#')を削除して有効にする。 ただし、Intel EtherExpress Pro 10/100 およびその互換 I/F を使用する場合、 以下のエントリを追加する。
/sbin/modprobe eepro100
リブートを行い、新しいカーネルを有効にする。
hostname:/usr/src/linux# shutdown -r now (または [ctrl]+[alt]+[del])
これを確認するためには、以下のコマンドを実行する。
hostname:~# dmesg|grep eth0正常に認識されていれば、以下のように出力される。
eth0: 3Com 3c905 Boomerang 100baseTx at 0x7000, 00:60:97:bb:f7:74, IRQ 10
eth0: 3Com 3c590 Vortex 10Mbps at 0xd000, 00:a0:24:94:6b:06, IRQ 5 eth0: Overriding PCI latency timer (CFLT) setting of 32, new value is 248.
eepro100.c:v0.99B 4/7/98 Donald Becker linux-eepro100@cesdis.gsfc.nasa.gov eepro100.c:v0.99B 4/7/98 Donald Becker linux-eepro100@cesdis.gsfc.nasa.gov eth0: Intel EtherExpress Pro 10/100 at 0x7400, 00:00:E2:0E:39:A8, IRQ 9. Board assembly 096182-001, Physical connectors present: RJ45 Primary interface chip i82555 PHY #1. General self-test: passed. Serial sub-system self-test: passed. Internal registers self-test: passed. ROM checksum self-test: passed (0x49caa8d6). Receiver lock-up workaround activated.
eth0: NE2000 found at 0x300, using IRQ 3.
使用しているボードのドライバからの正常なメッセージが表示されていない場合、 LANボードが認識されていない。 この場合一番疑わしいのは、 当社の場合ISA-SCSIボードとのIRQの競合である。
(以下、社内のみ)PCI-LAN ボードは、PCI BIOS から自動的に割り振られた IRQ を使用する。 ところが ISA-SCSI のドライバでは現在ヘッダファイル埋め込みで IRQ を決め打ちしており、これが PCI BIOS が割り振る予定の IRQ と競合すると、 先に ISA-SCSI が初期化されるためにこの IRQ が使用中となり、 PCI-LAN ボードが IRQ を取得できなくなってしまうのである。 この障害が発生した場合の IRQ の使用状態は、 たとえば以下のようになっている。
hostname:~# cat /proc/interrupts
0: 120582762 timer 1: 503 keyboard 2: 0 cascade 5: 0 + wdt0 13: 1 math error 14: 776002 + ide0 15: 0 + ide1
この場合は、ISA-SCSI(wdt0)は IRQ 5 を使用しており、 これが PCI BIOS 側と競合していると考えられるので、 以下の手順により IRQ の競合を回避する。 現状では、ISA-SCSI ドライバ側のヘッダファイルを修正して 再コンパイルすることによりこの現象を回避している。
hostname:~# cd /usr/src/linux/drivers/char hostname:/usr/src/linux/drivers/char# vi wdconf.h'WD33C_IRQ' の値を競合しない値(この場合は 10 など)に変更して書き込む。(vi の使用方法については、ここを参照のこと)
hostname:~# cd ../.. hostname:/usr/src/linux# make zlilo hostname:/usr/src/linux# shutdown -r now
これによりLANボードも正しく認識され、 IRQ の使用状況は以下のようになるはずである。
hostname:~# cat /proc/interrupts
0: 120582762 timer 1: 503 keyboard 2: 0 cascade 5: 0 3c590 Vortex 10Mbps, 3c590 Vortex 10Mbps 10: 0 + wdt0 13: 1 math error 14: 776002 + ide0 15: 0 + ide1
これを確認するためには、以下のコマンドを実行する。
hostname:~# dmesg|grep wdt0正常に認識されていれば、以下のように出力される。
何らかのエラーメッセージが表示されている場合は、ボードの設定をチェックする。wdt0: wd33c_init(): IRQ:5 DMA:7 IO:0x308 TID:0 BUFSIZE:16384 Addr:0x1c????