Last modified: May 24th, 2002
Table of Contents
Linux では, OS のインストール時にネットワーク接続の設定を行うことができます. また, インストール後であっても多くのネットワークドライバがモジュールとして組み込まれていますので大抵のカードは自動認識されます.
もし自動認識しなかった場合には手動で設定することになります. しかしドライバが無い場合は, 認識させることはほとんど不可能になってしまいます. なぜなら
Linux は, Windows などと違い専用のドライバが用意されているケースが少ないからです. ただし, 手持ちの NIC が認識されないからと言って諦めるのは早いかと思います.
NIC が認識されない原因はさまざまです. 究明するためにはひとつずつ確認していくしかないのですが, 例えばケーブルがはずれているとかハブの電源がはずれている,
壊れている, といった物理的な問題であることもありがちです. また設定が間違っていたために正常に動作しない, ソースコードを修正したら認識した, といったこともあり得ます.
この文書では NIC を認識させる事例をご紹介していきたいと思います.
まずは、ドライバモジュールが組み込まれているかどうかを次のコマンドで確認してみましょう.
このコマンドを実行することにより, 組み込まれているモジュールが確認できます. 例えば 「VIA Rhine」 のチップを使ってるカードであればここに
"via-rhine" が表示されればいいわけです.
このコマンドを実行して出力された内容に eth0 と書かれていれば認識自体はしています.
また次のコマンドを実行し, システム起動時に認識されているかどうかを確認できます.
続いて, ping を通してみます.
このように ping コマンドを実行してみます. IP アドレスなどは一例ですので自身の環境に置き換えて読んでください. この ping を Windows 上から実行するにはコマンドプロンプトから次のように実行してください.
Linux 上で, KTerm などの端末エミュレータなどから ping コマンドを実行した場合, 正常に通信できていれば下表のように返ってくるはずです.
|
# ping 192.168.1.64
PING 192.168.1.64 (192.168.1.64): 56 data bytes |
このように, ping が返ってくればネットワークの認識自体は出来ています. それでもネットワークに接続できないのであれば, あとは設定内容のいずれかが間違ってるかといったことになりますので, IPアドレス, NETMASK, NETADDRESS, BROADCAST, GATEWAY などの設定が間違っていないかどうか確かめてみてください.
また, DNS の名前解決が出来ていないこともあるかも知れませんので次のコマンドを実行して確認してみてください.
手持ちのカードがどのドライバを必要としているかが不明な場合には, NIC のメーカーの web サイトなどに情報が掲載されているかも知れません. 最近では多くのメーカーが
Linux での設定事例を公開されていますので確認してみる価値はあるかと思います.
|
コレガ OS 対応情報 (PC-UNUX) |
また次のサイトから最新の NIC ドライバをダウンロードできます.
NIC を自動認識できなかった場合, どのドライバモジュールが必要なのかがわかれば手動で組み込むことができます. この項ではその手順についてご説明します.
Linux には一体どのようなNIC ドライバが用意されているのでしょうか? これはカーネルバージョンや使用環境により異なってきます. これらはモジュール化された状態で
/lib/modules/2.x..x/net に置いてあります. もしも手持ちの NIC が自動認識できない場合にはどのドライバが必要なのかを確認 し,
以下の手順のように手動で設定することで認識されることがあります. そして例にあるように, 下表一覧のドライバを使用する NIC は他にも沢山あります.
例えば, ディストリビューションによっては rt8139.o と via-rhine.o, lance.o などのモジュールがはじめから用意されているもののインストール時に自動認識できないことがあります.
そのような場合に直接, 設定ファイルを編集し, 手動で組み込むことになるわけです.
○ サポートされている主なチップ(使用環境により異なります)
| チップ | ドライバ |
| 3COM 3c509 | 3c509 |
| 3COM 3c59x | 3c59x |
| 3COM 3c90x | 3c59x |
| 3COM 3c905 | 3c59x |
| 3COM 3c501 | 3c501 |
| 3COM 3c503 | 3c503 |
| 3COM 3c505 | 3c505 |
| 3COM 3c507 | 3c507 |
| 3COM 3c523 | 3c523 |
| 3COM 3c527 | 3c527 |
| ARCNet | arcnet |
| Allied Telesis AT1700 | at1700 |
| AMD LANCE | lance |
| AMD PCnet32 | pcnet32 |
| SMC Ultra | smc-ultra |
| SMC 9xxx | smc9194 |
| NI5010 | ni5010 |
| NI5210 | ni52 |
| NI6510 | ni65 |
| RealTek 8129/8139 | rtl8139 |
| Cabletron E21xx | e2100 |
| DEPCA | depca |
| EtherWorks3(DE203, DE204, DE205) | ewrk3 |
| Intel EtherExpress 16 | eexpress |
| Intel EtherExpressPro | eepro |
| Intel EtherExpressPro/100 | eepro100 |
| FMV-181/182/183/184 | fmv18x |
| HP PCLAN+ (27247B and 27252A) | hp-plus |
| HP PCLAN (27245 and 27x series) | hp |
| ICL EtherTeam 16i/32 | eth16i |
| NE2000 and Clones | ne |
| NE2 (ne2000 MCA Version) | ne2 |
| Ansel Communications EISA 3200 | ac3200 |
| DM9102 PCI Fast Ethenet Adapter | dmfe |
| Generic DEChip & DIGITAL EtherWORKS PCI/EISA | de4x5 |
| Mylex EISA LNE390A/B | lne390 |
| Novell/Eagle/Microdyne NE3200 EISA | ne3200 |
| NE2000 PCI and clones | ne2k-pci |
| Tl ThunderLAN | tlan |
| SiS 900/7016 PCI Fast Ethernet Adapter | sis900 |
| VIA Rhine | via-rhine |
| SMC EtherPower II | epic100 |
| Apricot Xen-II | apricot |
| CS89x | cs89x |
1. アイオーデータ ET100/PCI の認識例
設定ファイル /etc/conf.modules または /etc/modules.conf に次の1行を書き足す.
2. メルコ LGY-PCI-TXR の認識例
設定ファイル /etc/conf.modules または /etc/modules.conf に次の1行を書き足す.
設定ファイル /etc/conf.modules または /etc/modules.conf にこれらの設定を書き足したあと, 次のコマンドを実行します.
このようにすることでモジュールが組み込まれます.
もしも ISA のカードであれば次のように明示する必要があります(PCI の場合は不要です). この例ではモジュール ne.o を組み込むために書き足すものです.
モジュールが正常に組込まれたかどうかを確認するには次のコマンドを実行します.
ここでモジュールが表示されたなら次のコマンドを実行して network を再起動します. NIC が eth0 で認識されるものとします.
次に ifconfig で認識状況を確認します.
ここに eth0 が表示されれば正常に動作していることになります.
ここまでの手順を行っても正常に動作しない場合は, ドライバや設定以外に問題があるのかも知れません. 物理的な障害が発生していないのであれば, 例えば IRQ の値が間違っているのかも知れません. カードを装着するときに PCI スロットの差込位置によって IRQ が変化しますので差込位置を換えてみるのもいいでしょう. また, BIOS の設定で Plug & Play が有効になっていると正常に認識できないことがありますのでここを無効にしてみるのもひとつの方法です. また, ドライバのバージョンが古いと動作しないものがありますので, 最新のドライバにする必要があるかも知れません. ドライバのアップデートの手順は下記文書をご参照ください.
これら要因のいずれかが特定できて, 修正できたらさきほどの via-rhine と同じ手順で設定を反映します.
まず, network を停止します.
組み込まれているモジュールを削除します.
もう一度, モジュールを読み込みます.
network を起動します.
これで, 正常に動作するはずです.
前項に書いたとおり, NIC ドライバの中には最新のバージョンに差し替えることにより, 正常に動作することがあります. 例えば DEC21140 互換製品で,
Tulip 互換であるにもかかわらず動作しない, という話を聞きますがこのような場合は, 新しい Tulip ドライバに入れ替えることによって動作することがあります.
ここでは入手したドライバのソースを入手し, インストールする手順の一例をご紹介します.
最新ドライバの入手先:
Linux Network Drivers
ここでは, via-rhine ドライバのインストールを一例としてご紹介してみます. まず via-rhine.c と pci-scan.c を入手します. そして次のようにコンパイルします. このコンパイルオプションは via-rhine.c をエディタなどで開けば末尾に書かれていますので読んでおいた方がいいでしょう. また, 上記ドライバ入手先には他にも Redhat Linux 7 系バージョンでのコンパイル時の問題についての情報も書かれていますのでご確認下さい.
これでエラーが出なければ ".o" というオブジェクトファイルが作られます. そしてこれをインストールしますが, 古い via-rhine.o が残っている場合は次のようにバックアップしておきます.
次に新しく出来たドライバをインストールします.
上記の `uname -r` は, カーネルバージョンでも構いません. 例えば自身の環境のカーネルバージョンが 2.2.16-22 ならば 2.2.16-22 とすればいいのです.
以上, エラーが出なければドライバのインストールは成功ですので, 後はモジュールを組み込みます.
これを起動時に認識させましょう. そのためには /etc/modules.conf に以下のように書き足します.
次にネットワークを再起動します.
これで起動時に認識できるようになるはずです.
ところで, コンパイル時に以下のようなエラーが出ることがあります.
linux/version.h: No such file or directory
このような場合は, version.h を更新したら良いかもしれませんので次のように実行してみてください.
ちなみに, これらの作業を行うためには kernel-headers と kernel-source がインストールされている必要がありますので事前に確認しておきましょう.
尚, ここでは, via-rhine の例でしたが tulip ドライバの例もご参照ください.
2枚目の NIC の認識事例をご紹介します.
2枚目の NIC を手動で認識させる場合, 既に認識されている1枚目のカードが eth0 となっているのに対し, 下記のように eth1 として /etc/conf.modules ( または modules.conf ) に書き足します. この事例では1枚目のモジュールドライバが tulip で, 2枚目が via-rhine であるとします.
次にコマンドを実行してモジュールを読込みます.
次に, モジュールが正常に組込まれたかどうか確認します.
以上が完了したらネットワークの設定を行います. 設定後, network を再起動し, eth1 を起動させます.
または
以上の手順で2枚目の NIC が認識できるようになるはずです.
HOME