Realtek8169ドライバ設定方法

まずは、開発元であるRealtekダウンロードページから、最新のソースコードを落としてきます。
当然英語なので読む気が起きませんが、「8169」で検索すればすぐ見つかるでしょう。
ダウンロードしたZIPを解凍し、サーバに転送してmakeして終了・・かと思いきや、何故かコンパイル
失敗します。これまた調べてみると、ダウンロードしたソースコードは2.6系・2.4系両対応の書き方のため、
2.4系でコンパイルするときには以下の修正が必要とのこと

irqreturn_t   → irqreturn_t_R8169
IRQ_NONE   → IRQ_NONE_R8169
IRQ_HANDLED → IRQ_HANDLED_R8169

ソースコード中数カ所に出てくるので、WinやMacに落としてテキストエディタで一括置換した方が
楽かと思われます。また、肝心のジャンボフレームも、デフォルトでは無効化されていますので、
80行目を

#undef RTL8169_JUMBO_FRAME_SUPPORT

#define RTL8169_JUMBO_FRAME_SUPPORT

に書き換えておきましょう。
この修正ソースコードをダウンロードしたものと入れ替え、ソースコードのあるディレクトリで
makeコマンドを実行すると、「r8169.o」というファイルが出来上がります。
続いて、今作成したこの「r8169.o」を、VineLinux3.1デフォルトで入っているものと入れ替えます。
まず、OSデフォルトのモジュールで認識してしまっているNICを停止します。私の環境では、オンボード
LANがあって、今回のGigabitNICは二枚目なので、eth1になりますね。
その次に、元々のモジュールを停止します。

ifdown eth1
rmmod r8169

これで、NICは停止し古いモジュールもメモリ上からリムーブされています。
そして、いよいよモジュールの入れ替えです。Vine3.1標準では、モジュールは下記ディレクトリにあります。

/lib/modules/2.4.27-0vl7/kernel/drivers/net/

念のため、元々あるr8169.oは、「r8169_bak.o」などと名称変更をして残しておき、先ほどmakeした
新しいものを、上記ディレクトリにコピーします。
続いて、先ほどとは逆の手順で、新しいモジュールをロードし、NICを有効化します。

insmod r8169
ifup eth1

また、起動の度に手動でモジュールのロードをしなくて済むよう、「/etc/modules.conf」に、
「alias eth1 r8169」という一文を追加しておきましょう。
ここまでで、lsmodコマンドの実行結果に「r8169」が含まれており、引数無しの「ifconfig」コマンドで
eth1が認識されていれば成功です。
ちなみにこの状態では、NICを認識しただけでIPアドレス等は割り振られていません。
設定ファイルは以下の場所にあります。ウチは固定アドレスを割り振っているので、以下のようにしました。

cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NAME="イーサネット LAN カード"
PEERDNS=yes
IPADDR=192.168.1.2
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
NETWORK=192.168.1.0
GATEWAY=192.168.1.1

ifcfg-eth1を書き換えた後、ifdown・ifupを実行しeth1の設定変更を反映します。
これでようやく通信が出来るようになりました。念のため他の端末から、telnet等で192.168.1.2に
アクセスできることを確認するとベターです。
ちなみにVine3.1はデフォルトでtelnetは動作していませんので、試してみるならsshにしましょう。
最後の仕上げ、ジャンボフレーム対応でMTUを変更します。

例:ifconfig <インターフェイス名> mtu <設定したいMTU値>

ifconfig eth1 mtu 7000

私の購入したPLANEXのGN-1200TWでは、7,000バイトが最大値なので上記のような設定にしました。
以上で備忘録終わりです。長い日記だった・・