#navi(FAQ) カテゴリー: ハードウェア対応

ネットワークカードのドライバにどれを選んだらいいのかわかりません.なにかいい方法はありませんか?

2005-03-21 10:07:31 (月)投稿
登録者: Plamodocs Project

複数のネットワークカードがある場合には対応していませんが,plamo の次期バージョン(おそらく 4.0)に実装する予定(未定であり,確定ではありません)のコードを紹介します.
※ 4,0x にはすでに実装されています.

このコードを実行すると自動的に適切な PCI バス接続のネットワークカードのドライバを選択してくれます.
※ 複数のカードに対応したスクリプトについては,plamo-ML の記事,[plamo:21865] を参照してください.

plamo をインストールした時点での kernel の場合,ネットワークカードのドライバ類は, 大概のものがモジュール(m)として組み込まれるか,カーネル組み込み(y)になっていますので, よほど特殊なカードを除いて,カーネルの再構築をしなくても認識されるはずです.
/boot/config の # Ethernet (10 or 100Mbit) 以下や,# Ethernet (1000 Mbit) 以下を確認してください. このコードは,ここで =m となっているドライバを検出します.

スクリプトの内容は以下の通りです. (次期バージョンに実装予定のものは,自動的にモジュールのロードまで行なうようになっていますが, ここでは,モジュール名を出力するところまでで終了しています.)

#!/bin/sh
vers=`uname -r`
v_id="0x0000"`/sbin/lspci -n | grep 0200 | gawk '{print $4}' | cut -f 1 -d ':' | head -1`
p_id="0x0000"`/sbin/lspci -n | grep 0200 | gawk '{print $4}' | cut -f 2 -d ':' | head -1`
mod=`grep $v_id /lib/modules/$vers/modules.pcimap | grep $p_id | head -1 | gawk '{print $1}'`
echo $mod

詳しい使い方については,内容的に サウンドの項 に書かれているのと同じですので,そちらを参考にしてください.
ここでは,便宜的にこのコードを netcard.sh に保存して実行,選択されたモジュール(この例では, 8139cp)をロードして,最後に /etc/rc.d/rc.modules か /etc/modules.confに設定するまでを説明します.

~$ /sbin/lspci

の出力をみて,Ethernet という言葉が含まれている行が,マシンに装着されているネットワークカードの情報です.

次のようにコードを保存したファイル netcard.sh に実行属性を付けて,実行します.

~$ chmod +x netcard.sh
~$ ./netcard.sh
8139cp
~$

検出されたドライバモジュール(8139cp)をロードします.

~$ su
Password:
~# /sbin/modprobe 8139cp

ロードされたか確認します.

~$ /sbin/lsmod

lsmod の出力に 8139cp があれば,間違いなくロードされています.( 4.0x では,/bin/lsmod です.)

plamo のインストール時に,適切にネットワークの設定を行なっていれば, この状態でネットワーク接続が可能になります.
ネットワークの設定を行なっていない場合は,root になって,/sbin/netconfig や,/sbin/ifconfig(こちらは上級者向け)コマンドを使って設定してください.

ネットーワークの設定が間違いなくできているのを確認するには, /sbin/ifconfig や,/bin/netstat -r コマンドを使ってみましょう.

~$ /sbin/ifconfig

ifconfig の出力に,次のような eth0(一枚目のネットワークカード) に関する情報があるか確認します.

eth0  Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
    inet addr:192.168.1.20 Bcast:192.168.1.255 Mask:255.255.255.0
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:6367 errors:0 dropped:0 overruns:0 frame:0
    TX packets:6295 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:100
    RX bytes:1602112 (1.5 Mb) TX bytes:1064269 (1.0 Mb)
    Interrupt:3 Base address:0xd400
~$ /bin/netstat -r

netstat -r の出力(Kernel IP routing table)をみて,次のような default の Destination,Gateway の指定,Flags の項目に UG と示されるものがあるか, Iface の項目に eth0 と示されているものがあるか,確認します.

Kernel IP routing table
Destination  Gateway    Genmask    Flags MSS Window  irtt Iface
192.168.1.0   *      255.255.255.0   U   40 0     0 eth0
127.0.0.0    *      255.0.0.0    U   40 0     0 lo
default   sv.hogefuga.jp  0.0.0.0     UG   40 0     0 eth0

ネットワーク接続が確認できたら,起動時にネットーワークドライバモジュールをロードするように設定しておきましょう.

起動時にモジュールをロードする設定の場合は,次のようにして,/etc/rc.d/rc.modules に書き込みます.

~$ su
Password:
~# echo '/sbin/modprobe 8139cp' >> /etc/rc.d/rc.modules
~# /sbin/depmod -a

先の過程で modprobe していますから,一度 rmmod でモジュールを外し, /etc/rc.d/rc.modules の設定を有効にします.

~# /sbin/rmmod 8139cp
~# /etc/rc.d/rc.modules restart

もう一つの方法である,eth0 を使用する時には kmod の機能によって,常にモジュール 8139cp をロードするように設定する場合も,一度 rmmod でモジュールを外し,/etc/modules.conf に次のように書き込み,depmod -a を実行して,/etc/modules.conf の設定を有効にします.

~$ su
Password:
~# /sbin/rmmod 8139cp
~# echo 'alias eth0 8139cp' >> /etc/modules.conf
~# /sbin/depmod -a

この件に関して追加情報などありましたら、以下にどうぞ;



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:40