at posts/single.html

NICが認識しなくなった (2)

昨日 emerge -u world をやってからGentooマシンのNICが認識しなくなっていたけど、 さくっと復旧できた。 でも、NIC周りは最近さわっていなかったので、すっかりやり方を忘れていた。 どうせこれからも忘れちゃうだろうから、しっかりと日記に書いておこう。

まずは前提条件。 使用している NIC は、 CardBus タイプの LPC-CB-CLX。 CardBus は PCカード上で PCIデバイスとして認識される(このへんの理解は曖昧)。 そしてPCカードは、カーネルにモジュールとして組み込んだ pcmcia_cs が制御している。 さらに、hotplug サービスがNICを自動認識し、必要なドライバを組み込んでいる。 ちなみに、Linuxのカーネルは 2.6.3 を使っている。

さて、原因究明の開始。まずはPCカードとして見えているかどうかを確認する。

# cardctl ident
Socket 0:
  no product info available
Socket 1:
  product info: "Realtek", "Rtl8139"
  manfid: 0x0000, 0x024c
  function: 6 (network)

PCカードレベルでは、ちゃんと動作しているようだ。 次は CardBus 。これは lspci で確認する。

# lspci
0000:05:00.0 Ethernet controller: Realtek Semiconductor Co.,Ltd. RTL-8139/8139C/8139C+ (rev 10)

これも OK。 となると、原因は hotplug が NIC のドライバをロードできていないんじゃないか。ifconfig でも eth0 は見えないし、 lsmod でも NIC のドライバ (8139too) が見えない。 以前は、 /etc/hotplug/blacklist に 8139cp を登録することで認識されたんだけどね。 仕方ないので、手動で 8139too をロードする。 このやりかたも、すっかり忘れていたんだけど、「modprobe 8139too」とすればよい。

すると、見事に NIC が動作した。 何かの影響で、 hotplug が自動的に認識できなくなったんだろうなぁ。 毎回手動で認識させるのも面倒なので、Gentoo Linux on x86を参考にして、 /etc/modules.autoload.d/kernel-2.6 にドライバ名を記述しておいた。 難なく復旧できてよかった。

関連する日記