!!!Corega PCIバス用NIC(CG-LAPCIGT)の認識 Corega製のLANカード(NIC)である「CG-LAPCIGT」は、ギガビットイーサで1000MBの通信をサポートしています。 これをLinux上(RedHat9)で認識させるためには、カーネルレベルでのコンパイルが必要です。 Coregaサイトでもインストール方法が書いてあるのですが、間違いが多いですので補足も含めてこちらに記述します。 !!カーネルソースでの構築 rpm -q kernel-source として、カーネルのソースがインストールされていることを確認します。 インストールされている場合は「/usr/src/linux-2.4」のディレクトリが存在するはずです。 ない場合はRedHat9のインストールCDより以下のように入れてます。 rpm -iv kernel-source-2.4.20-8.i386.rpm 次に必要な「config」ファイルをコピーします。 cp /usr/src/linux-2.4/configs/kernel-2.4.20-i586-smp.config /usr/src/linux-2.4/config なお、「kernel-2.4.20-i586-smp.config」についてはいろいろな種類があり、「i386/i586/i686」が存在します。これは、コンパイル時の最適化オプションですので、 Pentiumシリーズでしたら「i586」でとりあえずはOKです。 「-smp」というのがあるのとないのとがあります。これは「uname -r」として、 カーネルのバージョンを確認してつけるかつけないか判断してください。 では、関連ファイルをmakeします。 cd /usr/src/linux-2.4 make oldconfig dep !!ドライバのビルド 「http://www.corega.co.jp/product/os/source/pcigt.tar.gz」より ドライバソースをダウンロードします。これを「/tmp」に入れるとします。 cd /tmp tar xvfz pcigt.tar.gz cd pcigt/8169 ビルドのための「Makefile」の内容確認を行います。 vi Makefile 「NEW_INCLUDE_PATH」にて 「/usr/src/linux-2.4/include/」となっているのを確認(「linux-2.4」が変更されていない場合はOSのディレクトリにあわせてください)、 「version.h」の指定が「/usr/src/linux-2.4/include/linux/version.h」のように なっているのを確認(version.hがたしかにこの位置にあるかチェックしてください)。 普通はそのままで問題ないはずです。 「/tmp/pcigt/8169」の位置でドライバのビルドを行います。「make」のみ実行でOKです。 make 結果、「r8169.o」が生成されます。 !!ドライバを所定のディレクトリにコピー 実は、すでにRedHat9ではr8169のドライバは入っているのですが、Coregaの「CG-LAPCIGT」 は認識できません。ですので、これをバックアップして、先ほど生成した「r8169.o」 に入れ替えることにします。 cd /lib/modules/`uname -r`/kernel/drivers/net mv r8169.o r8169.org cp /tmp/pcigt/8169/r8169.o ./ 途中の「`uname -r`」は、カーネル名をディレクトリとして代入しています。 (RedHat9ではブート時に2つのバージョンを選択できるため。デフォルトは「2.4.20-8smp」となってます。つまり、「/lib/modules/2.4.20-8smp/kernel/drivers/net」とするのと同じことです) 使用するドライバはバージョンで別れています。 これで「/tmp/pcigt」内は不要ですので削除してかまいません。 !!ドライバを認識させる depmod -ae !!マシンを再起動 shutdown -r now !!設定を行う kudzu 「kudzu」と入力してください。 「kudzu」はLinuxでの設定ツールです(CUI上のユーティリティー)。 これは何かというと、「ハードウェア認識ユーティリティー」みたいなものです。 新しいハードウェアが追加された場合、これを使って検出し、ドライバを認識させます。 デフォルトではマシン起動時に立ち上がるようにはなっているのですが、 面倒ですので「ntsysv」で起動しないようにして必要なときに使うようにしたほうが いいかもしれません。 さて「r8169.o」に戻りますが、これをツール(kudzu)の説明にしたがって認識させます。 そのまま進めるとOKです。 この状態で「/etc/modules.conf」にて「alias eth1 r8169」みたいなのが 追加されています(「eth1」がLANカード(NIC)の識別名になります。2枚以上の場合は、「alias eth2 r8169」「alias eth3 r8169」みたいに追加するようにしてください)。 !!NICの認識を確認 「ifconfig」と入力したときに認識された場合は「eth1」みたいに情報が列挙されます。 列挙されると認識成功です。 !!同じNICを2枚以上挿す場合 同じメーカーの同じドライバを使用するNICを1台のサーバマシンに挿す場合、 製品・ドライバによっては「1枚目が認識しなくなった」となることがあります。 (現にこの「CG-LAPCIGT」でなりました。もしかしたら、1枚のNICがいかれていたのかも しれないですが・・・) ですので、できるだけ「安物ではない2枚ざし以上に対応したNICを買うこと」を 強くおすすめします(Intelのとか。高いのですが、それだけの安定性はあります)。