昨日のサーバ、メモリテストではエラーが出なかったので、LANカードを交換してみた。
まずは同じ型番のカードと交換したが改善せず。
ドライバファイルかカーネルの一部が破損したのを疑い、カーネルのリコンパイルとモジュールのリコンパイルをして入れ替えてみた。
それでも改善しないので他のチップを使ったカードと交換したところ、OSのブート時にドライバが読み込まれない。
insmodで手動で組み込むとまともに動作するが、起動時にドライバが読み込まれないと、起動の度に<コンソール>での操作が必要になり、遠隔地には置けない。
マザー自体を交換して(メモリも一緒に交換した)元のLANカードに戻したが最初と同じくパケットが飛ばない。
(ifconfigで見るとTXではエラーが無いが、RXでエラーが発生しているので、送信はしているが応答を受信できないみたい)
ということはハードウェアの問題では無いようだ。カーネルもドライバ(モジュール)もリコンパイルしているので、単なるファイルの破損でもなさそう。
ってことは何が悪いんだろうか?
このままでは埒が明かないので動作したLANカードを使うことにして、起動時にドライバを読み込ませる方法を探ったところ、/etc/conf.modulesでalias設定がされているのを発見。
元のカードのモジュール名が指定されているので、それを新しいカードのモジュール名に書き換えて再起動すると無事にドライバが読み込まれて動作するようになった。
なんとか復旧して使えるようになったが、元々の原因がはっきりしないのが気に食わない。一体何が起こっていたのか謎である。
ちなみにパケットが飛ばなくなったカードは3Comの3C905B、代わりに入れたのがRTL8139D搭載の安物カード。
ドライバは3c59x.oとrtl8139.o。