Corega PCIバス用NIC(CG-LAPCIGT)の認識
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のとか。高いのですが、それだけの安定性はあります)。
Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.