Linux Ethernet-Howto by Paul Gortmaker v2.7, 5 May 1999 The Linux Japanese FAQ Project v2.7j, 12 November 1999 この文書は Ethernet-HOWTO です。この文書は Linux で使用できるイーサ ネットデバイスやその設定方法に関する情報を集めたものです。この HOWTO 文書はイーサネットカードのハードウェアやハードウェア寄りのドライバを対 象にしており、ifconfig や route といったソフトウェア的な側面については 触れていません。これらについては Network HOWTO をご覧ください。 ______________________________________________________________________ 目次 1. はじめに 1.1 この文書の最新版 1.2 Ethernet-HOWTO を使う 1.3 助けてください、動きません! 2. Linux 用にはどのカードを買えばよいか 2.1 しっかりしているのはどのドライバですか 2.2 8 ビットカードか 16 ビットカードか 2.3 32 ビット (VLB/EISA/PCI) イーサネットカード 2.4 使用可能な 100Mbs カードとドライバ 2.5 100VG か 100BaseT か 2.6 どのタイプのケーブルが使えるカードを選べばよいか 3. FAQ (よくされる質問) 3.1 アルファ版ドライバ -- その入手と利用法 3.2 1台のマシンで複数のイーサネットカードを使うには 3.3 ether= ってやっても何もおきません。なんで? 3.4 NE1000 / NE2000 カード (およびクローン) の問題 3.5 SMC Ultra/EtherEZ と WD80*3 カードでの問題 3.6 3Com のカードの問題 3.7 特定のカードに関わらない FAQ 3.7.1 Linux と ISA Plug and Play イーサーカード 3.7.2 イーサカードが起動時に検出されない 3.7.3 ifconfig が、間違ったカード I/O アドレスを報告する 3.7.4 PCI マシンでカードは検出されるがドライバが探索に失敗する 3.7.5 PCI マシンで共有メモリの ISA カードが動作しない (0xffff) 3.7.6 送信はできるようだが受信がぜんぜんできない 3.7.7 Asynchronous Transfer Mode (ATM) のサポート 3.7.8 Gigabyte イーサネットのサポート 3.7.9 FDDI のサポート 3.7.10 Full Duplex のサポート 3.7.11 SMP マシンの Linux におけるイーサネットカード 3.7.12 Alpha/AXP PCI ボードの Linux でのイーサネットカード 3.7.13 SUN/Sparc ハードウェアの Linux におけるイーサネット 3.7.14 その他のハードウェアの Linux におけるイーサネット 3.7.15 ハブ無しで 10 BaseT 接続、 100 Base T 接続する 3.7.16 SIOCSIFxxx: No such device というメッセージが出る。 3.7.17 SIOCSFFLAGS: Try again というメッセージが出る。 3.7.18 `ifconfig' すると Link UNSPEC with HW-addrが00:00:00:00:00:00 というメッセージが出る。 3.7.19 大量の RX および TX エラー 3.7.20 イーサカードに対する /dev/ のエントリ 3.7.21 Linuxと``trailers'' 3.7.22 raw イーサネットデバイスへのアクセス 4. 性能を上げるためのヒント 4.1 概要 4.2 ISA カードと ISA バスのスピード 4.3 TCP 受信ウィンドウの設定 4.4 NFS性能の向上 5. ベンダー/メーカー/モデル固有の情報 5.1 3Com 5.1.1 3c501 5.1.2 EtherLink II, 3c503, 3c503/16 5.1.3 Etherlink Plus 3c505 5.1.4 Etherlink-16 3c507 5.1.5 Etherlink III, 3c509 / 3c509B 5.1.6 3c515 5.1.7 3c523 5.1.8 3c527 5.1.9 3c529 5.1.10 3c562 5.1.11 3c575 5.1.12 3c579 5.1.13 3c589 / 3c589B 5.1.14 3c590 / 3c595 5.1.15 3c592 / 3c597 5.1.16 3c900 / 3c905 / 3c905B 5.1.17 3c985 5.2 Accton 5.2.1 Accton MPX 5.2.2 Accton EN1203, EN1207, EtherDuo-PCI 5.2.3 Accton EN2209 Parallel Port Adaptor (EtherPocket) 5.2.4 Accton EN2212 PCMCIA Card 5.3 Allied Telesyn/Telesis 5.3.1 AT1500 5.3.2 AT1700 5.3.3 AT2450 5.3.4 AT2500 5.3.5 AT2540FX 5.4 AMD / Advanced Micro Devices 5.4.1 AMD LANCE (7990, 79C960/961/961A, PCnet-ISA) 5.4.2 AMD 79C965 (PCnet-32) 5.4.3 AMD 79C970/970A (PCnet-PCI) 5.4.4 AMD 79C971 (PCnet-FAST) 5.4.5 AMD 79C972 (PCnet-FAST+) 5.4.6 AMD 79C974 (PCnet-SCSI) 5.5 Ansel Communications 5.5.1 AC3200 EISA 5.6 Apricot 5.6.1 Apricot Xen-II On Board Ethernet 5.7 Arcnet 5.8 AT&T 5.8.1 AT&T T7231 (LanPACER+) 5.9 Boca Research 5.9.1 Boca BEN (ISA, VLB, PCI) 5.10 Cabletron 5.10.1 E10**, E10**-x, E20**, E20**-x 5.10.2 E2100 5.10.3 E22** 5.11 Cogent 5.11.1 EM100-ISA/EISA 5.11.2 Cogent eMASTER+, EM100-PCI, EM400, EM960, EM964 5.12 Compaq 5.12.1 Compaq Deskpro / Compaq XL (AMD のチップを組み込み) 5.12.2 Compaq Nettelligent/NetFlex (組み込みの ThunderLAN チップ) 5.13 Danpex 5.13.1 Danpex EN9400 5.14 D-Link 5.14.1 DE-100, DE-200, DE-220-T, DE-250 5.14.2 DE-520 5.14.3 DE-528 5.14.4 DE-530 5.14.5 DE-600 5.14.6 DE-620 5.14.7 DE-650 5.15 DFI 5.15.1 DFINET-300 and DFINET-400 5.16 Digital / DEC 5.16.1 DEPCA, DE100/1, DE200/1/2, DE210, DE422 5.16.2 Digital EtherWorks 3 (DE203, DE204, DE205) 5.16.3 DE425 EISA, DE434, DE435, DE500 5.16.4 DEC 21040, 21041, 2114x, Tulip 5.17 Farallon 5.17.1 Farallon Etherwave 5.18 富士通 5.18.1 Fujitsu FMV-181/182/183/184 5.19 Hewlett Packard 5.19.1 27245A 5.19.2 HP EtherTwist, PC Lan+ (27247, 27252A) 5.19.3 HP-J2405A 5.19.4 HP-Vectra オンボードイーサネット 5.19.5 HP 10/100 VG Any Lan Cards (27248B, J2573, J2577, J2585, J970, J973) 5.19.6 HP NetServer 10/100TX PCI (D5013A) 5.20 IBM / International Business Machines 5.20.1 IBM Thinkpad 300 5.20.2 IBM Credit Card Adaptor for Ethernet 5.20.3 IBM トークンリング 5.21 ICL 製イーサネットカード 5.21.1 ICL EtherTeam 16i/32 5.22 Intel 製のイーサネットカード 5.22.1 Ether Express 5.22.2 Ether Express PRO/10 5.22.3 Ether Express PRO/10 PCI (EISA) 5.22.4 Ether Express PRO 10/100B 5.23 Kingston 5.24 LinkSys 5.24.1 LinkSys Etherfast 10/100 カード 5.24.2 LinkSys Pocket Ethernet Adapter Plus (PEAEPP) 5.24.3 LinkSys PCMCIA アダプタ 5.25 Microdyne 5.25.1 Microdyne Exos 205T 5.26 Mylex 5.26.1 Mylex LNE390A, LNE390B 5.26.2 Mylex LNP101 5.26.3 Mylex LNP104 5.27 Novell Ethernet, NExxxx やその互換品 5.27.1 NE1000, NE2000 5.27.2 NE2000-PCI (RealTek/Winbond/Compex) 5.27.3 NE-10/100 5.27.4 NE1500, NE2100 5.27.5 NE/2 MCA 5.27.6 NE3200 5.27.7 NE3210 5.27.8 NE5500 5.28 Proteon 5.28.1 Proteon P1370-EA 5.28.2 Proteon P1670-EA 5.29 Pure Data 5.29.1 PDUC8028, PDI8023 5.30 Racal-Interlan 5.30.1 ES3210 5.30.2 NI5010 5.30.3 NI5210 5.30.4 NI6510 (EB ではありません) 5.30.5 EtherBlaster (別名 NI6510EB) 5.31 RealTek 5.31.1 RealTek RTL8002/8012 (AT-Lan-Tec) ポケットアダプタ 5.31.2 RealTek 8009 5.31.3 RealTek 8019 5.31.4 RealTek 8029 5.31.5 RealTek 8129/8139 5.32 Sager 5.32.1 Sager NP943 5.33 Schneider & Koch 5.33.1 SK G16 5.34 SEEQ 5.34.1 SEEQ 8005 5.35 SMC (Standard Microsystems Corp.) 5.35.1 WD8003, SMC Elite 5.35.2 WD8013, SMC Elite16 5.35.3 SMC Elite Ultra 5.35.4 SMC Elite Ultra32 EISA 5.35.5 SMC EtherEZ (8416) 5.35.6 SMC EtherPower PCI (8432) 5.35.7 SMC EtherPower II PCI (9432) 5.35.8 SMC 3008 5.35.9 SMC 3016 5.35.10 SMC-9000 / SMC 91c92/4 5.35.11 SMC 91c100 5.36 Texas Instruments 5.36.1 ThunderLAN 5.37 Thomas Conrad 5.37.1 Thomas Conrad TC-5048 5.38 VIA 5.38.1 VIA 86C926 Amazon 5.38.2 VIA 86C100A Rhine II (and 3043 Rhine I) 5.39 Western Digital 5.40 Winbond 5.40.1 Winbond 89c840 5.40.2 Winbond 89c940 5.41 Xircom 5.41.1 Xircom PE1, PE2, PE3-10B* 5.41.2 Xircom 製の PCMCIA カード 5.42 Zenith 5.42.1 Z-Note 5.43 Znyx 5.43.1 Znyx ZX342 (DEC 21040 based) 5.44 未知のカードの識別 5.44.1 ネットワークインタフェースコントローラの識別 5.44.2 イーサネットアドレスの識別 5.44.3 未知のカードを使う時のテクニック 6. ケーブル、同軸、ツイストペア 6.1 シンイーサネット(シンネット) 6.2 ツイストペア 6.3 シックイーサネット 7. ソフトウェアによる設定とカードの診断 7.1 各イーサネットカードの設定プログラム 7.1.1 WD80x3 カード 7.1.2 Digital / DEC カード 7.1.3 NE2000+ または AT/LANTIC カード 7.1.4 3Com カード 7.2 各種イーサネットカードの診断プログラム 8. 技術情報 8.1 プログラムド I/O 対 共有メモリ 対 DMA 8.1.1 プログラムド I/O (NE2000, 3c509 等) 8.1.2 共有メモリ(WD80x3, SMC-Ultra, 3c503 等) 8.1.3 スレーブ(普通)の直接メモリアクセス(Linux で使えるカードはありません!) 8.1.4 バスマスタ直接メモリアクセス(LANCE, DEC 21040 等) 8.2 ドライバを書く 8.3 カーネルへのドライバインタフェース 8.3.1 自動検出 8.3.2 割り込みハンドラ 8.3.3 転送関数 8.3.4 受信関数 8.3.5 オープン関数 8.3.6 クローズ関数 (省略可能) 8.3.7 その他の関数 8.4 3Com からの技術情報 8.5 AMD PCnet / LANCE ベースのカードに関する注意 8.6 マルチキャストと無差別モード 8.7 バークレーパケットフィルタ (BPF) 9. ラップトップ/ノートブックコンピュータでのネットワーク 9.1 SLIP 9.2 PCMCIA のサポート 9.3 ドッキングステーションの ISA イーサカード 9.4 ポケット/パラレルポートのアダプタ 10. その他 10.1 カーネルにイーサネット関連引数を渡す方法 10.1.1 ether コマンド 10.1.2 reserve コマンド 10.2 イーサネットドライバをモジュールとして用いる場合 10.3 関連文献 10.4 免責条項・著作権 10.5 結び 10.6 日本語訳について ______________________________________________________________________ 1. はじめに Ethernet-HOWTO は、ぜひ買うべきカードや買ってはいけないカード、カード の設定方法、複数のカードを動かす方法、その他よくある問題と質問について 書かれています。よく利用されているほとんど全てのイーサネットカードのサ ポートの現状についての詳細な情報を含んでいます。 ソフトウェアに関することは NET-3 HOWTO に書かれているのでこの文書には 含まれていません。イーサネットカードについての Linux に関係しない一般 的な質問(あるいは少なくともそのような質問)についてはこの文書では触れて いません。このような質問については、comp.dcom.lans.ethernet FAQ にある よくまとまったたくさんの情報を見てください。別のニュースグループの FAQ 類と同じく、rtfm.mit.edu から FTP で入手できます。 この文書の現時点での改訂版は 2.2.7 を含むカーネルのディストリビュー ションについて触れています。 Ethernet-HOWTO は、 Paul Gortmaker, p_gortmaker@yahoo.com が書きました。 Ethernet-HOWTO の最初の ASCII のみの版についての主な情報は Donald J. Becker, becker@cesdis.gsfc.nasa.gov によるものでした。 彼らが、現在 Linux で利用できる多くのイーサネットカードのドライバを書 いたことに感謝しましょう。彼はまた最初の NFS サーバの作者でもありま す。 Donald に感謝。 (この部分は原文も掲載します。) This document is Copyright (c) 1993-1999 by Paul Gortmaker. Please see the Disclaimer and Copying information at the end of this document (``copyright'') for information about redistribution of this document and the usual `we are not responsible for what you manage to break...' type legal stuff. この文書は Paul Gortmaker に 著作権 Copyright(c) 1993-1999 がありま す。この文書の末尾(``copyright'')で、この文書を再配布する場合の注意、 免責条項と著作権についてのお知らせを読んでください。それからお決まりの 「あなたがやってしまったこと全てに私たちは責任がない云々」の法律条項に も目を通してください。 1.1. この文書の最新版 この文書の最新版は Ethernet-HOWTO で入手することが できます。 または、FTP を使いたい場合や HTML フォーマットでないものは、 Sunsite HOWTO Archive で 入手することができます。 上記はオフィシャルなサイトです。あちこちの Linux の WWW や ftp のミラ ーサイトにもあります。この文書は、新しい情報やドライバが利用できるよう になったときに更新されます。あなたが今読んでおられるコピーが半年以上も 前のものなら、更新されたものが利用できるかどうかを調べてください。 この文書はさまざまなフォーマットで利用できます(postscript、 dvi、 ASCII、HTML などです)。( WWW ブラウザを使って) HTML で、あるいは Postscript や dvi フォーマットを使って見ることをお勧めします。これらの 文書には、 ASCII テキストフォーマットには含まれないクロスリファレンス 情報を含んでいます。 1.2. Ethernet-HOWTO を使う このガイドはとてもたくさんの分量になってきているので、全文を読むのに午 後の時間を使ってしまいたくはないでしょう。こつは全部を読まないことで す。 HTML と Postscript や dvi のようなファイルには、より速く必要なこ とを探せるように目次がついています。 あなたはカードを動かすことができない、そこで何をチェックしたらよいのか がわからないので、この文書を読んでいるのでしょう。次の章(``助けてくだ さい、動きません!'' は Linux の初心者を対象にしていますから、適切な指 示があるでしょう。 一般的な同じような問題や質問は、さまざまな人によって繰り返し尋ねられて います。あなた独自の問題や質問も、たぶんよく尋ねられた質問(FAQ)のひと つであり、この文書の FAQ の項で答えられています (``FAQ のセクショ ン'')。助けてと投稿する前にこの章に目を通すべきです。 イーサネットカードを購入したことがないなら、カードを決めるところから始 めればよいでしょう(``Linux 用にはどのカードを買えばよいか'')。 すでにイーサネットカードを購入したけれど、Linux で使えるかどうかわから ない、そのような場合はそれぞれのメーカー製のカード固有の情報が書かれた 章から始めたらよいでしょう。 (``ベンダー/メーカー/モデル固有の情報'') Linux デバイスドライバの技術面に興味があるなら、このような情報がある章 に目を通してもよいでしょう。 (``技術情報'') 1.3. 助けてください、動きません! 分かりましたから落ち着いてください。この節は、イーサネットを動かすため の手順をご案内します。たとえあなたが Linux やイーサネットハードウェア について経験がなくても。 最初にしなければならないことは、お使いのカードのモデルを明らかにするこ とです。そうすれば Linux がそのカードのドライバを持っているかどうかが はっきりします。カードが違えば普通、ホストコンピュータから制御する方法 も違います。Linux のドライバ(もしあったとして)は、ある形式でこの制御情 報を持っており、Linux がカードを使えるようにします。あなたがカードのマ ニュアルを持っていない、あるいはそのカードのモデルについての情報が何も ないなら、不明なカードを何とかするための方法についての章を試してくださ い(``未知のカードの識別'')。 お持ちのカードがどんな種類かわかったら、固有のカードの章 (``ベンダ ー/メーカー/モデル固有の情報''を参照) で、そのカードについての詳しい説 明を全部読んでください。Linux のドライバの有無に関わらず、カードメーカ ーとそれぞれの型番をアルファベット順でリストしています。「未サポート」 と書かれているなら、ここであきらめるのがよいでしょう。もしそのリストに あなたのカードが載っていないなら、カードのマニュアルを見て、そのカード が別の既知の種類のカードの「互換カード」として載っているどうかを確かめ ましょう。例えば、オリジナルの Novell NE2000 の設計と互換になるように 作られたカードは、数千とまではいかなくとも数百種類はあります。 お持ちのカードについて Linux ドライバがあるのがわかったなら、そのドラ イバを探して使いましょう。Linux にあなたのカードのドライバが入っている からといって、全てがカーネルに組み込まれているわけではありません。 (カ ーネルは起動時に最初にロードされる、オペレーティングシステムの中心であ り、他のものと共に各種ハードウェア用のドライバを持っています)。お使い になっているそれぞれの Linux ディストリビューションの作成者によって は、予め組み込まれたカーネルが少ししかなく、ドライバ自体は細かいモジュ ールとしてたくさんに分けられているかもしれませんし、あるいはカーネルが たくさん用意してあって、組み込んであるドライバの組合せをたくさんにして いるかもしれません。 大部分の Linux ディストリビューションは、さまざまなドライバを小さなモ ジュールの集合として持っています。通常は、必要なモジュールは起動プロセ スの後半でロードされるか、特定のデバイスにアクセスする必要があるときに 動的にロードされます。モジュールをインストールして使うことについては、 この文書のモジュールの章に加えてお使いのディストリビューションに添付の 情報を見てください。 (``イーサネットドライバをモジュールとして用いる場 合'') お使いのカードのドライバをあらかじめ組み込んで構築されているカーネル、 またはそのドライバのモジュールも見つからないならば、一般的には珍しいカ ードを持っているということです。Linux を一度インストールしてしまえば、 自分用のカーネルを構築するのはそれほど難しいことではありません。基本的 にはカーネルに組み込みたいものを yes または no で答え、それからカーネ ルを構築します。Kernel-HOWTO が参考になります。 今の時点では、ドライバを組み込んだカーネルでなんとか起動させるか、ある いはドライバが何とかしてモジュールとしてロードされるようにしなければな りません。遭遇する問題の半分ぐらいは、何らかの理由でドライバがロードで きなかったということに関わるものなので、ドライバが見つかればうまく動く ようになるでしょう。 まだカードが動かないなら、カーネルがそのカードをちゃんと認識しているか どうかを確かめる必要があります。確認するには、システムが起動して全ての モジュールがロードされた後で、dmesg | more というコマンドを入力しま す。このコマンドは、起動プロセスの間にカーネルが画面表示したメッセージ を表示してくれます。カードが認識されているなら、カードのドライバが出力 するメッセージがリストのどこかに見つかるでしょう。このメッセージは eth0 で始まり、ドライバ名とカードに設定されているハードウェアのパラメ ータ(割り込みの設定や、I/O ポートのアドレスなど)が書かれています。 (注 意: 起動時に、Linux は利用できるドライバの有無に関わらず、システムにイ ンストールされている全ての PCI カードをリストします。あとで出てくるド ライバ認識とこのことを間違ってはいけません!) このようなドライバ識別のメッセージが見つからなければ、ドライバはお使い のカードを認識していないということで、これがうまく動かない理由です。お 使いのカードを認識しない場合にどうすればよいかについては FAQ を見てく ださい(``FAQ の章'')。 NE2000 互換のカードをお使いであれば、カードを認 識させるための NE2000 固有の技は FAQ の章にも書かれています。 カードは認識されているが、検出メッセージがリソース衝突のようなエラーを 表示していることもあります。そのような場合、ドライバは適切に初期化され ておらず、カードもまだ使えないでしょう。この種のエラーのほとんどは、解 決方法も含めて FAQ の章に書いてあります。 検出メッセージは正常に見えても、ドライバが報告するカードのリソースと、 (カード上のジャンパや、製造業者が提供しているユーティリティによって) カードに物理的に設定されているリソースを重ねてチェックしましょう。これ らは正確に一致していなければなりません。例えば、ジャンパで IRQ 15 に設 定してあるのに、ドライバが起動時メッセージで IRQ 10 を報告しているな ら、カードは動きません。FAQ の章に書かれている説明の大部分は、各種カー ドの設定情報をドライバが正しく検出できない問題についてです。 ここでは、何とかして全て正しいパラメータで検出できるようにしていれば、 全てうまく動作すると思います。そうでないなら、ソフトウェアの設定エラー あるいはハードウェアの設定エラーでしょう。ソフトウェアの設定エラーは ifconfig と route コマンドに対して正しいネットワークアドレスが設定され ていないことで、どうすべきかについての詳しい説明は、Network HOWTO や 「Network Administrator's Guide」に書かれています。これらの文書は多 分、インストールに使った CD-ROM に入っています。 ハードウェアの設定エラーとは、リソースの衝突や間違った設定(のうち、起 動時にドライバが検出しなかったもの)のためにカードを正しく動作しない場 合のことです。普通、これを見つける方法はいくつかあります。 (1) ifconfig が使用するためにデバイスをオープンしようとする時、 ``SIOCSFFLAGS: Try again'' のようなエラーメッセージが出ます。 (2) ドラ イバが eth0 エラーメッセージを出す(dmesg | more で見てください)、ある いはデータを送ったり、受けたりしようとする度におかしな矛盾が起こる。 (3) cat /proc/net/dev と入力すると、eth0 の errs, drop, fifo, carrier のカラムのいずれかに 0 ではない数字を表示される。 (4) cat /proc/interrupts と入力すると、そのカードの割り込みカウントとして 0 が 表示される。一般的なハードウェア設定エラーのほとんどは FAQ の章にも書 かれています。 ここまで読み進めてきてもまだ動かないなら、この文書の FAQ の章と、特定 のカードについて詳しく書いてあるベンダー固有の章を読んでください。そし て、それでもまだ動かないなら、助言を得るために適切なニュースグループに 投稿して報告するのもよいでしょう。もし投稿するなら、関連情報は全て投稿 記事に書きましょう。これにはカードのメーカー名、カーネルのバージョン、 ドライバの起動メッセージ、 cat /proc/net/dev の出力、問題についての整 理した記述、そしてもちろんカードを動かすためにあなたが既に試したことに ついて詳しく書いてください。 「誰か助けてください。イーサネットカードが動きません」というような役に たたないことを投稿する人がとても多いのにびっくりするでしょう。ニュース グループの読者はそのようなお馬鹿な投稿は無視してしまいますが、細かく観 察した情報のある問題の記述であるなら Linux の達人たちはあなたがぶつ かっている問題にきちんと注目するでしょう。 2. Linux 用にはどのカードを買えばよいか この質問に対する答えは、ネットワーク接続を利用して何をしたいかによって 実にさまざまです。またどの程度のトラフィック量を予想しているかによって も答えは異なってきます。 時たま ftp や WWW を利用する個人ユーザなら、おそらく旧式の 8 ビットの ISA カードでも十分でしょう。 サーバの立ち上げを考えており、送受信するネットワークデータが CPU に与 えるオーバーヘッドを最小限に抑えようとするなら、バスマスタリング機能を 備えたチップ(DEC tulip (21xxx) チップや AMD PCnet-PCI チップ等)を搭載 した PCI カードが必要になるでしょう。 上に示した例の中間ぐらいという場合には、廉価な PCI カードかしっかりし たドライバがある 16 ビットの ISA カードを選べばよいでしょう。 2.1. しっかりしているのはどのドライバですか 16 ビット ISA カードなら、 SMC-Ultra/EtherEZ, SMC-Elite (WD80x3), 3c509, Lance, NE2000. 用のドライバが十分枯れています。このドライバを使うカードを買えば万事問 題ないはずです。 だからといって、これ以外のドライバがしっかりしていないというわけではあ りません。ただ、上記のドライバはもっとも歴史が古く、Linux 用ドライバの 中でも一番よく使い込まれています。というわけで、このドライバを選ぶのが もっとも無難なのです。 el-cheapo 製マザーボードの中には、ISA Lance カードのバスマスタリングと 相性が悪いものがあるので注意が必要です。また同社製 NE2000 クローンカー ドの一部には、ブート時にうまく認識されないものがあるので注意してくださ い。 Linux 用の PCI ドライバとして一番良く利用されているのは、3Com Vortex/Boomerang (3c59x/3c9xx), DEC tulip (21xxx), Intel EtherExpressPro 100 の各ドライバでしょう。PCI-NE2000 クローンカード類 はどこにでも転がっていますが、高性能の新型カードよりもとにかく一番安い ものを手に入れるのが重要という場合でもなければ、これを買うのはお勧めで きません。 2.2. 8 ビットカードか 16 ビットカードか 8 ビット ISA イーサネットカードの新品を買うのはもう無理でしょう。でも コンピュータの中古部品交換会にでも行けば、この種のカードはいくらでも転 がっています。 Linux 用としてはあと数年は使えるでしょう。値段も激安で す。PCI カードが普及するようになった今では、 16 ビット ISA カードにも 同じことが当てはまるようになりました。 普通の使い方をするなら、wd8003, 3c503, ne1000 といった8 ビットカードで も十分な性能が得られます。3c501 は性能面で見劣りがします。12 年も前の XT 時代の遺物とでもいうべきこのカードは避けておくのが得策です(Alan は これを収集しているので、送ってやってください)。 遠隔ホストから 高速 ISA バスに差した wd8003 カードを使って500 -- 800kB/s 程度の速度で ftp のダウンロードができればいいというのなら、 デ ータパスの幅が 8 ビットでも問題はありません。ネットワークトラフィック の大部分が遠隔サイトとの通信という場合には、データパスの幅以外の要素が 速度を規定する要因となります。8 ビット カードと 16 ビットカードの速度 差に気がつくのは、ローカルのサブネットを利用する時だけでしょう。 2.3. 32 ビット (VLB/EISA/PCI) イーサネットカード 通常 10Mbps のネットワークには 32 ビットのインタフェースが必要ないこと に注意してください。10Mbps のイーサネットカードを 8MHz の ISA バスで使 用してもそれがもとで性能が落ちたりしないのはどうしてか、という点につい ては ``プログラムド I/O 対 共有メモリ 対 DMA'' をお読みください。イー サネットカードを高速バスに挿しても、転送速度が速くなるとは限らないので す。CPU のオーバーヘッドが小さくなることは多いでしょう。マルチユーザシ ステムならこの利点が効いてきます。 最近一般的になってきた 100Mbps ネットワークの場合には、32 ビットインタ フェースを使用してバンド幅をフルに活用することが必要となります。 AMD は 32 ビットの PCnet-VLB チップと PCnet-PCI チップを提供しています。 32 ビット版の LANCE / PCnet-ISA チップについては、 ``AMD PCnet-32'' を ご覧ください。 パワーユーザの方には DEC 21xxx PCI `tulip' チップという別の選択肢もあ ります(``DEC 21040''をお読みください) 。このチップを搭載したカードを 作っているメーカーはたくさんあります。ノーブランド製のカードはたいてい 激安です。 3Com の `Vortex' や `Boomerang' PCI カードを選ぶという方法もあります。 キャンペーンセール中なら、極めて安価で入手できます。(``3c590/3c595''を ご覧ください。) Intel の EtherExpress Pro 10/100 PCI カードも Linux との相性がいいとの ことです(``EtherExpress''をご覧ください)。 RealTek や Winbond チップを搭載した PCI NE2000 クローンカードを作り始 めるメーカーも多くなってきました。2.0.31 以降のカーネル用の Linux ne2000 ドライバならこの類のカードをも使えます。とはいっても、この時代 物の ne2000 ドライバインタフェースを使い続けているのでは、この類のカー ドを使ってもバスインタフェース速度が上昇したという利点しかありません。 2.0.34 以降、この種のPCI カード専用のドライバが別に提供されるようにな りました。ne2k-pci.c というのがそれで、ISA 用のドライバ ne.c よりも性 能がわずかながら向上しています。 2.4. 使用可能な 100Mbs カードとドライバ 使用できる 100Mbs カードは今のところ以下の通りとなっています。 DEC 21140 チップを搭載した各種カード; 3c595/3c90x Vortex カード; EtherExpressPro10/100B; PCnet-FAST; SMC 83c170 (epic100) HP 100VG ANY-LAN. 本文書には各メーカーごとに固有な情報を紹介する部分もありますので、そこ にも目を通してください。また、以下の場所をチェックしておくのもよいで しょう。 Linux と100Mbs イーサネット Donald の 100VG についてのページ Dan Kegel の Fast Ethernet についてのページ 2.5. 100VG か 100BaseT か 100BaseT は 100VG よりもはるかに主流になっています。Donald が comp.os.linux に投稿した自薦の文章はかなり古いものですが、100BaseT の 優位性を簡潔にまとめたものとなっています。 曰く、「事情を御存じない方のために。100Mbs イーサネットの世界では 100VG (別名: 100baseVG, 100VG-AnyLAN)と100BaseT (100baseTx, 100baseT4,100baseFX タイプのケーブルを使用するもの)という二つの規格が 競合しています。 先に市場に登場したのは 100VG の方でした。100baseTx よりも技術的に優れ ているような感じがします。こちらの規格が勝ち残るようにいろいろ応援しま したが、結果はどうみても思わしくないものでした。HP その他の各社が以下 に掲げるような選択ミスを犯したからです。 1) 規格化に手間取った: その結果として、IBM に迎合してトークンリングフ レームをサポートするようになってしまったのです。これも、その当時には優 れたアイディアに思えたものです。というのもこうしておけば、「トークンリ ングという間違った技術に手を出したが、これはたいへん高いものについた」 といって失敗を認めることなく、トークンリングショップをイーサネットに格 上げできるからです。ところがトークンリングとイーサネットという二つのフ レームは同一ネットワーク上で共存できないので、トークンリングフレームを サポートするようにしても何の役にも立たなかったのです。トークンリングは 複雑で取り扱いにくいものでした。そのうえ IBM も 100baseT の方に走って しまったのです。 2) ISA, EISA カードしか生産しなかった: PCI モデルの発売予告はつい最近 になってからのことでした。100mbs に ISA バスは遅すぎます。また、EISA バスを備えた機械はほとんど普及していません。当時は安価で高速な VLB が 一般的で、 PCI バスがもう一つの選択肢として並立しているという時代でし た。それにも関わらず、「サーバ用には、ずっと高価な EISA バスが生き残 る」という格言がまかり通っていたのです。 3) 私宛てにデータブックを送ってこなかった: これこそが 100VG が敗退した 本当の理由です :-)。 プログラミングに必要な情報を求めて四方八方に電話 をかけまくりましたが、手に入ったのは AT&T がつくったわずか数ページの色 刷りの用語集だけでした。これは、 Regatta チップセットがいかにすばらし いかを書き連ねたものでした」 2.6. どのタイプのケーブルが使えるカードを選べばよいか 小規模の個人的ネットワークを立ち上げようという場合には、シンネットケー ブルかシンイーサネットケーブルを使うことになるでしょう。この種のケーブ ルは標準の BNC コネクタを備えたタイプのものです。BNC コネクタ(金属製で 回して固定するもの)を備えたシンネットケーブルやシンイーサネットケーブ ル(RG-58 同軸ケーブル)のことを専門的には 10Base2 と呼んでいます。 たいていのイーサカードの場合には、10 -- 20 ドルも足してやればいわゆる 「コンボカード」というものが手に入ります。これはツイストペアとシンネッ トトランシーバの両方を備えているので、あとから気が変わってもだいじょう ぶというわけです。 RJ-45 コネクタ(大型の電話コネクタのようなもの)を備えたツイストペアケー ブルのことを専門的には 10BaseT と呼んでいます。 UTP (非被覆ツイストペ ア)という言葉を耳にされたこともあるでしょう。 昔ながらの太いイーサネット(10 ミリ同軸ケーブル)には、古い機械でしかお 目にかかれません。10Base5 と呼んでいるのがこのケーブルです。15 ピンの D 型プラグ(AUI コネクタ)を備えたイーサネットカードがありますが、このコ ネクタは太いイーサネットと外付けトランシーバを接続する際に使用するもの です。 大企業では 10Base2 の代わりに 10BaseT を利用するところが多いでしょう。 10Base2 から他の 10Base ケーブルにアップグレードする方法がないからで す。 種類の違うイーサネットケーブルを接続する場合のことについては、 ``ケー ブル、同軸、ツイストペア'' の節をご覧ください。 3. FAQ (よくされる質問) Linux をイーサネット接続で使うことに関連した質問のうち、よく聞くものを 集めました。カードに固有な質問については、「メーカー別に」分けました。 あなたの知りたい問題は、きっと他の誰かによって質問されている (そして答 えられている!) ことが多いでしょうから、もしここに知りたい答えがなくて も、 Dejanews . のようなニュースアーカイブな ら見付かるかもしれません。 3.1. アルファ版ドライバ -- その入手と利用法 わたしのカード用の最新版ドライバや、試験的なアルファ版ドライバが入手で きると聞きました。どこにありますか? 「新しい」ドライバの最新版は、Donaldの ftp サイト cesdis.gsfc.nasa.gov の /pub/linux にあります。ここにあるものは頻繁に変化していますから、探 し回ってみてください。あるいは WWW ブラウザで以下を訪ねるほうが、お探 しのドライバを見つけるには楽かもしれません。 Don's Linux Home Page WWW ブラウザはソースを勝手に変更して (例えばタブをスペースにしちゃった りとか) ダメにしちゃうことがあるので注意しましょう。 ftp を使うか、あ るいはよくわからなければ、少なくともダウンロードには FTP URL を使って ください。 さて、そのドライバが本当にアルファ版 (あるいはプレアルファ版) なら、そ れなりの取扱いをしてください。つまり、解決できないことやわからないこと があっても、文句を言わないこと。インストールのやり方がわからないのな ら、プレアルファドライバのテストをすべきではありません。またこのドライ バのせいでマシンがダウンしても、文句を言わないでください。文句の代わり に詳細なバグリポートをお送りください。もっといいのはパッチですけど! 「使える」実験的なドライバ、アルファドライバのうちのいくつかは、標準の カーネルソースツリーにも含まれるようになっています。 make config を実 行すると、最初のほうで ``Prompt for development and/or incomplete code/drivers'' という質問をされるはずです。アルファ/実験的ドライバに関 する選択肢を出したいときには、ここで `Y' と答えてください。 3.2. 1台のマシンで複数のイーサネットカードを使うには Linuxで2つのイーサネットカードを動かすにはどうすればいいの? この質問に対する答えは、ドライバをローダブルモジュールとして使っている か、あるいはカーネルに直接組み込んでいるかによって異なります。ほとんど の Linux ディストリビューションは、現在ではモジュール化ドライバを使っ ています。ドライバの組み合わせだけが異なるたくさんのカーネルを配布しな いですむからです。一つのベースとなるカーネルを使い、それぞれのユーザの システムで必要とされる個別のドライバは、システムがブートしてドライバモ ジュールファイル (通常 /lib/modules/ におかれます) がアクセス可能に なってからロードされるようになっているのです。 ドライバがモジュールのとき: PCI ドライバの場合は、モジュールはインスト ールされているカードを全て自動的に検知するはずです (もちろん対応するカ ードを、ですが)。しかし ISA のカードでは、カードの探索 (probe) は危険 な作業なので、カードの I/O ベースアドレスを与えて、モジュールにどこを 探せばよいかを教えてあげる必要があるでしょう。この情報は /etc/conf.modules ファイルに保存されます。 例として、二枚の ISA NE2000 カードがある場合を考えましょう。一つは 0x300 に、もう一つは 0x240 とします。この場合は /etc/conf.modules ファ イルには以下のような行を指定することになるでしょう。 alias eth0 ne alias eth1 ne options ne io=0x240,0x300 説明: ここで指定されていることは以下の通りです: 管理者 (あるいはカーネ ル) が modprobe eth0 あるいは modprobe eth1 を実行すると、 ne.o ドライ バが eth0, eth1 それぞれに対してロードされます。さらに ne.o モジュール がロードされるとき、 io=0x240,0x300 というオプションが与えられるので、 ドライバはカードを探す場所がわかるようになります。 0x が重要です。 DOS の世界でよく使われる 300h というような表記は動作しません。 0x240 と 0x300 の順序をかえれば、物理的なカード二枚に対する eth0, eth1 の関係を 逆にすることができます。 ほとんどの ISA モジュールドライバでは、複数のカードを扱えるよう、この 例のように複数の I/O の値をコンマで区切って与えることができます。しか し 3c501.o モジュールのように (古い?) ドライバでは、モジュールのロード あたり一つのカードしか使えないこともあります。このような場合に両方のカ ードを検知するためには、モジュールを二回ロードする必要があります。 /etc/conf.modules は以下のようになるでしょう。 alias eth0 3c501 alias eth1 3c501 options eth0 -o 3c501-0 io=0x280 irq=5 options eth1 -o 3c501-1 io=0x300 irq=7 この例では -o オプションを用いて、それぞれロードされたモジュールインス タンスに一意な名前をつけています。二つのモジュールを同じ名前で同時にロ ードすることはできないからです。 irq= オプションも、カードのハードウェ ア IRQ 設定を指定するために用いられています。 (この方法を、複数 I/O 値 のコンマ区切り指定を許すカードに用いることもできますが、効率が悪いで す。なぜなら必要のない場合でもモジュールが二回ロードされることになるか らです。) 最後の例として、 0x350 にある 3c503 カードと 0x280 にある SMC Elite16 カード (wd8013) を同時に使う場合を示します。以下のようになります: alias eth0 wd alias eth1 3c503 options wd io=0x280 options 3c503 io=0x350 PCI のカードに対しては、通常は alias 行で ethN インタフェースと対応す るドライバを指定するだけでいいはずです。 PCI カードの I/O ベースアドレ スは安全に検知されるからです。 利用できるモジュールは /lib/modules/`uname -r`/net に保存されているは ずです。ここで uname -r コマンドはカーネルのバージョン (例えば 2.0.34) を与えます。ここを探して、お使いのカードにあったドライバを探してくださ い。 conf.modules が正しく設定されれば、以下のようにしてテストできま す。 modprobe ethN dmesg | tail ここで `N' にはテストしたいイーサネットインタフェースの番号を入れてく ださい。 ドライバをカーネルに組み込んでいる場合: ドライバをカーネルに組み込んで いる場合は、複数のイーサカードに対するフックも全てカーネルに組み込まれ ていることになります。しかしここで、デフォルトではひとつのカードしか自 動探索されないことに注意してください。これは、神経質なカードを探索する ことによって起こりうるブート時のハングアップを避けるためなのです。 (注意: 2.1.x の最後の方のカーネルでは、ブート時の探索は安全なものから 危険なものの順に行われるようになりました。これは、安全な (つまり PCI と EISA) 探索が、対応するカードを自動的に見つけることができるようにで す。二枚以上のイーサネットカードを備えたシステムで、その内の少なくとも 一枚が ISA のカードの場合には、依然として以下のいずれかを行う必要があ ります。) 2番目 (および3番目、および...) のカードの自動認識を可能にするには、 2つの方法があります。もっとも簡単なのは起動時にカーネルへ引数を与える ことです。通常は LILO でこれを行ないます。 ether=0,0,eth1 のような簡単 な引数をブート時引数に与えれば、 2番目のカードを探索することができま す。この場合、起動時にカードが見つかった順番に eth0, eth1 が割り当てら れます。 0x300 のカードを eth0 に、 0x280 のカードを eth1 にしたいな ら、 LILO: linux ether=5,0x300,eth0 ether=15,0x280,eth1 とします。 ether= コマンドは上記のIRQ + I/O + 名前以外のものも受け付け ます。構文の全て、カード固有のパラメータ、LILO の裏技等を知りたい場合 は ``カーネルにイーサネット関連引数を渡す方法'' を見てください。 これらの起動時の引数を、毎度毎度入力しなくてすむようにもできます。 LILO のマニュアルから設定オプション `append' の項を参照してください。 2つめの方法 (お勧めできません) は、 Space.c を編集し、 I/O アドレスの 0xffe0 エントリを 0 に書き換えてしまうことです。 0xffe0 エントリは、カ ーネルにそのデバイスを検出しないようにさせます。これを 0 にすれば、デ バイスを自動検出するようになります。 Linuxを2つのネットワーク間のゲートウェイとして使用するつもりなら、 IP forwardingを有効にしてカーネルを再コンパイルしなければなりません。通常 は `kbridge'のようなソフトウェアを利用して、古いAT/286マシンをゲート ウェイにしたほうがよいでしょう。 この文書をネットサーフィンの途中で見ている人は、 Donald の WWW サイト にある mini-HOWTO を見てみるといいでしょう。以下の URL です。 Multiple Ethercards . 訳注: 上記の日本語訳は にあります。 3.3. ether= ってやっても何もおきません。なんで? 上記のように、 ether= コマンドはカーネルに組み込まれたドライバでしか動 作しません。今日のほとんどのディストリビューションはモジュール化された かたちでドライバを利用しているので、 ether= コマンドはもはやほとんどの 場合使えません。 (古い文書では、まだこのあたりの変更に応じた更新がされ ていないかもしれません。) モジュール化されたイーサネットドライバにオプ ションを与えたい場合は、 /etc/conf.modules ファイルの方を変更しなけれ ばなりません。 ドライバをカーネルに組み込んでいて、 ether= を LILO の設定ファイルに追 加した場合は、ファイルの変更後に lilo を再実行しなければ更新情報が反映 されないことに注意してください。 3.4. NE1000 / NE2000 カード (およびクローン) の問題 問題: PCI NE2000 クローンカードが v2.0.x のブート時に検知されない。 理由: v2.0.30 までの ne.c ドライバが知っている PCI ID 番号は、 RealTek 8029 ベースのクローンカードのものだけだったのです。これ以降、 PCI NE2000 クローンカードが他からもいくつかリリースされ、それらは別の PCI ID 番号を使っていたため、ドライバはこれを検知できないのです。 解決法: 一番簡単な解決法は v2.0.31 以降のカーネルにアップグレードする ことです。これらのカーネルは NE2000-PCI チップの 5 種類の ID 番号を 知っており、ブート時やモジュールとしてロードされたときにカードを自動的 に検知します。 2.0.34 以降にアップグレードすれば、 PCI 専用の NE2000 ドライバを使うことができ、これは従来の ISA/PCI ドライバよりも多少小さ く、より効率的です。 問題: ブート時や ne.0 モジュールをロードしたとき、 PCI NE2000 クローン カードが ne1000 (8 ビットカード!) として報告されます。したがって動作し ません。 理由: PCI クローンの中には、byte wide アクセスを実装していないものがあ ります (つまりこれらは本当の 100% NE2000 互換ではありません)。これに よって検知ルーチンは、 NE1000 カードだと思ってしまうのです。 解決法: 上述のように、 v2.0.31 以降にアップグレードする必要がありま す。現在のドライバはこのハードウェアのバグをチェックするようになりまし た。 問題: PCI NE2000 カードの性能がとても悪いです。 ``性能を上げるためのヒ ント'' にあるように、ウィンドウサイズを減らしてもだめです。 理由: オリジナルの 8390 チップの spec シート (設計・販売は 10 年前) で は、信頼性を最大限にするためには write 操作の前にダミーのリードが必要 であると記述されています。ドライバはこれを行う機能を持っていますが、 v1.2 カーネルの頃以降、デフォルトでは無効にされています。あるユーザに よると、この「ミス回避機能」を有効にすることによって、安物の PCI NE2000 クローンカードの性能向上に効果があったそうです。 解決法: これは一人の人から報告されただけですから、あまり期待しないよう に。 "read before write" を有効にするには、 linux/drivers/net/ のドラ イバファイルを編集して、 NE_RW_BUGFIX の行をアンコメントするだけです。 その後お使いの環境にあわせてカーネルかモジュールをビルドし直してくださ い。これがうまくいったら、性能の違いとお使いのカード/チップのタイプを 書いて、私に電子メールを送ってください。 (同様の手法は ne2k-pci.c ドラ イバにも適用可能です。) 問題: ne2k-pci.c ドライバが timeout waiting for Tx RDC というようなエ ラーメッセージを出し、 PCI NE2000 カードがうまく動きません。 理由: お使いのカードや、カードと PCI バスのリンクが、このドライバで用 いられている long word の I/O 最適化を扱うことができないからです。 解決法: まず BIOS/CMOS セットアップで変更可能な設定項目をチェックし て、関係する PCI バスのタイミングが安定動作に害を及ぼすような過激な値 になっていないか確かめてください。これがだめなら、 ISA/PCI 用の ne.c ドライバを使えば (あるいは ne2k-pci.c から #define USE_LONGIO の行を削 除すれば) 現在のカードを利用できるはずです。 問題: ISA Plug and Play の NE2000 カード (RealTek 8019 など) が検知さ れません。 理由: オリジナルの NE2000 の仕様では (すなわち Linux NE2000 ドライバで も) Plug and Play をサポートしていないからです。 解決法: カードについてきた DOS の設定ディスクを使って PnP を無効にし、 カードの I/O アドレスと IRQ を適切な値に指定してください。そして /etc/conf.modules に、 options ne io=0xNNN のような行を追加してくださ い。ここで 0xNNN はカードに指定した 16 進の I/O アドレスです。 (なお、 これはモジュール化ドライバを使っている場合です。そうでない場合はブート 時に ether=0,0xNNN,eth0 のような引数を指定してください。) もしかしたら BIOS/CMOS 設定で、指定した IRQ を PnP ではなく Legacy-ISA にマークする 必要があるかもしれません。あるいは、他の OS との互換性を保つために PnP を残しておきたいこともあるかもしれません。この場合は isapnptools パッ ケージを覗いてみてください。 man isapnp すれば、システムに既にインスト ールされているかどうかわかります。インストールされていない場合は以下の URL を訪ねてみましょう。 ISA PNP Tools 問題: NE*000ドライバが起動検出時に `not found (no reset ack)' (見つか りません、リセットに対して応答がありません) というメッセージを出しま す。 理由: これは上述の変更に関係しています。 8390 が探索された I/O アドレ スに存在することが確認されると、リセットが行われます。カードのリセット が終了したとき、カードから「リセットが完了した」という通知がされること になっています。カードが応答しない場合、ドライバは NE カードが存在しな いものとします。 解決法: ドライバに、使っているカードが悪い (bad な) カードであることを 伝えることができます。ブート時に、 mem_end の部分に 0xbad という 16 進 の値を指定すれば良いのです (mem_end はこれ以外の用途には使われませ ん)。この 0xbad を用いる際には、カードの I/O ベースアドレスに 0 でない 値を指定しなければなりません。例えば 0x340 にあるカードがリセットを ack しない場合は、以下のような指定になります: LILO: linux ether=0,0x340,0,0xbad,eth0 これによって、カードがリセットに ACK しない場合でもカード検知は継続さ れます。ドライバをモジュールとして用いている場合は、 I/O アドレスを指 定する場合と同じような形式で、 bad=0xbad というオプションを与えてくだ さい。 問題: NE*000カードが最初のネットワークアクセスの際にマシンをハングさせ ます。 理由: この問題は昔の1.1.57のカーネルのころから現在に至るまで報告されて います。これはソフトウェアから設定できるクローンカードに限られた問題の ようです。このようなカードは、特定の方法で初期化する必要があるようで す。 解決法: 何人かの人たちから、以下のような報告があります。カードについて きた DOS の設定プログラムや、 DOS のドライバを走らせておいてからウォー ムブート (つまり loadlin するか「三つ指ついてごあいさつ (訳注: Ctrl- Alt-Del :-)」するか) して Linux に入れば、これらのカードを動作させるこ とができるそうです。おそらくこれらのカードは、現在の Linux ドライバで なされているのとは若干異なる、特別な方法で初期化しなければならないので しょう。 問題: アドレス 0x360 にあるカードが検出できない。 理由: お使いの NE2000カードが 0x20 分の I/O 空間を使用します。その結 果、 0x378 に存在するパラレルポートとぶつかることになります。あるいは 2 つめのフロッピーコントローラを使っている場合はそれが 0x370 に、また 0x376-0x377 に 2 つめの IDE コントローラがあるかもしれません。これらの ポートが先に他のドライバによって登録されてしまうと、カーネルは検出を実 行しません。 解決法: カードのアドレスを 0x280, 0x340, 0x320 などに移動するか、パラ レルプリンタのサポートを外してカーネルをコンパイルしなおしましょう。 問題: 何か印刷するとネットワークが「どこかに行って」しまいます (NE2000) 原因: 上記と同じ問題です。ただ使っているカーネルが古くて、 I/O 領域の 多重使用をチェックしていないのでしょう。上と同じ方法で直ります。その時 にはカーネルも新しくしたほうがいいでしょう。 問題: NE*000 ethercard probe at 0xNNN: 00 00 C5 ... not found. (invalid signature yy zz) と表示される。 理由: まず、アドレス 0xNNN に NE1000 あるいは NE2000が存在しますか?も しそうなら、表示されるハードウェアアドレスは正しいもののようでしょう か?これも OK なら、使ってるのはダサい NE*000 クローンなんでしょう。全 ての NE*000 クローンは、カード上の SA PROM のバイト 14 と 15 に 0x57 という値を持っていなければなりません。このように表示されるカードはこの 値になっておらず、 `yy zz'が書き込まれているんです。 解決法: この問題を回避する方法は二つあります。簡単なほうは上記の `no reset ack' 問題のところで述べたように、 mem_end の値に 0xbad を使うや り方です。こうすると、 0 でない I/O ベースアドレスが与えられていれば指 紋チェックをスキップします。この方法はカーネルを再コンパイルしなくても すみます。 二つめの方法はハッカー向きで、ドライバを書き換えてカーネル (あるいはモ ジュール) を再コンパイルします。ドライバ (/usr/src/linux/drivers/net/ne.c) には、 42 行目あたりに ``Hall of Shame (恥さらしの殿堂)'' と呼ばれるリストがあります。このリストはダサ いクローンの検出に用いられます。例えば DFI のカードでは、通常想定され ているバイト 14、15 の 0x57 の代わりに、 PROM の先頭 3 バイトにある `DFI' を使うようになっています。 問題: ブート時に `8390...'や`WD....'というメッセージが出て、その直後に マシンがハングする。NE2000 を取り外すとハングしない。 解決法: NE2000 のベースアドレスを 0x340 へ変更してください。あるいはブ ート引数 ``reserve='' を ``ether='' 引数と一緒に用いて、他のデバイスド ライバによる探索からこの領域を保護するやり方でも OK です。 理由: お使いのカードの互換性が足りないのです。動作している NE2000 は、 その I/O 空間を自動探索しようとする他のドライバに対して、底無しの落し 穴となります。 NE2000 をあまり人気のないアドレスに変更して、他の自動検 出から外してあげれば、マシンを起動することができます。 問題: マシンが起動時のSCSI検出中にハングする。 理由: 上記と同じ問題です。イーサカードのアドレスを変更するか、ブート引 数 reserve/ether を使用してください。 問題: ブート時のサウンドカード検出中にマシンがハングする。 理由: いえ、実際には無言のうちに SCSI の探索が行われているんです。です ので上記と同じ問題です。 問題: NE2000 が起動時に検出されない - ブートメッセージが何も出ない。 解決法: 検出されない理由にはさまざまなものがあり得るので、「魔法の解決 法」は存在しません。以下のリストが、問題解決までの道のりの手助けとなる でしょう。 1) 新しいカーネルを、必要なデバイスドライバだけでビルドしてみましょ う。新しいカーネルでブートしていることを確認しましょう。 lilo の実行を 忘れたりすると、古いカーネルでブートされちゃうかもしれません (ブート時 に表示される時刻/日付をよく見ましょう)。当たり前のように思えるかもしれ ませんが、皆がはまってきた道なのです。新しいカーネルにドライバがちゃん と含まれているか確認しましょう。 System.map ファイルに ne_probe のよう な名前がありますか? 2) ブートメッセージをよく見ましょう。 `NE*000 probe at 0xNNN: not found (blah blah)' のような NE2000 の探索メッセージが出ていますか?そ れともだまって失敗していますか?両者には大きな違いがあります。ログイン してから dmesg | more とすれば、ブートメッセージを再確認できます。ある いはブートが完了してログインプロンプトが出た後に Shift-PgUp すれば、ス クリーンをスクロールアップさせることができます。 3) ブートした後、 cat /proc/ioports して、カードが必要とする I/O 領域 が全部空いているかを確認しましょう。 0x300 を使うなら、 ne2k ドライバ は 0x300-0x31f を必要とします。他のドライバがこの範囲の一部でも予約し ていると、このアドレスへの探索は行われず、黙って次のアドレスへの探索と 進みます。よくあるケースとしては、 lp ドライバが 0x378 を、second IDE チャネルが 0x376 を予約していて、 0x360-0x380 へのドライバのプローブが 行われない場合があげられます。 4) 同じように cat /proc/interrupts もやってみましょう。他のデバイスが イーサカードにセットした割り込みを使っていないか確認してください。この 場合には探索は行われ、イーサードライバはブート時に「必要な IRQ ライン が使えない」と大声で文句を言います。 5) これでもまだドライバが沈黙したまま動作しない場合は、原因を調べるた めに printk() をいくつか追加してみましょう。例えば ne2k の場合なら、 linux/drivers/net/ne.c に以下のような行を追加(+行)したり削除(-行) した りしてみましょう。 ______________________________________________________________________ int reg0 = inb_p(ioaddr); + printk("NE2k probe - now checking %x\n",ioaddr); - if (reg0 == 0xFF) + if (reg0 == 0xFF) { + printk("NE2k probe - got 0xFF (vacant I/O port)\n"); return ENODEV; + } ______________________________________________________________________ こうするとポートアドレスをチェックするたびにメッセージを出力します。カ ードのアドレスが探索されているかどうかがわかります。 6) Don の ftp サイト (既に紹介してあります) から ne2k 診断ツールを入手 して、 Linux のブート後に、このツールがカードを検出できるかどうか試し てみることもできます。 `-p 0xNNN' オプションを使って調べる場所を指定し てください。 (デフォルトは 0x300 で、ブート時とは異なり、他の場所は見 に行きません。) カードが検出された場合の出力は以下のようになります。 ______________________________________________________________________ Checking the ethercard at 0x300. Register 0x0d (0x30d) is 00 Passed initial NE2000 probe, value 00. 8390 registers: 0a 00 00 00 63 00 00 00 01 00 30 01 00 00 00 00 SA PROM 0: 00 00 00 00 c0 c0 b0 b0 05 05 65 65 05 05 20 20 SA PROM 0x10: 00 00 07 07 0d 0d 01 01 14 14 02 02 57 57 57 57 NE2000 found at 0x300, using start page 0x40 and end page 0x80. ______________________________________________________________________ レジスタの値と PROM の値はこれと異なるかもしれません。 PROM の値が 16ビットカードでは倍になること、最初の行にはイーサネットアドレス (00:00:c0:b0:05:65) が表示されること、 PROM の最後に 2 つの 0x57 が指 紋として登録されていることなどに注目してください。 カードが 0x300 にインストールされていない場合の出力は以下のようになり ます。 ______________________________________________________________________ Checking the ethercard at 0x300. Register 0x0d (0x30d) is ff Failed initial NE2000 probe, value ff. 8390 registers: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff SA PROM 0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff SA PROM 0x10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff Invalid signature found, wordlength 2. ______________________________________________________________________ 0xff の値は、空の I/O ポートを読み込んだ時に返ってきた値です。もしたま たま他のハードウェアがこの領域にあれば、 0xff 以外の値が現れる可能性も あります。 7) DOS のブートフロッピーから、 (loadlin を使って) Linux をウォームブ ートさせてみてください。ブートの前に、カードについてきた DOS のドライ バか設定プログラムを走らせておいてください。これらがカードの初期化に余 分な (つまり非標準の) 手妻を使っているかもしれません。 8) Russ Nelson の n2000.com パケットドライバを使って、カードが見えるか 確認してください。見えない場合は、多分状況は良くないでしょう。例を示し ます: A:> ne2000 0x60 10 0x300 引数はソフトウェア割り込みベクタ、ハードウェア IRQ、 I/O ベースアドレ スです。このコマンドは pktdrv11.zip にあります。有名な msdos アーカイ ブならきっとあるでしょう。現在のバージョンは 11 より新しいかもしれませ ん。 3.5. SMC Ultra/EtherEZ と WD80*3 カードでの問題 問題: 以下のようなメッセージが表示される: eth0: bogus packet size: 65531, status=0xff, nxpg=0xff 理由: 共有メモリに問題があります。 解決法: 最もよくある原因は、PCI マシンが ISA メモリデバイスにマップす るように設定されていない場合です。したがって、受信パケットのデータが含 まれている、本来見にいくべきカードの RAM ではなく、 PC の RAM の一番最 後 (値が全部 0xff) を見にいってしまっているのです。 他にありがち (で修正が簡単) なものとしては、ボードの競合、キャッシュか その領域の `shadow ROM' が有効になっている、 ISA バスが 8MHz 以上で動 作している、などがあります。イーサネットカードでのメモリ不良も、じつは 驚くほどたくさん起きています。こんな問題が起きた場合には、診断プログラ ムを走らせておくといいですね。 問題: SMC EtherEZ がメモリ非共有モード (PIO モード) で動作しません。 原因: Ultra ドライバの古い版はメモリ共有モードの動作しかサポートしてい なかったからです。 解決法: カーネル 2.0 以降のドライバは PIO モードの動作もサポートしてい ます。 2.0 より新しいバージョンにアップグレードしましょう。 問題: 古い wd8003 や、ジャンパ設定式の wd8013 で、正しくない IRQ が取 得されてしまいます。 原因: 古い wd8003 カードやジャンパ設定式の wd8013 クローンには、ドライ バが IRQ 設定を読み込む対象とする EEPROM がついていません。 IRQ を読め ないと、ドライバは auto-IRQ を使って IRQ を見つけようとします。そして auto-IRQ が 0 を返すと、ドライバは単純に 8 ビットのカードには 5 を、 16 ビットのカードには 8 を割り当てようとします。 解決法: auto-IRQ コードを使わないようにして、カードにジャンパ設定した IRQ をカーネルに教えてあげましょう。モジュールの設定ファイル (あるいは カーネル組み込みドライバの場合はブート時引数) を使います。 問題: SMC Ultra カードが wd8013 と検知されますが、 IRQ と共有メモリの ベースアドレスが間違っています。 原因: Ultra カードは wd8013 と非常によく似ており、 Ultra のドライバが カーネルにないと、 wd ドライバが Ultra を wd8013 と間違えてしまうこと があるかもしれません。 Ultra の探索は wd よりも先に行われるので、普通 の場合にはこのようなことは起こりません。 Ultra は IRQ とメモリベースを wd8013 とは異なったフォーマットで EEPROM に保存しています。このため妙 な値が報告されてしまうのです。 解決法: 必要なドライバだけが組み込まれるようにカーネルを再構築しましょ う。 wd と Ultra カードが 1 台のマシンに共存していて、モジュールを使っ ているときは、 ultra モジュールを先にロードしてください。 3.6. 3Com のカードの問題 問題: 3c503 が IRQ Nを選択しますが、これは IRQ N を使用する別のデバイ ス (例えばCD ROMドライバやモデムなど) のために必要なんです。カーネルを コンパイルしなおさずにこの問題は解決可能ですか? 解決法: 3c503 ドライバは空いている IRQ 線を {5、9/2、3、4} の順に検出 していきます。そして使われていない IRQ を選択することになっています。 ドライバは ifconfig が行われ、動作に入る段階でこの選択を行います。 モジュール化されたドライバを使っている場合は、モジュールのパラメータで 色々な設定ができます。もちろん IRQ の値もです。 以下では IRQ9、ベースアドレス 0x300, , if_port #1 (外部 トランシーバ) を選択しています。 io=0x300 irq=9 xcvr=1 あるいはドライバがカーネルに組み込まれている場合は、以下のようなパラメ ータを LILO を使ってブート時に渡せば同じ値が設定できます。 LILO: linux ether=9,0x300,0,1,eth0 以下では IRQ3, ベースアドレスの自動検出、, デフォルトの if_port #0 (内蔵トランシーバ) を指定しています。 LILO: linux ether=3,0,0,0,eth0 問題: 3c503: configured interrupt X invalid, will use autoIRQ. と表示 される。 理由: 3c503カードはIRQ{5、2/9、3、4} のどれかしか使えません (カードに 接続されている IRQ 線はこれらだけなのです)。もしこれ以外の IRQ を設定 してしまうと、上述のようなメッセージが表示されてしまいます。通常は 3c503 の IRQ を指定する必要はありません。 ifconfig を行なった際に IRQ が自動検出され IRQ{5、2/9、3、4} のうち 1 つが選択されます。 解決法: 上述の有効な IRQ のどれかを使用するか、 IRQ の指定をやめて自動 検出を使ってください。 問題: 3c503 ドライバで AUI (thicknet) ポートを使用できない。デフォルト の thinnet ポートではなく、こちらを使うにはどうするのか? 解決法: 3c503 AUI ポートはカーネル組み込みドライバなら起動時に、モジュ ールドライバならロード時に選択が可能です。この選択は、現在は用いられて いない dev->rmem_start 変数の下位ビットを立てることで可能です。つま り、起動時パラメータ LILO: linux ether=0,0,0,1,eth0 を用いればカーネル組み込みドライバなら機能するはずです。 モジュールのロードの際に AUI ポートを指定するには、 xcvr=1 を I/O およ び IRQ の値と一緒にモジュールのオプション行に追加するだけで OK です。 3.7. 特定のカードに関わらない FAQ 3.7.1. Linux と ISA Plug and Play イーサーカード 最高の結果 (と最低の不快感) のためには、カードに付属のプログラム (通常 は DOS のものでしょう) を用いて PnP メカニズムを無効にし、 I/O アドレ スと IRQ には固定値を用いることです。ここで指定した I/O アドレスをブー ト時の探索に用いるようしてください。モジュールを使っているなら io= オ プションを /etc/conf.modules に記述してください。場合によっては BIOS/CMOS setup に入り、指定した IRQ を PnP ではなく Legacy-ISA にマー クする必要があるかもしれません (コンピュータにこのオプションがある場 合)。 なお、 DOS ベースの設定プログラムを動かすために DOS をインストールする 必要は、通常はありません。 DOS のフロッピーディスクからブートして、カ ードについてきたフロッピーに差し替えて実行すればいいはずです。 OpenDOS や FreeDOS なら無料でダウンロードできます。 他の OS との互換性を保つために PnP を有効にしておきたい場合は、 isapnptools パッケージを用いてカードをブートの度に設定する必要がありま す。この場合もカードにあてがわれた I/O アドレスがドライバによって探索 されるようにする (あるいは io= オプションを与える) 必要があります。 3.7.2. イーサカードが起動時に検出されない 大抵の場合は、使用したいカードのサポートが組み込まれていないカーネルを 使っているのが原因でしょう。モジュール化されたカーネルなら、必要なモ ジュールがロード要求されていないか、 I/O アドレスをモジュールのオプ ションに指定しなければならない、などが考えられます。 モジュールベースのカーネル (大抵の Linux ディストリビューションがイン ストールするのはこれ) を使っているなら、そのディストリビューションの設 定ユーティリティを使ってお使いのカードのモジュールを選んでください。 ISA のカードでは I/O アドレスを決めておいて、設定ユーティリティがオプ ション入力を求めたときに、その値をオプションに指定する (例: io=0x340) のが良いでしょう。設定ユーティリティがない場合は /etc/conf.modules に 正しいモジュールの名前 (とオプション) を追加する必要があるでしょう。詳 細は man modprobe を見てください。 ディストリビューションの一部として配布されているコンパイル済みカーネル を使っている場合は、文書を読んでどのカーネルをインストールしたのか、自 分のカードのサポートが一緒に組み込まれているかをチェックしましょう。組 み込まれていない場合には、カードをサポートしている別のカーネルを取得す るか、自分でカーネルをビルドする必要があります。 通常、自分の必要なドライバだけを組み込んだカーネルを構築するのが賢い方 法です。カーネルのサイズを小さくできますし (アプリケーションのために貴 重なRAMを節約できます!)、過敏なハードウェアに問題を生じさせるデバイス の自動検出の回数を減らすことができます。カーネルのコンパイルは思ったほ ど複雑なことではありません。どのドライバが必要か、という一連の質問に答 えていくだけで、あとは全部勝手にやってくれます。 (訳注: Kernel-HOWTO 等をご覧ください。) 次なる大きな原因は、カードが必要とする I/O 空間の一部を他のデバイスが 使用している、というものです。ほとんどのカードは I/O 空間を 16 あるい は 32 バイト幅で使用します。カードが 0x300 以降の 32バイトを使用するよ うに設定されていると、ドライバは 0x300-0x31f を要求します。他のデバイ スドライバがその範囲内で 1 ポートでも登録してしまっていると、そのアド レスにおいて検出は行なわれずドライバは黙って次のアドレスへ検出に行きま す。ですからブートした後に cat /proc/ioports を行ない、カードの要求す る I/O 空間が完全に空いているか確認してみてください。 別の原因としては、デフォルトでは検出されない I/O アドレスにジャンパ設 定してしまっている、というものがあります。それぞれのドライバで探索され るアドレスは、ドライバソースのコメントテキストのあとに書いてありますの で、簡単に見付かります。カードの I/O 設定が探索アドレスのリストになく ても、 ``カーネルにイーサネット関連引数を渡す方法'' で説明するように、 起動時に (カーネル組み込みドライバなら) ether= コマンドを使って I/O ア ドレスを指定することができます。モジュールドライバなら /etc/conf.modules に io= オプションを使って、デフォルトでは探索されな いアドレスを指定することができます。 3.7.3. ifconfig が、間違ったカード I/O アドレスを報告する いいえ、間違ってません。あなたが誤解しているのです。これはバグではあり ませんし、報告されている数値は正確です。特定の 8390 ベースのカード (wd80x3, smc-iltra など) では、割り当てられた I/O ポートの先頭からずれ たところに実際の 8390 チップが存在しているのです。 dev->base_addr に記 録されているのはこの値で、これが ifconfig の報告する値なのです。カード が使用するポートの全範囲を知りたいなら、 cat /proc/ioports すれば望み の値が得られます。 3.7.4. PCI マシンでカードは検出されるがドライバが探索に失敗する PCI BIOS のなかには、電源 ON の時に全ての PCI カードを有効にしないもの があるようです (特に BIOS オプションの `PNP OS' が有効になっている場合 には)。この「欠陥」は、いまだにリアルモードのドライバが残っている現在 の Windows をサポートするためのものなんです。このオプションを無効にす るか、無効なカードを有効にするコードが入っている新しいドライバにアップ グレードしてください。 3.7.5. PCI マシンで共有メモリの ISA カードが動作しない ( 0xffff ) このときには大抵、たくさんの 0xffff が表示されることになるでしょう。い かなる共有メモリタイプのカードも、 PCI ROM BIOS/CMOS SETUP を適切に設 定しなければ、 PCI マシンで使用することはできないでしょう。カードが使 用するメモリ領域に対して、 ISA バスからの共有メモリアクセスが可能とな るように設定しなければいけません。どの設定が正しいのかわからない場合 は、メーカーに問い合わせるか、お近くのコンピュータの導師様にお聞きくだ さい。 AMI BIOS では、これは通常 "Plug and Play" セクションにある ``ISA Shared Memory Size'' と ``ISA Shared Memory Base'' 設定です。 wd8013 や SMC Ultra では、これをデフォルトの `Disabled' から 16KB に変 更し、ベースをお使いのカードの共有メモリアドレスに変更します。 3.7.6. 送信はできるようだが受信がぜんぜんできない cat /proc/interruptsしてみましょう。表示の中に、カードが生成した割り込 みイベントの起動時からの総回数があるはずです。もしこれが 0 か、あるい はカードを利用しても増加しない場合は、おそらくそのコンピュータにインス トールされている他のデバイスと割り込みが物理的に衝突しているのでしょう (その「他のデバイス」用のドライバがインストールされているか、起動され ているかどうかはこの際関係ありません)。二つのデバイスのどちらかの IRQ を空いている IRQ に変更しましょう。 3.7.7. Asynchronous Transfer Mode (ATM) のサポート Werner Almesberger が Linux の ATM サポートに取り組んでいます。彼は Efficient Networks の ENI155p ボード (Efficient Networks ) と Zeitnet の ZN1221 ボード (Zeitnet ). に対して作業を行なってきました。 Werner によれば、 ENI155p のドライバはかなり安定ですが、 ZN1221のドラ イバはまだ完成していない、ということです。 最新の状態については以下の URL をチェックしてください: Linux ATM Support 3.7.8. Gigabyte イーサネットのサポート Linux に gigabyte イーサネットのサポートはあるのでしょうか? はい、少なくとも二つあります。 Packet Engines G-NIC PCI Gigabit Ethernet adapter 用のドライバが v2.0 と v2.2 カーネルに入っています。 より詳しい情報やサポート状況、ドライバの更新状況については、以下をどう ぞ: v2.2 カーネルにある acenic.c ドライバが Alteon AceNIC Gigabit Ethernet card と、他にも 3Com 3c985 等の Tigon ベースのカードに使えます。このド ライバは NetGear GA620 にも使えるはずですが、これはまだ確認されていま せん。 3.7.9. FDDI のサポート Linux に FDDI のサポートはあるのでしょうか? はい。 Larry Stefani が Digital の DEFEA (FDDI EISA) と DEFPA (FDDI PCI) カードに対する v2.0 用のドライバを書いています。これは v2.0.24 カ ーネルで取り込まれました。ただし今のところは、他にはサポートされたカー ドはありません。 3.7.10. Full Duplex のサポート 全二重を使えば 20Mbps 出せますか? Linux ではサポートされてます? Cameron Spitzer は全二重の 10Base-T カードについて以下のように書いてい ます。「もしこれを全二重のスイッチングハブに繋ぎ、あなたのシステムが充 分高速で他にすることがあまりなければ、双方向のリンクを busy 状態に維持 することができるでしょう。なお全二重の 10BASE-2 (細い同軸ケーブル) と か 10BASE-5 (太い同軸ケーブル) とかいうものはありません。全二重はアダ プタでのパケット衝突検知を無効にすることによって動作します。これが同軸 ケーブルを使えない理由です (同軸ケーブルの LAN はこのような状況では動 作しませんから)。 10BASE-T (RJ45 インタフェース) は送信と受信に別々の 信号線を用いているので、両方を同時に使うことが可能です。パケット衝突の 問題はスイッチングハブが面倒を見てくれます。信号転送速度は 10Mbps にな ります」 ですからおわかりのように、送信または受信を 10Mbps で行えるのであって、 性能が 2 倍になるわけではありません。サポートされているかどうかはカー ドとドライバに依存します。自動ネゴシエーションをするカードもあれば、ド ライバのサポートを必要とするものもあれば、カードの EEPROM 設定でユーザ がオプションを選ばなければならないカードもあります。いずれにせよ、この 二つのモードの違いがわかるのはカードを真剣、かつヘビーに使っているユー ザだけでしょう。 3.7.11. SMP マシンの Linux におけるイーサネットカード マルチプロセッサ (Multi Processor: MP) コンピュータに余分のお金を使う のでしたら、イーサネットカードも良いものを買いましょう。 v2.0 カーネル ではあまり問題にはなりませんが、 v2.2 ではこのことは非常に重要です。古 いノンインテリジェントなカード (例えば ISA バスの PIO や共有メモリを用 いたカードなど) では、 MP マシンで用いることは全然考慮されていません。 なすべきことを先にまとめておきますと、インテリジェントな新しい設計のカ ードを購入すること、その際にはドライバが MP 動作を扱えるように記述され ている (あるいは更新されている) ことを確認すること、です。 (ここでのキ ーワードは「新しい設計」です。 PCI-NE2000 は 10 年以上前の設計を新しい バスにつないだものにすぎません。) ドライバのソースに spin_lock という 単語があるかどうかで、そのドライバが MP 動作を扱えるように書かれている かどうかはだいたい判断できます。以下に、 MP で用いる時にはなぜ良いカー ドを買わなければならないのか (そしてそうしなければどうなるのか) を述べ ます。 v2.0 カーネルでは、ある瞬間に「カーネルに入っている」ことができる (つ まりカーネルのデータを変更したりデバイスドライバを動作させることができ る) プロセッサは一つだけでした。ですからカードの方からは (そしてそのド ライバの方からは)、単一プロセッサ (Uni Processor: UP) の動作と何ら変わ ることはなく、物事はそのままで問題なく動作していました。 (これが MP 版 の Linux をつくるには最も楽な方法だったのです。カーネル全体に及ぶ巨大 なロックで、一時に一つのプロセッサしか許さない方法です。このようにする と、二つのプロセッサがある対象を同時に変更しようすることがなくなりま す。) 一度に一つのプロセッサしかカーネルに置かない、という手法の欠点は、 MP の性能を得られるのが特殊な場合 (例えば自分の内部にしかデータを持たな い、計算処理に特化したプログラムを動作させる場合) に限られる、というこ とです。プログラムがたくさんの入出力 (I/O) をこなす場合には (例えば ディスクやネットワークへのデータの読み書き)、一つを除いた残りのプロ セッサは、 I/O 要求がすむまで待たされることになります。その一方でカー ネルにいるプロセッサは、馬鹿馬鹿しくも自分の I/O 要求だけのために全部 のデバイスドライバを独占してしまうのです。このようにして、カーネルで動 作するプロセッサが一つしか許されないので、カーネルがボトルネックになっ てしまうわけです。 I/O 負荷が大きく、単一ロックの MP マシンの性能は、 すぐにシングルプロセッサのマシンと同じくらいにまで下がってしまいます。 これが理想的でないのは明らかですから (特にファイルサーバ、 WWW サー バ、ルータ等では)、 v2.2 カーネルはロックの粒度をより細かくしました。 つまり複数のプロセッサが同時にカーネルに入れるようにしたのです。カーネ ル全体に及ぶ一つの巨大なロックの代わりに、たくさんのより小さなロックが 導入され、これらがクリティカルなデータに対する複数のプロセッサからの同 時操作を防ぐようになりました。つまり、ネットワークカードドライバを動作 させることができるプロセッサは一つですが、その間他のプロセッサはディス クドライブのドライバを動作させることができるようになったわけです。 OK、以上を頭に入れていただくと、ここにちょっとした問題が生じることがわ かります。より細かなロックによって、以下のようなことが可能になります。 一つのプロセッサがあるイーサネットドライバを通してデータを送信しようと 試みる一方で、他のプロセッサが同じドライバ/カードに他のことをしようと する (例えば cat /proc/net/dev 用のカードの統計を取得しようとする) よ うな状況が考えられるわけです。あらら、カードの情報がネットを通して送ら れ、カード情報の代わりに送信データを取得しちゃいました... そう、カー ドは同時に二つの (あるいはもっと多くの!) ことを要求されると、混乱して しまい、そのプロセスがマシンをクラッシュさせてしまうことだってありえま す。 ですから、ドライバはもはや UP で動作するだけでは充分ではないのです。ド ライバはロックを扱えるように更新されなければいけません。ロックによる、 カードに対するアクセスの制御が必要です。受信・送信・設定データの操作と いった 3 つのタスクを、カードが安定動作できるような順序に並べ替えるこ とができなければいけません。ここで恐いのは、アップデートされておらず、 ロックを扱えないようなドライバでも、ネットワーク負荷の軽い状況下なら MP マシンで動作してしまうのです。ところが二つの (あるいはもっと多く の!) プロセッサがこれらの 3 つのタスクのうちの 1 つ以上を同時に行おう とすると、マシンはクラッシュするか、少なくとも妙な振る舞いをするように なるのです。 アップデートされた MP を意識するドライバは、 (最低でも) ドライバの周り にロックを要求し、それによってエントリポイントへのアクセスを制限し、カ ーネルからのドライバへのアクセスを「お一人様づつどうぞ」にします。こう すると複数アクセスは整列し、ドライバの背後にあるハードウェアは UP マシ ンの場合と全く同じように扱われ、すなわち安定動作するようになります。こ の欠点は、イーサネットドライバ全体に対するロックは、カーネル全体に対す るロックと同じように性能の低下を招いてしまう (しかしより小さなスケール で)、ということです。つまり、同時にカードを扱えるプロセッサが一つに制 限されるわけです。 [テクニカルノート: 追加しなければならないロックが irqsave タイプのもので、かつ長期間続くようなものである場合、割り込みイ ベントの増加による性能低下も生じることになります。] この状況の改善手法としては 2 つが考えられます。ロックの取得から解放ま での時間を最小にすること、そしてドライバ内部でのより細かなロックを実装 することです (例えば、一つの、あるいは二つのロックによって、カードのレ ジスタや設定の敏感な部分への同時アクセスを防ぐことができさえすれば良い のなら、ドライバ全体に及ぶロックはやりすぎということになります)。 しかし古いノンインテリジェントなカードは、最初から MP 動作を想定せずに 設計されていますので、このような向上は見込めません。さらに悪いことに、 ノンインテリジェントなカードでは、カード−コンピュータメモリ間のデータ 転送がプロセッサに対して要求されることがあり、最悪のシナリオでは 1.5kB のデータパケットを ISA バスを通して移動する間、ずっとロックが継続され てしまうことも考えられます。 より新しいインテリジェントなカードでは、通常プロセッサの助力なしにネッ トワークデータを直接コンピュータメモリとやりとりできます。これは非常に 性能を向上させます。なぜならこの場合、ロックに必要な時間は、プロセッサ がカードに送信ネットワークデータパケットが保存されているメモリアドレス (受信パケットを保存するアドレス) を伝える間だけですむからです。さらに より新しい設計のカードでは、同じようにドライバ全体への大きなロックを必 要としないようになってきています。 3.7.12. Alpha/AXP PCI ボードの Linux でのイーサネットカード v2.0 の段階では、 3c509, depca, de4x5, pcnet32, 8390 ドライバ全部 (wd, smc-ultra, ne, 3c503 など) が「アーキテクチャ非依存」で作られており、 したがって DEC Alpha CPU ベースのシステムでも動作します。 Donald の WWW ページにある最新の PCI ドライバも、おそらく動作するでしょう。これ らもアーキテクチャ非依存の精神に則って書かれていますから。 ドライバをアーキテクチャ非依存にするために必要な変更手順はそんなに複雑 ではありません。以下の項目を行なうだけです。 o jiffies 関連の値全てに HZ/100 を掛ける。 Alpha が使用する HZ は 100 ではない値を使っているからです (すなわち timeout=2; を timeout=2*HZ/100; にします) o 全ての I/O メモリ (640kから1MBまで) ポインタが異なるので、 readb() writeb() eradl() writel() 等の適切なコールに置き換える。以下の例を 参照してください。 ___________________________________________________________________ - int *mem_base = (int *)dev->mem_start; - mem_base[0] = 0xba5eba5e; + unsigned long mem_base = dev->mem_start; + writel(0xba5eba5e, mem_base); ___________________________________________________________________ o I/O メモリをコピー元あるいはコピー先として持つ全ての memcpy() コー ルを memcpy_fromio() あるいは memcpy_toio() の適切な方に置き換え る。 アーキテクチャ非依存な形でメモリアクセスを扱うことに関しては、最近のカ ーネルに付属している linux/Documentation/IO-mapping.txt に詳しく記述さ れています。 3.7.13. SUN/Sparc ハードウェアの Linux におけるイーサネット Sparc に関する最新情報は以下の URL から取得してください。 Linux Sparc Sparc のイーサネットハードウェアの一部には、 MAC アドレスをホストコン ピュータから取得するものがあります。ですから複数のインタフェースが同じ MAC アドレスになってしまいます。 2 つ以上のインタフェースが同じネット に必要な場合は、 ifconfig の hw オプションを用いてユニークな MAC アド レスを割り当ててください。 PCI ドライバを Sparc プラットフォームに移植する場合の注意点は上に紹介 した AXP プラットフォームの場合とだいたい同じです。あとエンディアンの 問題にも要注意です。 Sparc は big エンディアンを用いますが、 AXP と ix86 では little エンディアンを用いていますから。 3.7.14. その他のハードウェアの Linux におけるイーサネット 他にも Atari/Amiga (m68k) など、 Linux が動作するハードウェアはいくつ かあります。 Sparc の場合と同様に、現在のサポート状況に関してはそれぞ れのプラットフォームに対する Linux 移植プロジェクトのホームサイトを チェックしてください (そのようなサイトへのリンクがあったらここに載せま す - お知らせください!) 3.7.15. ハブ無しで 10 BaseT 接続、 100 Base T 接続する ハブ無しで 10/100BaseT (RJ45) ベースのシステムを接続できますか? 2 台なら簡単に接続できますが、それ以上だと特別なデバイスや仕掛けなしで はできないでしょう。 ``ケーブル、同軸、ツイストペア'' の項を参照してく ださい。やり方が書いてあります。いくつかの線を交差させてつないだりする だけでは、ハブの代替をさせることはできません。ハブを使用せずに信号の衝 突を正しく処理することには、かなり無理があります。 3.7.16. SIOCSIFxxx: No such device というメッセージが出る。 起動時に `SIOCSIFxxx: No such device' というメッセージがたくさん出て、 次に `SIOCADDRT: Network is unreachable' というメッセージが出ます。何 が悪いんですか? 起動時/モジュール登録時にイーサネットデバイスが検出されておらず、その 結果 ifconfig と route の実行時に処理すべきデバイスが存在しないので す。 dmesg | more を実行して起動時のメッセージを確認し、イーサネットカ ードの検出に関して何かメッセージが出ていないか確認してください。 3.7.17. SIOCSFFLAGS: Try again というメッセージが出る。 ifconfig 実行時に `SIOCSFFLAGS: Try again' と出ます -- 何? イーサカードが使用する IRQ を別のカードが横取りしてしまったため、カー ドがその IRQ を使用できないのです。これを解決するには、必ずしも再起動 する必要はありません。なぜならデバイスによっては必要な時だけ IRQ を使 用し、用が済んだら解放するものもあるからです。例としてはサウンドカー ド、シリアルポート、フロッピーディスクドライブなどがあります。 cat /proc/interrupts とすれば、どの割り込みが現在使用されているか確認でき ます。 Linux のイーサカードドライバのほとんどは、 `ifconfig'から起動さ れてはじめてIRQを使用します。ですからほかのデバイスが必要な IRQ 線を解 放すれば、 ifconfig で `Try again' することができるでしょう。 3.7.18. `ifconfig' すると Link UNSPEC with HW-addrが00:00:00:00:00:00 というメッセージが出る。 ifconfig を引数なしで実行すると、 (10Mbps Ethernet ではなく) LINK が UNSPEC であると表示され、さらにハードウェアアドレスが全て 0 と表示され る。 これはカーネルより新しい `ifconfig' を実行しているからでしょう。この新 しいバージョンの ifconfig は、古いカーネルと一緒に使用すると、これらの 情報を表示することができないのです。カーネルをアップグレードするか、 ifconfig を「ダウングレード」してください。あるいはこのメッセージを無 視しても構いません。カーネルはカードのハードウェアアドレスを取得してい ますから、 ifconfig がアドレスを読み出せないことはなんら問題ではありま せん。 逆に ifconfig プログラムがカーネルよりもずっと古い場合も、おかしな情報 が表示されることがあるかもしれません。 3.7.19. 大量の RX および TX エラー ifconfig を引数なしで実行すると、受信および送信パケットの両方のエラー カウントが非常に多く表示される。動作はうまく行っているように見えるけど -- 何がおかしいんでしょう? もう一度よく見てください。 RX packets 大きな数 [空白] errors:0 [空白] dropped:0 [空白] overrun:0 と表示されているはずです。 TX の行も同様で す。あなたが見ている大きな数というのは、マシンが送受信したパケットの総 数ということになんです。それでも混乱してしまうなら、代わりに cat /proc/net/dev としてみてください。 3.7.20. イーサカードに対する /dev/ のエントリ /dev/eth0 が dev/xxx へのリンクとして存在します。これで正しいのです か? 以前お聞きになったことと矛盾しているかもしれませんが、 /dev/* のファイ ルは使用されません。 /dev/wd0 や /dev/ne0 などのエントリは削除しても構 いません。 3.7.21. Linuxと``trailers'' イーサカードを `ifconfig' するときに、 trailers を無効にすべきでしょう か? trailers を無効にすることはできませんし、そうすべきではありません。 `trailers' はネットワーク層におけるデータのコピーを避けるための仕組み です。この考え方は、サイズ `H' のあらかじめ決められたサイズのヘッダを 使用し、可変サイズのヘッダ情報をパケットの最後に置き、そしてページの先 頭から `H' バイト前に全てのパケットを割り当てるというものでした。いい アイディアではありましたが、実際には正常に動作しないことがわかりまし た。だれかが `-trailers' の使用を提案したとしても、いいですか、それは 山羊の血を生贄にすべきだ、っていってるのと同じ程度のことなんです。こい つが問題を解決してくれることはありませんが、問題が勝手に解決してしまっ たら、その人は深く神秘的な知識を持っているとみなされちゃうわけです。 3.7.22. raw イーサネットデバイスへのアクセス TCP/IP などの層を経由せず、 Linux で raw イーサネットデバイスへアクセ スするにはどうしたらいいですか? ______________________________________________________________________ int s=socket(AF_INET,SOCK_PACKET,htons(ETH_P_ALL)); ______________________________________________________________________ これでどのようなプロトコルでも受信できるソケットが得られます。ソケット への recvfrom() コールをすると、ソケットは sa_family のデバイスタイプ を sockaddr に、デバイス名を sa_data 配列にそれぞれ書き込みます。 Linux用の SOCK_PACKET をだれが最初に発明したのかは知りませんが (もうず いぶん前です)、こいつは非常に「いい仕事」ですねえ。 raw デバイスに sendto() コールを使って送信することもできます。どちらの場合でも、もち ろん root のアクセス権限が必要になります。 4. 性能を上げるためのヒント イーサネットのスループットが低い場合や、あるいは ftp を用いた転送速度 を少しでも上げるために活用できるヒントを集めました。 ttcp.c プログラムは素のスループットを測定するためにはよいテストです。 他の一般的な方法としては ftp> get large_file /dev/null の実行がありま す。ここでの大きなファイル(large_file) とは 1MB 以上のサイズで、なおか つ送信側マシンのバッファ上に残っている必要があります。(「get」を少なく とも 2回行ないます。なぜなら 1回目で送信側マシンのバッファにキャッシュ させるためです。)バッファにキャッシュされたファイルを使用するのは、測 定結果にディスクの読み込み速度を含めないためです。転送されたデータの受 信先をディスクではなく /dev/nullにするのも同様の理由です。 4.1. 概要 8 ビットのカードでさえ、次から次へとやってくるパケットをすき間なく受信 することが可能です。問題となってくるのは、次に受信するパケットのために 十分な余裕を作れるだけの速さでコンピュータがカードからパケットを取り出 せなくなってきた場合です。コンピュータが既に受信したパケットをカード上 のメモリからすばやく取り出せない場合、カード上には次のパケットを受信す るための場所がなくなってしまいます。 この場合、カードは新しいパケットを取りこぼすか、以前受信したパケットの 先頭に上書きしてしまいます。どちらの場合も、パケットの再送を引き起こし たり要求することになり、円滑なデータの流れの邪魔になってしまいます。ひ どい場合は、性能が理論値の 1/5 になってしまうこともあります。 より多くのメモリを搭載しているカードは、より多くのパケットを「バッファ する」ことができます。そのため次から次と受信したパケットを取りこぼすこ となく連続して取り扱うことができます。これは逆に、パケットの取りこぼし を防ぐための、バッファからパケットを取り出すのに必要なコンピュータの待 ち時間が短くて済むということを意味します。 ほとんどの 8 ビットカードは 8kB のバッファを持っていて、16 ビットのカ ードは 16kB のバッファを持っています。ほとんどの Linux のドライバは バッファのうち 3kB を(2つの送信バッファのために)保存しています。そのた め 8 ビットカードについては受信用に 5kB だけが残っています。これはフル サイズ(1500バイト)のイーサネットパケットを 3 つ受信するだけなら十分な 量です。 4.2. ISA カードと ISA バスのスピード 上述のように、パケットがカードから十分速く取り出されていれば、受信する パケット用のバッファが小さくてもパケットの取りこぼしやオーバーランは起 こりません。カードからコンピュータのメモリへパケットが取り出されていく 速度を決定する要素は、カードとメモリの 2つを結ぶ経路、すなわち ISAバス 上のデータ転送速度です。(CPUが非力な 386SX-16MHz なら、これも速度に影 響を与えます。) 推奨されている ISA バスのクロック数はおよそ 8MHz ですが、多くのマザー ボードと周辺装置はそれより速い周波数で動作することが可能です。ISA バス のクロック数は通常 CMOS の設定において行い、マザーボードと CPU のク ロック数の約数を選択します。ただしいくつかの ISA と PCI/ISA のマザーボ ードはこのオプションを持っていないかもしれません。その場合は工場出荷時 の設定をそのまま使うことになります。 例として、TTCPプログラムを用いて測定した結果を以下に示します。これは 40MHzの 486に古い 8bit WD8003EPカードを使用したという条件で、ISAバスの 速度を変えています。 ______________________________________________________________________ ISA バス速度 (MHz) Rx TTCP (kB/s) ------------------- -------------- 6.7 740 13.4 970 20.0 1030 26.7 1075 ______________________________________________________________________ TCP/IPを使用する限りは、いかなる 10MB/s のカードを持ってしても 1075kB/s 以上の速度を出すのは難しいでしょう。しかし、どんなシステムで も ISA バスが高速で動作するとは限りません。ほとんどのシステムでは 13MHz 以上の速度では正常に動作しないのです。(また、いくつかの PCI シス テムでは ISA バスの速度が 8MHzに固定されています。そのためエンドユーザ がそれを増やすことはできません。) 高い転送速度のほかには、メモリとディスクの I/O 転送サイクルが短くなる ことによって CPU 使用率を減らせるという利点もあります。(ISA バス上のハ ードディスクとビデオカードも、ISA バスの速度を上げることにより性能が向 上します。) ISA バスの速度を 8MHz より高くしてみる前に、必ずデータをバックアップし てください。そして、全ての ISA 周辺機器の速度を向上させた後でも正常に 動作することを徹底的にテストしてください。 4.3. TCP 受信ウィンドウの設定 繰り返しになりますが、搭載している RAM が少ないカードと、コンピュータ のメモリとカード間のデータ転送速度が遅いマザーボードとの組み合わせは、 トラブルの原因となります。TCP 受信ウィンドウの初期値は 32kB になってい ますが、これは同じサブネットに存在する高速なコンピュータがよどみなく 32kB のデータをダンプするような速さでデータを受信するように見せかける ためです。 最近のバージョンの route コマンドでは、実行中にこのウィンドウのサイズ を設定することができます。通常このウィンドウのサイズを減らさなければな らないのはローカルネットの場合だけです。なぜならルータやゲートウェイの 内側に位置するコンピュータは、問題を引き起こさない程度に「バッファされ ている」からです。使用例としては: ______________________________________________________________________ route add ... window ______________________________________________________________________ win_size は使用したいウィンドウサイズ(バイト単位)です。ISA バス上の 10MHz かそれ以下で動作している 8 ビットの 3c503 カードは、およそ 4kB のウィンドウサイズで良好に動作します。一方でウィンドウサイズを大きくし すぎればオーバーランやパケットの取りこぼしを引き起こしかねません。その 結果イーサネットのスループットは著しく低下してしまいます。生じている取 りこぼしやオーバーランの状況は cat /proc/net/dev によりチェックできま す。 4.4. NFS性能の向上 NFSクライアントとして 8 ビットのカードを 8kBの NFSパケットサイズ (Sun 純正)で使用した場合に、期待したほどの性能が出ないことを発見した人がい ます。 理由として考えられるのは、8 ビットと 16 ビットのカードが搭載している バッファサイズの違いによるものでしょう。イーサネットパケットの最大サイ ズはおよそ 1500 バイトです。8kBの NFS パケットが 6 個の連続した最大サ イズのイーサネットパケットとしてやってきたとします。8 ビットでも 16 ビットでもカードが連続したパケットを受信するのは問題ありません。問題は カードのバッファからパケットが順次取り出されていかなくなったときに生じ ます。バッファがあふれてしまうのです。8 ビットカードが転送ごとに余分な ISA バスサイクルを必要とするのも困りものです。8 ビットカードを使用して いる場合の解決策は、NFS の転送サイズを 2kB(もしくは 1kB)にする か、ISAバスの速度を上げてカードのバッファからパケットを取り出すところ を高速にするか、のどちらかです。私の実験では、8MHzで動作する古い WD8003E カードでも、システムにその他の負荷がない場合には 2kB という大 きな NFS の転送サイズでの受信が可能でした。しかし 4kB では、性能がほぼ 1/3 に低下してしまいます。 一方で、少なくとも 16 ビットの ISAカードを使っていて、マウントオプショ ンで転送サイズの初期値が 1kB になっている場合は、転送サイズを 4kB (も しくは 8kB) に設定することによって、性能の向上が期待できます。 5. ベンダー/メーカー/モデル固有の情報 たくさんのカードを以下に示します。このリストではベンダーをアルファベッ ト順に並べ、その中で製品識別子をアルファベット順に並べています。各製品 ID とは別に、「サポート」「準サポート」「未サポート」のいずれかを記し てあります。 「サポート」とは、そのカード用のドライバが存在し、多くの人がそれを問題 なく使っているので、信頼できると思われるという意味です。 「準サポート」は、ドライバが存在するけれど以下の項目が 1 つでも当ては まる場合です: (1) ドライバまたはハードウェア(あるいはその両方)がバグっ ぽい。そのために性能が悪かったり、接続に失敗したり、さらにはクラッシュ さえすることがある。 (2) ドライバが新しいか、カードがあまり一般的でな い。そのため、利用やテストがほとんどできておらず、ドライバの作者にもほ とんどフィードバックが来ていない。明らかに (2) の方が (1) よりましで す。またカードやドライバの個々の解説を見ればどちらに該当するかわかるは ずです。いずれの場合にも、 make config を実行した時に ``Prompt for development and/or incomplete code/drivers?(開発中や不完全であるコー ド/ドライバの設定を行うか?)'' の問いに `Y' と答えなければならないで しょう。 「未サポート」は、現在はそのカード用のドライバはないという意味です。こ れは滅多にない/一般的でないハードウェアで興味を持たれていないためか、 あるいはドライバを書くために必要なハードウェア情報をベンダーが公開して いないためでしょう。 「サポート」と「準サポート」の違いは、かなり主観的であり、ニュースグル ープやメーリングリストへの投稿で見られたユーザのフィードバックに基づい ている点に注意してください。(結局、一人の人間が全てのドライバを全ての カードで全てのカーネルバージョンについてテストすることは不可能なんで す!!!) したがって、「準サポート」となっているカードでもあなたの環境で 完璧に動作することはありますし(素晴らしいですね)、「サポート」となって いるカードでトラブルに見舞われることもある(素晴らしくないですね)点に注 意してください。 カードのステータスの後には、Linux カーネル内で与えられているドライバ名 が示されています。これは、モジュール設定ファイル /etc/conf.modules 内 の「alias eth0 ドライバ名」という行で使われているドライバモジュールの 名前でもあります。 5.1. 3Com 使っているカードが何かわからないけれどそれが 3Com のカードだと思われる 場合、多分アセンブリナンバを見ればわかります。3Com には `Identifying 3Com Adapters By Assembly Number'(ref 24500002)という文書がありますの で、これでどのカードか明らかにすることができるでしょう。3Com からド キュメントを得る方法は、「3Comの技術情報」を参照してください。 また、3Com はさまざまなソフトウェアを FTP サイトで提供しています: ftp.3Com.com ぜひ見に行ってください。 この文書を WWW ブラウザで御覧になっている方は 3Com の WWW サイトへも 行ってみましょう。 5.1.1. 3c501 ステータス: 準サポート、ドライバ名: 3c501 この時代遅れの石器時代ものの 8 ビットカードは、狂っていて使いものにな りません。疫病神と思って避けてください。たとえ冗談であっても、このカー ドを買ってはいけません。性能は恐ろしいほど低いですし、いろいろな問題を 起こします。 まだ納得できない方のために言うと、3c501 は同時に 1 つの処理しかできま せん。 シングルパケットバッファからパケットを削除している間は、別のパ ケットを受信することができませんし、送信パケットをロードしている間はパ ケットを受信することができません。これは、個々のパケットを処理したり応 答したりするのに数十 msec かかる 8088 ベースのコンピュータにとっては十 分でしたが、近代的なネットワークは、ほとんど全ての処理毎に、すきまなく パケットを送信します。 IRQ 自動検出は動作し、DMA は用いられず、自動検出は 0x280 および 0x300 のみを探します。また、デバッグレベルは起動時の 3 番目の引き数にセット します。 もう一度言います。3C501 は絶対に使わないことをお勧めします! IP マルチ キャスト対応のカーネルを使用していてもです。マルチキャストカーネルでは 全てのマルチキャストパケットを受信する間、あなたはしばらく作業を中止す る必要があるでしょう。詳細についてはソースコードの先頭のコメントを参照 してください。 5.1.2. EtherLink II, 3c503, 3c503/16 ステータス: サポート、ドライバ名: 3c503 (+8390) 3c503 には「EEPROM 設定」がないので、このカードを Linux で使う前に診断 /設定プログラムは必要ありません。3c503 の共有メモリアドレスは、起動 PROM アドレスと共有されているジャンパで設定されます。これは他の ISA カ ードに慣れている人には紛らわしいでしょう。普通は、起動 PROM を持ってい なければジャンパを「無効(disable)」にしておくのが普通ですから。 これらのカードは同じバス幅を持つ WD80x3 とほぼ同じ速度が出るはずです が、実際には若干遅いことがわかっています。これらの共有メモリイーサカー ドは 8390 の機能(技術者がたくさんのバグを発見しています!)では使用して いないプログラムド I/O の機能も持っています。Linux の 3c503 ドライバは プログラムド I/O モードの 3c503 でも動作しますが、共有メモリモードより 遅く若干信頼性に欠けます。また、プログラムド I/O モードは、ドライバ改 訂時のテストがあまり行なわれていません。MS-DOSとの互換性のために必要で なければ、プログラムド I/O を利用すべきではありません。 3c503 の IRQ 線はソフトウェアで設定され、EEPROM は参照しません。MS-DOS のドライバとは異なり、Linux のドライバは IRQ を自動検出することができ ます: {5,2/9,3,4} の順で調べ、最初に利用できた IRQ を使用します。IRQ は、カードが ifconfig されるごとに選択されます。(古いバージョンのドラ イバは起動時に IRQ を選択していました。) `ifconfig' における ioctl() 呼び出しは、その時に利用できる IRQ 線がなければ EAGAIN を返します。 503 使用時によく生じる問題については、 ``3Com のカードの問題''で説明し ます。 このドライバをローダブルモジュールとして使用するなら、モジュール化に特 有の情報として ``イーサネットドライバをモジュールとして用いる場合'' を 参照すべきでしょう。 古い 386 ワークステーションの一部にはオンボードの 3c503 (3Com が製造 し、 `Bull' といった別名で販売していました)が載っていますが、ベンダー ID は 3Com のものではないので、検出されない点に注意してください。詳し い説明は Etherboot パッケージにあります。このパッケージは、このような ディスクレスマシンを動かすにはいずれにせよ必要です。 5.1.3. Etherlink Plus 3c505 ステータス: 準サポート、ドライバ名: 3c505 これは Craig Southeren geoffw@extro.ucc.su.oz.au が書いたドライバで す。これらのカードも i82586チップ を使用しています。これらのカードに関 する情報はあまりありません。標準カーネルにドライバは含まれていますが、 アルファ版ドライバとして扱われています。 ``アルファ版ドライバ'' に、Linux におけるアルファテスト版のイーサネットドライバの使用に関する 重要な情報があります。 また、これらのカードを使用するにあたって読んでおくべきファイルとして は、 /usr/src/linux/drivers/net/README.3c505 があります。設定を有効/無 効にできる、さまざまなオプションに関する情報が含まれています。 5.1.4. Etherlink-16 3c507 ステータス: 準サポート、ドライバ名: 3c507 このカードは Intel のチップの 1 つを使用しているので、ドライバの開発は Intel Ether Express ドライバの開発に密接に関係しています。ドライバは標 準カーネルに含まれていますが、アルファ版ドライバとしてです。 ``アル ファ版ドライバ''に、Linux におけるアルファテスト版のイーサネットドライ バの使用に関する重要な情報があります。 5.1.5. Etherlink III, 3c509 / 3c509B ステータス: サポート、ドライバ名 3c509 このカードはかなり安価で、ISA の非バスマスタ設計としては優れた性能を 持っています。欠点としては、もともとの 3c509 が要求する割り込み遅延が 非常に低いことです。3c509B にはこのような問題はありません。これは大き なバッファを持っているからです(後述)。これらのカードは ne2000 カードと 似た PIO 転送を使い、したがって比較すると wd8013 のような共有メモリカ ードの方がより効率的でしょう。 もともとの 3c509 は小さなパケットバッファ (全体で 4kB、受信 2kB、送信 2kB) しか持っておらず、割り込みが長時間マスクされるとドライバがパケッ トを取りこぼしていました。この問題を最小限にするためには、IDE ディスク 転送中の割り込みのマスクを解除したり (hdparm(8)参照)、IDE 転送を速く終 らせるために ISA バスの速度を増やしてみてください。 新しいモデルの 3c509B はボード上に 8kB のバッファを持ち、バッファは受 信/送信に対し 4/4、5/3、あるいは 6/2 と分割することができます。この設 定は DOS の設定ユーティリティで変更でき、これを EEPROM 上に記憶できま す。これで、もともとの 3c509 における上述の問題が解決されるはずです。 3c509B ユーザはプラグ&プレイ機能を無効にするため、また出力先 (訳注: 10Base-T, 10Base-2, AUI)を設定するため、提供されているDOSのユーティリ ティを使用しなければなりません。Linux のドライバは現在は出力先の自動検 出は行わないので、10Base-T, 10Base-2, AUI のいずれかを選択しなければな りません。PnP を完全に切るためには、 3C5X9CFG /PNP:DISABLE を実行し、 それから設定を確実に有効にするためにハードリセットを行うべきです。 「サーバかワークステーションか」や「モデムの最高速度」といった設定が DOS の設定ユーティリティに現われることに関して時々質問されます。Donald によると、「それらはドライバへのヒントに過ぎず、Linux ドライバはこれら のパラメータを使っていない: Linux のドライバは、遅延を小さくするより常 に高いスループットを得られるように最適化されている(「サーバ」)。遅延が 小さいことは、古く、ウィンドウが使えない、IPX の処理にとっては重要で あった。3c509 用の MS-DOS ドライバで遅延を減らすことにより、一部の操作 に対する割り込みが無効になり、シリアルポートの割り込みがブロックされ る。したがって、「モデムの速度」の設定が必要となる。Linux のドライバは パケット群の全体だけを操作するため(例えば、パケットが完全にカードに転 送されるまでパケットの転送を始めない)に長時間割り込み無効にする必要が ない」とのことです。 ISA カードの検出には、ほとんどのカードと異なる方法を使っている点に注意 してください。基本的には、ID_PORT (0x100 から 0x1ff までの 10 刻みのポ ート)にデータを送ることによりカードに応答するよう命令します。この検出 方法だと、複数の ISA 3c509 がある機器構成では特定のカードが必ず最初に 検出されます。もっとも小さいハードウェアイーサネットアドレスを持つカー ドが必ず eth0 となります。これは誰にとっても問題にならないはずです が、6 バイトのハードウェアアドレスを特定のインタフェースに割り当てたい 人は例外です。もし複数の 3c509 カードをお持ちであれば、I/O ポートを指 定せずに(つまり I/O アドレスを 0 として)、どのカードが最初となるかを検 出機構が処理できるようにすると良いでしょう。 I/O アドレスに 0 以外の値 が指定されると、カードはどれも検出されません。したがって、この指定を 行ってはなりません。 ether=0,0,ethN コマンドを追加し、 これが本当に苦になるのであれば、Donald の最新のドライバを見てみましょ う。というのも、未使用メモリアドレスフィールド内に 0x3c509 の値を取 り、検出機構をニーズに合わせることができるかもしれないからです。 5.1.6. 3c515 ステータス: サポート、ドライバ名 3c515 これは 3Com が出した ISA 100Mbps カードで、``CorkScrew'' というコード 名がついています。これらのカードに対して Donald が出した比較的新しいド ライバはバージョン 2.2 カーネルに入っています。最新の情報については、 Vortex ページを見るべきでしょう: Vortex 5.1.7. 3c523 ステータス: 準サポート、ドライバ名: 3c523 この MCA バスカードは i82586 を使用しており、Chris Beauregard が ni52 ドライバを改造してこのカードで動作するようにしました。このドライバはバ ージョン 2.2 のカーネルのソースツリーに入っています。 詳しくは http://glycerine.cetmm.uni.edu/mca/ にある MCA-Linux のページ をご覧ください。 5.1.8. 3c527 ステータス: 未サポート これも別の MCA カードです。あまり興味はありません。MCA にこだわるな ら、まだ 3c529の方が期待できます。 5.1.9. 3c529 ステータス: サポート、ドライバ名: 3c509 このカードは実際には 3c509 と同じチップセットを使っています。Donald は 実際には 3c509 のドライバにフックを入れて、EISA カードを調べた後で、か つ ISA カードを調べる前に MCA カードを調べるようにします。MCA のサポー トはずっと昔にカーネルに追加されています。MCA の検知に必要なコードはバ ージョン 2.2 カーネルと一緒に出ているドライバに入っています。詳しくは http://glycerine.cetmm.uni.edu/mca/ にある MCA-Linux のページに書かれています。 5.1.10. 3c562 ステータス: サポート、ドライバ名: 3c589 (別配布されています) この PCMCIA カードはモデムと 3c589B イーサネットカードを組み合わせたも のです。エンドユーザにとっては、モデムは標準的なモデムに見えます。難し いのは、1 つの割り込みを 2 つの異なる Linux ドライバで共有するところで す。いくつかの新しいレジスタと、ハードウェア割り込みの共有のサポートが あります。割り込みの共有をサポートするには、バージョン 2.0 以降のカー ネルを使う必要があります。 サンプル機と文書を David Hinds へ送ってくれたことに対して、再び Cameron に感謝します。David による次の PCMCIA パッケージのリリースを待 ちましょう。 PCMCIA チップセットやソケットイネーブラ等に関する詳細は、 ``PCMCIA の サポート'' をご覧ください。 5.1.11. 3c575 ステータス: 不明 この PCMCIA カード用のドライバは現在開発中であり、将来は David の PCMCIA パッケージに入るでしょう。現在のステータスを知るには、PCMCIA パッケージを調べるのが一番でしょう。 5.1.12. 3c579 ステータス: サポート、ドライバ名: 3c509 509 の EISA バージョンです。現在の EISA バージョンは 32 ビットインタ フェースではなく、同じ 16 ビット幅のチップを使用します。ですから、性能 の向上はたいしてありません。カードが EISA のアドレッシングモードに合わ せて設定されていることを確かめてください。ドライバの情報については、前 述の 3c509 の項目を見てください。 5.1.13. 3c589 / 3c589B ステータス: 準サポート、ドライバ名: 3c589 今までに相当の期間、多くの人がこの PCMCIA カードを使用してきました。こ のカードのサポートは、デフォルトのカーネルソースツリーには (現時点で は) 含まれていないことに注意してください。名前に付いている "B" は、 3c509 の場合と同じ意味です。 ドライバは Donald の ftp サイトや、David Hinds の PCMCIA パッケージか ら入手できます。サポートされている PCMCIA コントローラチップセットも必 要でしょう。PCMCIA のドライバ、チップセット、ソケットイネーブラ等に関 する詳しい情報については ``PCMCIA のサポート'' をご覧ください。 5.1.14. 3c590 / 3c595 ステータス: サポート、ドライバ名: 3c59x これらの ``Vortex'' カードは PCI バスのマシン用で、590 は 10Mbps 用 に、 595 は 100Mbps 用に 3Com が出しています。また、595 は 590 とし て(つまり 10Mbps モードで)動作させられる点に注意してください。このドラ イバはバージョン 2.0 のカーネルソースに入っていますが、現在も続けて更 新中です。バージョン 2.0 のカーネルに入っているドライバを使っていて問 題が起きた場合には、以下の URL から最新のドライバを入手するとよいで しょう: Vortex 3c590 カードには異なる 2 つのものがある点に注意してください。すなわち 32kB のオンボードメモリを持つ初期型モデルと、8kB のメモリしか持たない 後期型モデルです。現在はもう新しい 3c59x を買うことはできないでしょ う。というのも、これらは 3c09x カードに置き換えられたからです。誰かか ら中古で買う場合には、32kB 版を買うようにしましょう。3c595 はメモリを 64kB 積んでいます。100Mbps をたった 8kB の RAM ではどうしようもありま せん! Donald へカードと文書を送ってくれたことに対して、3Com の Cameron Spitzer と Terry Murphy に感謝します。おかげでドライバを書くことができ ました。 Donald は Vortex ドライバをサポートするためのメーリングリストを用意し ています。このメーリングリストに加わるには以下のコマンドを実行してくだ さい: echo subscribe | /bin/mail linux-vortex-request@cesdis.gsfc.nasa.gov 5.1.15. 3c592 / 3c597 ステータス: サポート、ドライバ名: 3c59x これは最近リリースされた、3c59x シリーズのカードの EISA バージョンで す。 3c597 (別名 Demon) は、先に述べた Vortex ドライバで動作するはずで す。 5.1.16. 3c900 / 3c905 / 3c905B ステータス: サポート、ドライバ名: 3c59x このカード(別名 `Boomerang', EtherLink III XL)は 3c509/3c595 カードの 後継機種としてリリースされました。 Cyclone `B' のサポートは、ごく最近追加されました。このカードをバージョ ン 2.0 の古いカーネルで使うには、Donald のサイト Vortex-Page から最新の 3c59x.c ドライバを入手しなければなりません。 何か疑わしい点があれば、上記の WWW ページを確認してください。Donald は Vortex ドライバのサポート告知などを行うためのメーリングリストを用意し ています。このメーリングリストに加わるには、以下のコマンドを実行してく ださい: echo subscribe | /bin/mail linux-vortex-request@cesdis.gsfc.nasa.gov 5.1.17. 3c985 ステータス: サポート、ドライバ名: acenic このドライバ(Jes Sorensen 作成)は、バージョン 2.2 のカーネルで利用可能 です。このドライバは 3Com のモデル以外にも、いくつかのギガビットカード もサポートしています。 5.2. Accton 5.2.1. Accton MPX ステータス: サポート、ドライバ名: ne (+8390) 名前にだまされないように。このカードはまだ NE2000 互換カードだと思われ るので、ne2000 ドライバで動作するはずです。 5.2.2. Accton EN1203, EN1207, EtherDuo-PCI ステータス: サポート、ドライバ名: de4x5, tulip このカードは DEC 21040 PCI チップの実装の 1 つです。EN1207 カードには 21140 が載っており、10Base-2 コネクタも付いています。これはメディアを 選択する時に一部で問題が起きることが明らかになっています。しかし、この カードを 10Base-T と100Base-T で使えている人もいます。したがって、この カードを買う人は、動作しなければ返品できるようにしておくべきです。 これらのカードに関する詳しい情報と、ドライバの現在の状態については ``DEC 21040'' をご覧ください。 5.2.3. Accton EN2209 Parallel Port Adaptor (EtherPocket) ステータス: 準サポート、ドライバ名: ? これらのパラレルポートアダプタ用のドライバは利用可能ですが、まだバー ジョン 2.0, 2.1 のカーネルソースの一部ではありません。ドライバは以下の 場所から入手しなければなりません: http://www.unix-ag.uni-siegen.de/~nils/accton_linux.html 5.2.4. Accton EN2212 PCMCIA Card ステータス: 準サポート、ドライバ名: ? David Hinds がこのカード用のドライバの開発をしているので、現在の状況を 知るには、PCMCIA パッケージの最新リリースをチェックするとよいでしょ う。 5.3. Allied Telesyn/Telesis 5.3.1. AT1500 ステータス: サポート、ドライバ名: lance これらは AMD LANCE の 79C960 バージョンを使用した、低価格のイーサカー ドです。これらはバスマスタカードであり、入手可能な ISA バスイーサカー ドの中では高速な部類に入るものの 1 つです。 DMA の選択とチップ番号に関する情報は``AMD LANCE'' にあります。 AMD LANCEベースのイーサカードに関する詳細な技術情報は、 ``AMD ... に関 する注意'' にあります。 5.3.2. AT1700 ステータス: サポート、ドライバ名: at1700 make config の際にこのドライバの設定を出すためにはまだ、最初に ``Prompt for development and/or incomplete code/drivers?'' と聞かれた 時に `Y' と答えていなければなりません。これは単に、このカードが比較的 珍しいために、ドライバの安定性に関するフィードバックがないことが理由で す。カーネル付属のドライバを使っていて問題に出会ったならば、別のドライ バを使うとよいかもしれません: http://www.cc.hit-u.ac.jp/nagoya/at1700/ Allied Telesis AT1700 シリーズのイーサカードは、富士通の MB86965 ベー スです。このチップはプログラムド I/O インタフェースを使用し、1対の固定 サイズの送信バッファを使用します。これにより、バッファの切替え時に少し 停止するだけで、少数のパケットをすきまなく送信することが可能です。 独特な機能として、10baseT 100Ω UTP (Unshielded Twisted Pair) だけでな く、Token Ringで一般的に使用される 150Ω STP (Shielded Twisted Pair) をドライブすることもできます。このカードの光ファイバー版(AT1700FT)も存 在します。 AT1700 で使われている富士通のチップには設計ミスがあります: マシンの電 源を投入しなおさないと完全なリセットがかかりません。リセットボタンを押 すだけではバスインタフェースをリセットできないのです。これはそんなに大 きな問題ではありませんが、リセットした時にしか確実に検出されない場合は この限りではありません。カーネルが AT1700 をうまく検出できない場合の解 決法/対処法は、電源を再投入するというものです。 5.3.3. AT2450 ステータス: サポート、ドライバ名: pcnet32 これは AT1500 の PCI バージョンで、Boca の 79c970 PCI カードのような問 題はありません。DMA の選択とチップ番号に関する情報は、 ``AMD LANCE'' にあります。 AMD LANCEベースのイーサカードに関する詳細な技術情報は、 ``AMD ... に関 する注意''にあります。 5.3.4. AT2500 ステータス: 準サポート、ドライバ名: rtl8139 このカードは RealTek 8139 チップを使っています。したがって、 ``RealTek 8139'' の節を見てください。 5.3.5. AT2540FX ステータス: 準サポート、ドライバ名: eepro100 このカードは i82557 チップを使っており、したがって、eepro100 ドライバ で動作するはずです。読者の皆さんがこれを試した場合には、この情報を更新 できるように、結果を報告してください。 5.4. AMD / Advanced Micro Devices AMD の Carl Ching のご厚意により、AMD 関連の全てのイーサネット製品につ いての詳しい説明を提供していただきました。これはこの章を整理するのに役 立ちました。 5.4.1. AMD LANCE (7990, 79C960/961/961A, PCnet-ISA) ステータス: サポート、ドライバ名: lance 実際には AMD のイーサネットカードというものは存在していません。多分あ なたは、カード上に AMD と上記の番号の刻印しか見つからなかったからこの セクションを読んでいらっしゃるのでしょう。7990 が元々の `LANCE' チップ ですが、ほとんどの資料(この文書を含む)は、同様なチップも含めて `LANCE'チップと総称しています(まあ、不正確ではありますが……)。 上記の番号は、多くのイーサネットカードの心臓部である、AMD製のチップを 指しています。例えば、Allied Telesis のAT1500(``AT1500''参 照)、NE1500/2100 (``NE1500'' 参照) がこれらのチップを使っています。 7990/79c90 はずっと前に新しいバージョンに取って代わられています。 79C960 (別名 PCnet-ISA)は本質的には 79c90 のコア部分を含んでおり、さら にハードウェアのサポートが必要な他のものも全て含まれています。これによ り、ワンチップのイーサネット製品を実現されています。79c961 (PCnet- ISA+) は、79C960 のジャンパ無しのプラグ&プレイ版です。ISA 系列の最後の チップは 79c961A (PCnet-ISA II)であり、全二重の機能が追加されていま す。これらのチップのいずれかを使っているカードは全て、 lance.c ドライ バで動作するはずです。ただし、元々の 7990 を共有メモリの設定で使ってい る非常に古いカードは例外となります。このような古いカードは、DMA チャネ ル用のジャンパが無いため、使えないかもしれません。 よくある問題は、`busmaster arbitration failure' (訳注: 「バスマスタの 調停に失敗」) というメッセージが出るというものです。これはそれなりの時 間(50us)が経過した後、LANCE ドライバがバスにアクセスできない場合に出力 されます。通常、バスマスタ DMA のマザーボードへの実装が壊れているか、 他のデバイスがバスを独占してしまっているか、あるいは DMA チャネルの衝 突があることを示しています。BIOS セットアップに `GAT option'(Guaranteed Access Time、保証アクセス時間)という項目があれば、 この設定を切替え/変更してみて、それで問題の改善するかどうかを調べてく ださい。 また、このドライバが有効なカードについて見るアドレスは 0x300, 0x320, 0x340, 0x360 だけであり、起動時の引き数の ether= で指定したアドレスは 黙って無視される(これは修正されるでしょう)点に注意してください。した がって今のところは、お使いのカードが必ず上記の I/O アドレスのいずれか を使うように設定しましょう。 このドライバは、たとえ 16MB 以上のメモリを積んでいても動作します。とい うのも、低位メモリの `bouce-buffer' が必要に応じて使われるからです(つ まり、16MB より上位のアドレスからのデータは、送信するためにカードに渡 される前に 16MB 以下の位置にあるバッファにコピーされます)。 DMA チャネルは、他では使用されていない dev->mem_start の値(別名 PARAM_1)の低位ビットによって設定できます(``PARAM_1'' 参照)。もし設定さ れていないと、空いている DMA チャネルを順番に有効にすることにより検出 し、初期化に成功するかどうかをチェックします。 HP-J2405A ボードは例外です: このボードに関しては、EEPROMに設定された IRQ と DMA の値を読み出すのは簡単です。 これらのチップに関する詳細な情報については、 ``AMD ... に関する注意'' を参照してください。 5.4.2. AMD 79C965 (PCnet-32) ステータス: サポート、ドライバ名: pcnet32 これは PCnet-32 です -- VLバスおよびローカルバスシステムのために、元々 の LANCE を 32 ビットバスマスタ版にしたものです。これらのチップは標準 の lance.c ドライバで操作できるはずですが、32 ビット版 (pcnet32.c) も 利用可能です。ISA バスに関連する 16MB の制限を気にする必要がありませ ん。 5.4.3. AMD 79C970/970A (PCnet-PCI) ステータス: サポート、ドライバ名: pcnet32 これは PCnet-PCI です -- PCnet-32と似ていますが、PCI バスベースのシス テム用に設計されています。先述の PCnet-32 の情報を見てください。した がって、PCI BIOSサポートを有効にして、カーネルを再構築する必要がありま す。79C970A では、元々の 79C970 に対して全二重のサポート等のいくつかの 機能が追加されています。 79C970 の Boca による実装は、高速な Pentium マシンでは正しく動作しない ことに注意してください。これはハードウェアの問題であり、DOS ユーザにも 影響します。詳しくは Boca についての章を参照してください。 5.4.4. AMD 79C971 (PCnet-FAST) ステータス: サポート、ドライバ名: pcnet32 これは PCI システム用に AMD が出した 100M ビットチップです。これは全二 重の動作もサポートしています。このチップは 1996 の 6 月に登場しまし た。 5.4.5. AMD 79C972 (PCnet-FAST+) ステータス: 不明、ドライバ名: pcnet32 このチップも 79C971 と全く同じように動作するはずですが、まだ確認してい ません。 5.4.6. AMD 79C974 (PCnet-SCSI) ステータス: サポート、ドライバ名: pcnet32 これは PCnet-SCSIです -- イーサネットという観点では、基本的に 79C970 と同様に扱われます。前述の情報も参照してください。チップの SCSI 機能の 方がサポートされているかどうかは聞かないでください -- この文書は Ehternet-HOWTO であって、SCSI-HOWTO ではないですから。 5.5. Ansel Communications 5.5.1. AC3200 EISA ステータス: 準サポート、ドライバ名: ac3200 make config の際にこのドライバを選べるようにするためには、最初の ``Prompt for development and/or incomplete code/drivers?'' の問いに `Y' と答える必要が未だにあります。この理由は単純で、このカードが珍しい ためにドライバの安定性についてのフィードバックがないからです。 このドライバはアルファテスト段階のドライバとして現在のカーネルに入って います。このドライバは ne2000 や wd80x3 カードで使われている一般的な NS8390 チップに基づいています。α版のドライバに関する重要な情報につい ては、このドキュメントの ``アルファ版ドライバ'' の節をご覧ください。 このドライバを使ったなら、どうなったのかを我々に教えてください。という のも、バージョン 1.1.25 のカーネルからこのドライバが入っているにも関わ らず、フィードバックがほとんどないからです。 このドライバをモジュールとして使うつもりであれば、 ``イーサネットドラ イバをモジュールとして用いる場合'' を見て、モジュール固有の情報を調べ るとよいでしょう。 5.6. Apricot 5.6.1. Apricot Xen-II On Board Ethernet ステータス: 準サポート、ドライバ名: apricot このオンボードイーサネットは i82596 バスマスタチップを使用しています。 このチップは I/O アドレス 0x300 にしか存在できません。ドライバのソース を見たところ、IRQ も 10 がハードコーディングされているようです。 初期のバージョンのドライバは、0x300 に存在するのは全て apricot の NIC であるとみなす癖があります。後に、このような誤検出を避けるためにハード ウェアアドレスのチェックが行なわれるようになりました。 5.7. Arcnet ステータス: サポート、ドライバ名: arcnet (arc-rimi, com90xx, com20020) 大変安価で良好なイーサネット性能を有し、Arcnet のハードウェアを無料で 放出するところがあったため、家庭内 LAN を Arcnet で構築するケースがか なりあります。 Arcnetの利点は、全てのカードが同一のインタフェースを持っていること で、1つのドライバで全てに対応できるわけです。また、エラー処理が組み込 まれているので、パケットを失うことは無いと思われます。 (UDPのトラ フィックには素晴らしいことです!) Avery Pennarun の archnet ドライバは、1.1.80 以降の標準のカーネルソー スに入っています。arcnetドライバは、イーサネットの通常のデバイス `eth0' ではなく `arc0' をデバイス名として使用します。バグレポートや、 成功報告は以下のアドレスへメールしてください: apenwarr@foxnet.net ジャンパの設定や一般的なヒントについては、標準カーネルに含まれている ファイルに情報があります。 このドライバはたぶん 100Mbps の ARCnet カードでも動作することでしょう! 5.8. AT&T AT&Tの StarLANは SyOptics や LattisNet と同じく、他から孤立している技 術です。どちらも「しゃべる」ことができるハブがなければ、標準的な 10Base-T 環境では使用できません。 5.8.1. AT&T T7231 (LanPACER+) ステータス: 未サポート これらの StarLAN カードは i82586 チップと似たインタフェースを使用して います。一時期、Matthijs Melchior (matthijs.n.melchior@att.com) は 3c507 ドライバと戯れており、ほとんどうまく動作していたようです。それ以 降あまり噂は聞かれません。 5.9. Boca Research そう、Boca はマルチポートシリアルカードだけを作っているわけではありま せん :-) 5.9.1. Boca BEN (ISA, VLB, PCI) ステータス: サポート、ドライバ名: lance, pcnet32 これらのカードは AMD の PCnet チップをベースにしています。視野の広い買 い手なら、多くのユーザがこのカードの VLB/PCI 版で絶えず問題に遭い続け ていることを知っておくべきでしょう。特に高速な Pentium を使っている人 が問題に遭遇しています。これはドライバの問題ではないことに注意しましょ う。というのも、DOS/Win/NT のユーザも同じ目に遭っているからです。Boca の技術サポートの電話番号は (407) 241-8088 です。 75300.2672@compuserve.com でも連絡することができます。比較的古い ISA カードでは、この問題は起こらないようです。 Donald は Boca の PCI カードおよび、これと似た実装の Allied Telsyn PCnet/PCI の比較テストを行いました。これによって、問題は Boca による PCnet/PCI チップの実装に問題があることが明らかになりました。このテスト 結果は Donald の WWW ページで見ることができます: Linux at CESDIS Boca は問題に出会ったユーザに対して「保証に基づく修理」を行っていま す。修理としては足りないコンデンサの追加が行われますが、多くの場合はこ れで 100% 動作するわけではないようです。ただしある程度は良くなります。 それでもこれらのカードを買おうと思っているのなら、せめて 7 日間の無条 件返品ができるようにしておきましょう。そうすれば、お使いのシステムでう まくカードが動作しなくても返品することができます。 AMD チップに関するもっと詳しい情報は ``AMD LANCE'' にあります。 AMD LANCE ベースのイーサネットカードに関するもっと技術的な情報は、 ``AMD ... に関する注意'' の節に書かれています。 5.10. Cabletron Donald は次のように書いています: 「そう、この会社もプログラム情報を出 そうとしないやつらの一つだ。連中は全部の情報が非公開であることを実際に 確かめるのに何ヵ月もかけ、わざと私の時間を無駄にしてくれた。できるなら ば、連中のカードは疫病のように避けてほしい。何人かの人が Cabletron に 電話をかけて、『Donald Becker さんが Linux 用のドライバを開発中です』 みたいなことを言われたそうだ。これでは私が連中のために作業しているよう に聞こえるが、これは間違いだ」 Donald が上記のコメントを数年前に出してから、Cabletron はプログラミン グに関する方針を(Xircom のように)変えたようです。これを確かめたかった り、プログラミング情報について問い合わせたければ、 support@ctron.com に電子メールを送りましょう。しかし現在では、古い E20xx カードや E21xx カードのドライバの修正や更新の需要はほとんどないでしょう。 5.10.1. E10**, E10**-x, E20**, E20**-x ステータス: 準サポート、ドライバ名: ne (+8390) これらは NEx000とほとんどクローンといっていいカードであり、標準の NEx000ドライバで動作すると報告されています。検出中の ctron 専用チェッ クのおかげです。何らかの問題があっても修正されることはないでしょう。と いうのも、プログラム情報が入手できないからです。 5.10.2. E2100 ステータス: 準サポート、ドライバ名: e2100 (+8390) 繰り返しになります が、プログラム情報が非公開な状況でできることは限られています。E2100は 設計がまずいです。パケット転送時に共有メモリをマッピングする際に、これ を必ず 128K の領域全体へマッピングしてしまいます! このことは、E2100 を もう一枚使う場合も含めて、この領域では他の割り込み駆動型の共有メモリデ バイスを安全に使用できないことを意味します。ほとんどの時間は動作します が、ある時間ごとに 1 回はあなたにかみつくことになります。(ええ、この問 題はパケットの転送中に割り込みを殺すことで回避できますが、ほとんどの場 合、クロックの同期が取れなくなってしまいます。) また、ボードのプログラ ムを誤ったり、悪いタイミング時にマシンを停止させると、リセットボタンを 押しても復帰できなくなります。電源を落して、そのまま 30 秒ほど待たなく てはなりません。 メディア(ケーブル)の選択は自動ですが、dev->mem_end パラメータの下位 ビットにより変更できます。 ``PARAM_2'' を参照してください。モジュール を使う場合には、 /etc/conf.modules の オプション として xcvr=N を指定 することもできます。 また、E2100 を NE2100 のクローンと混同しないでください。E2100 は NatSemi の DP8390 を用いて共有メモリで動作するように設計されており、お おざっぱに言えば頭のいかれた WD8013 に似ています。一方 NE2100(および NE1500)は AMD LANCE を用いてバスマスタで動作するように設計されていま す。 標準カーネルにE2100ドライバが含まれています。しかし、プログラム情報が 得られないので、バグフィックスを期待しないでください。すでにこのカード で困ったことになっている場合を除いては、これを使用しないようにしてくだ さい。 このドライバをローダブルモジュールとして使用するつもりなら、 ``イーサ ネットドライバをモジュールとして用いる場合'' の節を見てモジュール固有 の情報を調べるべきでしょう。 5.10.3. E22** ステータス: 準サポート、ドライバ名: lance Cabletron の技術報告に載っている情報によると、これらのカードは標準の AMD PC-Net チップセット( ``AMD PC-Net'' を参照)を使っているので、汎用 の lance ドライバで動作するはずです。 5.11. Cogent Cogent の連絡先を示します: Cogent Data Technologies, Inc. 175 West Street, P.O. Box 926 Friday Harbour, WA 98250, USA. Cogent 営業部 15375 S.E. 30th Place, Suite 310 Bellevue, WA 98007, USA. 技術サポート: Phone (360) 378-2929 between 8am and 5pm PST Fax (360) 378-2882 Compuserve GO COGENT 掲示版サービス (360) 378-5405 インターネット: support@cogentdata.com 5.11.1. EM100-ISA/EISA ステータス: 準サポート、ドライバ名: smc9194 これらのカードは SMC 91c100 チップを使っているので、SMC 91c92 ドライバ で動作すると思いますが、まだ確認されていません。 5.11.2. Cogent eMASTER+, EM100-PCI, EM400, EM960, EM964 ステータス: サポート、ドライバ名: de4x5, tulip これらは標準の DEC 21040 ドライバで良好に動作するはずである、21040 の 実装の 1 つです。 EM400 および EM964 は DEC 21050 ブリッジと 4 つの 21040 チップを使用し た、4 ポートのカードです。 ``DEC 21040'' にこれらのカードに関する詳細な情報と、ドライバの現状が書 かれています。 5.12. Compaq Compaq は実際にはイーサネットカードの製造・販売は行っていませんが、多 くの Compaq のシステムでは、マザーボード上にイーサネットコントローラが 組み込まれています。 5.12.1. Compaq Deskpro / Compaq XL (AMD のチップを組み込み) ステータス: サポート、ドライバ名: pcnet32 XL シリーズのようなマシンでは、マザーボードに AMD 79c97x PCI チップが 載っており、標準の LANCE ドライバで利用できます。しかし、使えるように するためには、いくぶんトリッキーなことを行って、PCI BIOS を Linux から 見えるところに置かなければなりません。親切にも Frank Maas が詳しい手順 を提供してくれました: 「しかし、この Compaq のマシンでの問題点は、PCI ディレクトリがハイメモ リ領域の Linux カーネルから見えない(カーネルが見ようとしない)場所にロ ードされることです。その結果、カードは決して検出されませんし、使えるよ うにもなりません(その他にもマウスも動作しません)。これを回避する方 法(http://www-c724.uibk.ac.at/XL/ で非常に詳しく説明されていま す)は、MS-DOS をロードして Compaq が作った簡単なドライバを実行し、その 後に LOADLIN を使って Linux カーネルをロードすることです。いいでしょ う。「うげぇ、DOS かよー」と言う時間をあげます。しかし、今のところは私 が知っている解決方法はこれだけです。DOS 用の簡単なドライバは単に、PCI ディレクトリを通常格納する場所(そして Linux が見つけられる場所)に配置 します」 AMD チップについてのもっと一般的な情報は、 ``AMD LANCE'' に書いてあり ます。 5.12.2. Compaq Nettelligent/NetFlex (組み込みの ThunderLAN チップ) ステータス: サポート、ドライバ名: tlan このシステムは Texas Instruments の ThunderLAN チップを使っています。 ThunderLAN のドライバ情報は ``ThunderLAN'' をご覧ください。 5.13. Danpex 5.13.1. Danpex EN9400 ステータス: サポート、ドライバ名: de4x5, tulip DEC 21040 チップをベースにしている別のカードです。うまく動作と報告され ており、かつ比較的安価です。 これらのカードのついての詳しい情報と現在のドライバの状況については ``DEC 21040'' をご覧ください。 5.14. D-Link 5.14.1. DE-100, DE-200, DE-220-T, DE-250 ステータス: サポート、ドライバ名: ne (+8390) 初期の D-Link カードの一部は、PROM に 0x57 のシグネチャがありません が、ne2000 ドライバはこれらを識別します。ソフトウェアで設定できるカー ドの場合には、www.dlink.com からカード設定プログラムを入手しましょ う。DE2** カードは、初期バージョンの Linux で偽造転送アドレス不一致エ ラーがあると最も幅広く報告されたカードです。Digital(DEC) も DE100, DE200 という名前の製品を出していますが、似ているのは名前だけです。 5.14.2. DE-520 ステータス: サポート、ドライバ名: pcnet32 これは AMD LANCE チップの PCI バージョンを使用した PCI カードです。DMA の選択とチップの番号に関する情報は ``AMD LANCE'' にあります。 AMD LANCEベースのイーサネットカードに関する詳細な技術情報は、 ``AMD ... に関する注意'' の節にあります。 5.14.3. DE-528 ステータス: サポート、ドライバ名: ne, ne2k-pci (+8390) D-Link も PCI 版の NE2000 互換カードを作り始めたようです。 5.14.4. DE-530 ステータス: サポート、ドライバ名: de4x5, tulip これは一般的なDEC 21040 PCI チップの実装で、汎用 21040 tulip ドライバ で動作することが報告されています。 これらのカードに関する詳細な情報とドライバの現状については ``DEC 21040'' を参照してください。 5.14.5. DE-600 ステータス: サポート、ドライバ名: de600 ラップトップのユーザや、コンピュータを手っ取り早くイーサネットに接続し たいユーザは、このカードを使うとよいでしょう。ドライバは標準のカーネル ソースに含まれています。Bjorn Ekwallbj0rn@blox.se がドライバを書きまし た。パラレルポート経由で 180kb/s 程度の転送速度が期待できます。カーネ ルソースの README.DLINK ファイルを読んでおくべきでしょう。 ifconfig に渡すデバイス名は今は eth0 となっており、以前使われていた dl0 ではありません。 パラレルポートのアドレスが標準の 0x378 でない場合、再コンパイルする必 要があります。Bjorn は書いています: 「DE-620ドライバはループの最後のマ イクロ秒を縮めようとしているため、irq とポートのアドレスを変数ではなく 定数にしています。これで良好な速度を得ることができますが、逆にこれらの 割り当てを(例えば lilo などを用いて)変更することはできません。再コンパ イルが必要です…」また、ラップトップの中にはオンボードのパラレルポート を、モノクロカードが存在する/していた 0x3bc に実装しているものもある点 に注意してください。 5.14.6. DE-620 ステータス: サポート、ドライバ名: de620 DE-600 と同様に、2 つの出力フォーマットしか持っていません。Bjorn はバ ージョン 1.1 以降のカーネル用に、このモデルのためのドライバを書きまし た。 DE-600 に関する先述の情報を参照してください。 5.14.7. DE-650 ステータス: 準サポート、ドライバ名: de650 (?) ノートパソコンでこの PCMCIA カードを使用している人がいます。これは基本 的な 8390 の設計で、NE2000 によく似ています。LinkSys PCMCIA カードと IC-Card Ethernet(Midwest Microから入手できます)もたぶん DE-650 クロー ンであると思われます。現時点では、標準カーネルには含まれておらず、パッ チを当てる必要があるかもしれません。 この文書の ``PCMCIA のサポート'' の節を参照してください。また可能なら ば以下の WWW ページをご覧ください: Don's PCMCIA Stuff 5.15. DFI 5.15.1. DFINET-300 and DFINET-400 ステータス: サポート、ドライバ名: ne (+8390) これらのカードは、現在(0.99pl15 以降)は認識されるようになりました。こ れは、PROM の 14 および 15 バイト目の 0x57 の代わりに先頭 3 バイトに `DFI' が書き込まれていると指摘してくれた Eberhard Moenkeberg (emoenke@gwdg.de)のおかげです。0x57というのは、全ての NE1000 と NE2000 カードが使用しています。 (300 はほぼ NE1000のクローンの 8 ビットカード で、400 はほぼ NE2000 のクローンです。) 5.16. Digital / DEC 5.16.1. DEPCA, DE100/1, DE200/1/2, DE210, DE422 ステータス: サポート、ドライバ名: depca ソースファイル `depca.c' にドキュメントが含まれており、1 台のマシンに 複数のカードを載せる方法が書かれています。DE422 は EISA のカードである ことに注意してください。 これらのカードは全て AMD LANCE チップをベー スにしています。詳細な情報については ``AMD LANCE'' を参照してくださ い。ISA カードは同時に最大 2 枚しか使えません。なぜなら、ベース I/O ア ドレスには 0x300 と 0x200 しか設定できないからです。もし 2 枚挿しする 予定なら、標準のカーネルソースに含まれているドライバのソースファイル depca.c の中の注意書きを読んでください。 このドライバは Alpha CPU ベースのマシンでも動作するでしょう。またユー ザが戯れることのできる ioctl() がたくさんあります。 5.16.2. Digital EtherWorks 3 (DE203, DE204, DE205) ステータス: サポート、ドライバ名: ewrk3 DE200 のような初期のカードが LANCE のチップを使用していたのとは異な り、これらのカードは DEC 独自のチップを使用しています。共有メモリとプ ログラムド I/O のどちらもサポートしていますが、PIO モードの方が 50% 性 能が向上します。共有メモリのサイズは 2kB, 32kB, 64kB に設定できます が、このドライバでテストされているのは 2kB と 32kB だけです。 David に よると、2kB でも 32kB でもほぼ同等の性能が出るそうです。ドライバファイ ル ewrk3.c の先頭と README.ewrk3 に、より詳細な情報 (ドライバをローダ ブルモジュールとして使用する方法も含む)があります。どちらのファイルも 標準カーネルに含まれています。このドライバは depca.c と同じく Alpha CPU もサポートしています。 標準ドライバには、数多くの興味深いioctl()呼び出しが含まれています。こ れらを用いると、パケットの送受信状況の取り出しや消去や EEPROM の読み書 き、ハードウェアアドレスの変更等が行えます。ハッカーであれば、ソースコ ードを読むことにより、これらについてより多くの情報を得られます。 David は他のツールとともに、このカード用に設定ソフトも作成しました (DOS プログラム NICSETUP.EXE もあります)。これらのソフトはほとんどの Linux FTP サイトの /pub/Linux/system/Network/management ディレクトリに あります -- ewrk3tools-X.XX.tar.gz というファイルを探してください。 5.16.3. DE425 EISA, DE434, DE435, DE500 ステータス: サポート、ドライバ名: de4x5, tulip これらのカードは以下で述べる 21040 チップベースです。DE500 は 10/100Mbps 接続を実現するため、21140 チップを使っています。詳しい情報 については、後述の 21040 に関するセクションをご覧ください。このドライ バを使う DEC 製でないカード用のコンパイル時オプションもいくつかありま す。詳しくは README.de4x5 を見てください。 全ての Digital のカードはメディア(訳注: ケーブル種別)を自動検出します (ただし DE500 は特許関連の問題で一時的に例外となっています)。 このドライバも Alpha CPU 対応で、またモジュールとしてロードすることが 可能です。ioctl() 呼び出しを用いてドライバ内部にアクセスすることが可能 です - 具体的な方法については `ewrk3' ツールとソースファイル de4x5.c をご覧ください。 5.16.4. DEC 21040, 21041, 2114x, Tulip ステータス: サポート、ドライバ名: de4x5, tulip DEC 21040 は Digitalが販売しているバスマスタ型のワンチップイーサネット です。 AMD の PCnetチップに似ています。21040 は特に PCI バスアーキテク チャ用に設計されています。SMC の新しい EtherPower PCI カードがこのチッ プを使用しています。 このチップを使用したカードではドライバの選択肢が 2 つあります。前述の DE425 ドライバと、汎用 21040 `tulip' ドライバです。 警告: お使いのカードがこのチップをベースにしていても、あなたの環境でド ライバが動作するとは限りません。 David C. Davies によると: 「`tulip.c' または `de4x5.c' が、ドライバが対応しているカード以外の全 ての DC2114x ベースのカードで動作する保証はありません。『なぜ?』と思う かもしれません。これは汎用目的レジスタ(CS12)というレジスタがあり、 (1)DC21140A ではベンダごとにプログラムされていて異なる動作を行い、 (2)DC21142/3 ではこれは(DC21041 風の) SIA 制御レジスタになっているから です。唯一の希望の光は、SROM をデコードして、ドライバを設定する手助け を行えることです。しかしこれは保証されている解決方法ではありません。な ぜなら、一部のベンダ(例えば SMC 9332 カード)は Digital Semiconductor が推奨している SROM プログラミング形式に準拠していないからです」 技術的でない言葉で言えば、DC2114x を使っている未知のカードが Linux 用 のドライバで動作するかどうかわからなければ、カードを購入する前に、返品 できることを確かめておくことです。 最近の SMC EtherPower カードのほとんどでは、従来の 21040 の代わりに、 変更を受けた 21041 チップも見受けられます。21140 は 100Base-? をサポー トするもので、21040 チップ用 Linux ドライバで動作します。DEC 製でない カードで Davidの de4x5 ドライバを使用するには、詳細について README.de4x5 を御一読ください。 Donald は `tulip' ドライバを開発するために SMC EtherPower-10/100 カー ドを使用していました。現時点で標準カーネルに含まれているドライバは、最 新バージョンではないことに注意してください。このドライバを使用して問題 があれば、Donald の ftp/WWW サイトから最新版を入手してください。 Tulip Driver 上記の URL には 21040 を使用した(完全網羅ではないですが)様々なカード/ ベンダのリストもあります。 現時点では、tulip ドライバはまだアルファ版ドライバとみなされていること に注意してください( ``アルファ版ドライバ'' 参照)。ですからそれなりの意 識を持って使用してください。これを使用するには、arch/i386/config.in を 編集し、CONFIG_DEC_ELCP のサポートに関するの行のコメントを外さなくては なりません。 Donald は tulip ドライバのサポート案内などのためのメーリングリストも用 意しています。これに参加するには以下のコマンドを実行します: echo subscribe | /bin/mail linux-tulip-request@cesdis.gsfc.nasa.gov 5.17. Farallon Farallon は EtherWave アダプタとトランシーバを売っています。このデバイ スは複数の 10BaseT デバイスをデイジーチェーン接続できます。 5.17.1. Farallon Etherwave ステータス: サポート、ドライバ名: 3c509 これは EtherWave トランシーバを内蔵した 3c509 のクローンであると報告さ れています。これらのカードを Linux で 3c509 ドライバを用いて多くの人が 利用しています。一般的な用途には高価すぎますが、特別な場合にはよい選択 肢です。Hubletの価格は $125 からで、EtherWave はボードの値段の $75-$100 増しというところです。ホスト 1 台ぶんだけネットワーク配線が足 りないなら価値があるけれど、ホストを 2 台追加したいならお金の無駄で す。 5.18. 富士通 多くのネットワークチップのメーカーと異なり、富士通は自社のチップをベー スにしたネットワークカードの製造と販売を行っています。 5.18.1. Fujitsu FMV-181/182/183/184 ステータス: サポート、ドライバ名: fmv18x ドライバによると、これらのカードは富士通 MB86965 をそのまま実装したも のです。そのため Allied Telesis AT1700 カードにとても似ています。 5.19. Hewlett Packard 272** カードは NE*000 ボードと同様にプログラムド I/O を使用しますが、 データ転送ポートはアクセスしない場合には `OFF' にできますので、自動検 出を行うドライバで生じる問題を回避できます。 HP のハードウェアのバージョン番号に関して、この節にあった混乱を整理す るにあたって、Glenn Talbott が協力してくれました。 5.19.1. 27245A ステータス: サポート、ドライバ名: hp (+8390) 8 ビットの 8390ベースの 10BaseT で、8 bitであるという理由だけでお勧め できません。2、3年前に集積度を上げるため再設計されましたが、初期化タイ ミングに変化したものがあり、テストプログラムには影響が出ましたが、LAN ドライバには関係ありませんでした。(ループバックモードへあるいはループ バックモードから切り替わった直後は、新しいカードは `ready' 状態になっ ていません。) このドライバをローダブルモジュールとして使用するなら、モジュール特有の 情報について ``イーサネットドライバをモジュールとして用いる場合'' の節 を見てください。 5.19.2. HP EtherTwist, PC Lan+ (27247, 27252A) ステータス: サポート、ドライバ名: hp+ (+8390) HP PC Lan+ は標準的な HP 製 PC LAN カードとは異なっています。このドラ イバはバージョン 1.1.x の開発サイクルの中で標準カーネルのドライバリス トに追加されました。ne2000の ような PIOモード でも、wd8013 のような共 有メモリモードでも動作します。 47B は 16 ビットの 8390 ベースの 10BaseT w/AUI で、52A は 16 ビットの 8390 ベースの 10Base2 w/AUI です。これらのカードは、通常の 16k ではな く 32k の送受信パケット用のバッファ RAM をボード上に持っており、どちら も使用しているコネクタの自動認識機能を備えています。 このドライバをローダブルモジュールとして使用するなら、モジュール特有の 情報について ``イーサネットドライバをモジュールとして用いる場合'' の節 を見てください。 5.19.3. HP-J2405A ステータス: サポート、ドライバ名: lance これらは 27247/27252A よりは低価格でかつ高速ですが、たとえば AUI や ThinLAN との接続性、起動 PROM ソケットのような機能がいくつか省かれてい ます。これはかなり一般的な LANCE の設計ですが、ちょっとした設計の違い により汎用の `NE2100' ドライバとは互換性がありません。このカード専用の サポート(ボードからのDMAチャネルの読み出しを含みます)は、HP の Glenn Talbott からの情報提供のおかげで採り入れることができました。 LANCE ベースのカードに関する、より詳しい技術情報については ``AMD ... に関する注意'' をご覧ください。 5.19.4. HP-Vectra オンボードイーサネット ステータス: サポート、ドライバ名: lance HP-Vectra はマザーボード上に AMD PCnet チップが載っています。DMA の選 択とチップの番号に関する情報については ``AMD LANCE'' をご覧ください。 LANCE ベースのカードに関する、より詳しい技術情報については ``AMD ... に関する注意'' をご覧ください。 5.19.5. HP 10/100 VG Any Lan Cards (27248B, J2573, J2577, J2585, J970, J973) ステータス: サポート、ドライバ名: hp100 このドライバは Compex VG 製品の一部もサポートしています。このドライバ は ISA, EISA, PCI カードをサポートしているので、カーネルソースの make config を実行する際には、ISA カードの設定に出てきます。 5.19.6. HP NetServer 10/100TX PCI (D5013A) ステータス: サポート、ドライバ名: eepro100 これらのカードは Intel EtherExpress Pro 10/100B カードの名前だけを変え たもののようです。詳しくは Intel の節を見てください。 5.20. IBM / International Business Machines 5.20.1. IBM Thinkpad 300 ステータス: サポート、ドライバ名: znet これは Intel ベースの Zenith Z-note と互換性があります。より詳細な情報 については ``Z-note'' を参照してください。 たぶん以下のサイトは、新しいバージョンの ThinkPad に関するわかりやすい データベースを公開しています。筆者自身はまだチェックしたことがないです が。 Thinkpad-info WWW ブラウザを利用できない方は、peipa.essex.ac.uk:/pub/tp750/ へ行って みてください。 5.20.2. IBM Credit Card Adaptor for Ethernet ステータス: 準サポート、ドライバ名: ? (カーネルと別配布) Linux でもこの PCMCIA カードが使われています。他の PCMCIA と同じような ことが当てはまり、ノートパソコンの PCMCIA チップセットがサポートされて いることと、標準カーネルに PCMCIA サポートを追加することが必要です。 この文書の ``PCMCIA のサポート'' の節をご覧になり、可能であれば以下の ページも見てください: Don's PCMCIA Stuff 5.20.3. IBM トークンリング ステータス: 準サポート、ドライバ名: ibmtr トークンリングをサポートするには、単にデバイスドライバを書くだけではな く、トークンリング用のソースルーティングルーチンも書く必要があります。 ソースルーティングを書くのにもっとも時間がかかります。 Peter De Schrijver は最近トークンリングに時間を割き、IBM ISA および MCA トークンリングカードに関する作業を行ないました。 現在のトークンリング用のコードは、1.3.x 系列の最初の方のカーネルで取り 込まれました。 Peter は、元々 MCA 16/4 メガビットトークンリングボードでテストを行った けれど、他の Tropic ベースのボードでも動作するはずだと言っています。 5.21. ICL 製イーサネットカード 5.21.1. ICL EtherTeam 16i/32 ステータス: サポート、ドライバ名: eth16i Mika Kuoppala (miku@pupu.elt.ici.fi)がこのドライバを書きました。バー ジョン 1.3.4x 初期のカーネルへ取り込まれました。at1700 カードでも使用 されている富士通の MB86965 チップを使用しています。 5.22. Intel 製のイーサネットカード Intel による各種カードの名前の付け方は、良くて曖昧か紛らわしいです。信 じられないなら、カードに載っているメインのチップの i8xxxx の番号を調べ るか、PCI カードの場合には /proc ディレクトリにある PCI 情報を調べて、 これを以下に示す番号と比べてください。 5.22.1. Ether Express ステータス: サポート、ドライバ名: eexpress このカードは i82586 を使っています。このドライバの初期バージョン(バー ジョン 1.2 のカーネル)ではアルファテスト版ドライバとして分類されていま した。というのも、ほとんどの環境でうまく動作しなかったからです。バー ジョン 2.0 のカーネルに入っているドライバは試した方々によるとずっとう まく動作しているようですが、ドライバのソースはこれをまだ実験的なものと してリストしていますし、高速なマシンでは問題が起きやすいようです。 ドライバソースリストの先頭部分のコメントでは、これらのカードで起こる問 題がいくつか列挙されています(直っています!)。ドライバ中の全ての outb を outb_p に置き換える、速度を落とすためのハックにより固まることが避け られるという報告が少なくとも 1 人のユーザから寄せられています。 5.22.2. Ether Express PRO/10 ステータス: サポート、ドライバ名: eepro Bao Chau Ha がこれらのカード用ドライバを書き、これは初期の 1.3.x カー ネルに取り込まれました。i82595 チップを使用した Compaq の内蔵イーサ ネットシステムの一部でもこのドライバが動作するかもしれません。 5.22.3. Ether Express PRO/10 PCI (EISA) ステータス: 準サポート、ドライバ名: ? (別配布されています) John Stalba (stalba@ultranet.com) が PCI 用のドライバを書きました。こ れらのカードは PLX9036 PCI インタフェースチップを Intel i82596 LAN 制 御チップと組み合わせて使っています。お使いのカードに i82557 チップが 載っていたら、それはこのカードではなく次に説明するバージョンなので、 EEPro ドライバではなく EEPro100 ドライバを使いましょう。 PRO/10 PCI カード用のアルファ版ドライバと、その使い方の説明は以下の場 所から入手できます: EEPro10 Driver EISA カードをお使いならば、ドライバを少しハックして、PCI と EISA のそ れぞれで使われる異なる検出機構に対応しなければなりません。 5.22.4. Ether Express PRO 10/100B ステータス: サポート、ドライバ名: eepro100 このドライバは古い 100A カードでは動作しない点に注意してください。ドラ イバ内で挙げられているチップ番号は i82557/i82558 です。ドライバの更新 やドライバのサポートについては、以下の WWW ページを見てください: EEPro-100B Page このドライバに関するメーリングリストに参加するには、以下のコマンドを実 行してください: echo subscribe | /bin/mail linux-eepro100-request@cesdis.gsfc.nasa.gov Donald は、本当はドライバのソースコードを公開できたはずなのに、守秘契 約を結ばなければならなかったようです! Intel は何てことしやがるんだ。 5.23. Kingston Kingston は様々なカードを作っています。これには NE2000+ や AMD PCnet ベースのカード、DEC tulip ベースのカードが含まれます。これらのカードの ほとんどは、それぞれに対応するドライバでうまく動作するはずです。 Kingston Web Page をご覧ください。 KNE40 という DEC 21041 tulip ベースのカードは、汎用 tulip ドライバでう まく動作すると報告されています。 5.24. LinkSys Linksys は何種類かの NE2000 クローンを作っています。普通の ISA カード や ISA のプラグ&プレイカードもありますし、サポートされている NE2000-PCI チップセットをベースにしている PCI の NE2000 互換カードもあ ります。ここに一覧を載せるにはモデルが多すぎます。 LinkSys は Linux に協力的であり、Linux 専用の WWW サポートページや、箱 に Linux 対応と書かれた製品まであります。以下の WWW ページを見てくださ い: http://www.linksys.com/support/solution/nos/linux.htm 5.24.1. LinkSys Etherfast 10/100 カード ステータス: サポート、ドライバ名: tulip これらのカードには、名前が同じであるにもかかわらずいくつかの「リビジョ ン」(つまり、異なるチップセットを使っているもの)があります。最初に使わ れていたのは DEC のチップセットです。2 番目のリビジョンで使われていた のは Lite-On PNIC 82c168 PCI ネットワークインタフェースコントローラで あり、そのサポートは標準の tulip ドライバに統合されました (バージョン 0.83 以降)。PNIC に関する詳しい情報は以下の WWW ページにあります: http://cesdis.gsfc.nasa.gov/linux/drivers/pnic.html これらのカードの各バージョンに関する詳しい情報は前述の LinkSys の WWW サイトにあります。 5.24.2. LinkSys Pocket Ethernet Adapter Plus (PEAEPP) ステータス: サポート、ドライバ名: de620 これは DE-620 のクローンと思われ、de620 ドライバでうまく動作すると報告 されています。詳しい情報については ``DE-620'' を参照してください。 5.24.3. LinkSys PCMCIA アダプタ ステータス: サポート、ドライバ名: de650 (?) これは DE-650 のロゴ違いであると思われます。詳しい情報については ``DE-650'' を参照してください。 5.25. Microdyne 5.25.1. Microdyne Exos 205T ステータス: 準サポート、ドライバ名: ? i82586 ベースのカードの 1 つです。Dirk Niggemann dirk-n@dircon.co.uk が、彼曰く「プレアルファ」という状態のドライバを書きました。多くの人に テストして欲しいそうです。詳細については、彼にメールを出してください。 5.26. Mylex Mylex に何か問い合わせたいことがある場合の連絡先は以下の通りです。 MYLEX CORPORATION, Fremont Sales: 800-77-MYLEX, (510) 796-6100 FAX: (510) 745-8016. WWW サイトもあります: Mylex WWW Site 5.26.1. Mylex LNE390A, LNE390B ステータス: サポート、ドライバ名: lne390 (+8390) これはかなり古い EISA カードで、wd80x3 に似た共有メモリを使っていま す。これらのカード用のドライバは、現在の 2.1.x 系列のカーネルで利用で きます。共有メモリのアドレスは必ず、1MB 以下の位置か、マシンに物理的に 載っている RAM の最大アドレスよりも高い位置にしてください。 5.26.2. Mylex LNP101 ステータス: サポート、ドライバ名: de4x5, tulip これは DEC の 21040 チップを使用した PCI カードです。出力は 10BaseT, 10Base2, 10Base5 から選択できます。LNP101 カードは汎用 21040 ドライバ で動作することが確かめられました。 詳しくは 21040チップに関する節(``DEC 21040'') をご覧ください。 5.26.3. Mylex LNP104 ステータス: 準サポート、ドライバ名: de4x5, tulip LNP104 は DEC 21050チップを使って、4 つの独立した 10BaseT ポートを使え るようになっています。このカードは 21040ドライバ(IRQ の共有の方法を 知っている)で動作するはずですが、(筆者が知る限り)挑戦した人はまだいま せん。 5.27. Novell Ethernet, NExxxx やその互換品 頭の文字 `NE' は Novell Ethernet に由来します。Novell はもっとも安価な NatSemi のデータブック内の設計に従い、製造権をEagleに売りました(スピン オフ?)。そのおかげで安価なイーサカードが市場に出回ったのです。(いまで はどこにでもNE2000カードがあります。) 5.27.1. NE1000, NE2000 ステータス: サポート、ドライバ名: ne (+8390) NE2000 は今では NatSemi の 8390 チップだけで設計したカードの総称となっ ています。共有メモリではなくプログラムド I/O を使用しており、インスト ールは簡単ですが、性能が若干落ちますしいくつか問題があります。NE2000 で起こる一般的な問題の一部は ``NE1000 / NE2000 カード (およびクローン) の問題'' で挙げています。 一部の NE2000 クローンは、National Semiconductor 製の `AT/LANTic' 83905 チップを使用しており、wd8013 と同様な共有メモリモードと、EEPROM によるソフトウェア設定が可能です。共有メモリモードはプログラムド I/O モードも少ない CPU 消費で動作します(つまり、より効率的です)。 一般に、NE2000 のクローンを I/Oアドレス 0x300 に置くのは良い考えではあ りません。なぜなら、ほとんど全てのデバイスドライバが起動時にそのアドレ スを検出に行くからです。貧弱な NE2000 のクローンの中には間違った場所を つつかれることが苦手なものがあり、マシンを固まらせることで応答するので す。また 0x320 も良くありません。SCSI ドライバが 0x330 を検出しようと するからです。 Donald は全ての NE2000 カードで使える診断プログラム(ne2k.c)を書きまし た。詳細な情報については``診断プログラム''の節を参照してください。 このドライバをモジュールとして使用するなら、 ``イーサネットドライバを モジュールとして用いる場合'' の節を見てモジュール特有の情報を調べてく ださい。 5.27.2. NE2000-PCI (RealTek/Winbond/Compex) ステータス: サポート、ドライバ名: ne, ne2k-pci (+8390) ええ、信じるかどうかは別として、10 年以上も前の NE2000 のインタフェー ス設計に基づいて PCI カードを作っている人達がいます。現在はこのような カードのほとんどは RealTek 8029 チップか Winbond 89c940 チップをベース にしています。Compex, KTI, VIA, Netvin のカードはこれらのチップを使っ ているようですが、PCI ID は異なります。 最新のバージョン 2.0 のカーネルはこれらのカードを自動的に検出・使用す る機能をサポートしています。(カーネル 2.0.34 より古いカーネルを使って いるのならば、これらのカードが確実に検出できるようにカーネルの更新をす べきです。) 選択できるドライバは 2 つあります。昔からある ISA/PCI 用の ne.c ドライバと、比較的新しく PCI 専用である ne2k-pci.c ドライバです。 元々あった ISA/PCI ドライバを使うには、ISA カードが使うのと同じ NE2000 ドライバを本当に使う場合と同じように、make config を実行した時に `Other ISA cards' オプションに `Y' と答える必要があります。 (これらの カードは PCNet-PCI や DEC 21040 カードほど賢くないので、設定のヒントを 与える必要もあります。) 新しい PCI 専用ドライバが ISA/PCI ドライバと異なる点は、古い 8 ビット の NE2000 カードのサポートを無くしたことと、古い ISA NE2000 が信頼性の 高い操作を行うために必要であった通信の間の停止時間なしに、より大きなブ ロックでデータのやりとりを行うようにしたことです。その結果、ドライバは 少し小さく、かつ多少効率的になっていますが、普通に使っている分には気づ かないくらいしか差がないので、あまり期待しないでください。(少ない CPU 消費で最大の効率を得ることを本気で考えているのなら、そもそも PCI NE2000 を選ぶこと自体が間違いです。) ドライバの更新情報と詳しい解説に ついては以下の WWW ページをご覧ください: http://cesdis.gsfc.nasa.gov/linux/drivers/ne2k-pci.html 最新バージョンのドライバでも検出できない NE2000 PCI カードをお持ちなら ば、/usr/src/linux/MAINTAINERS に挙げられている NE2000 ドライバのメン テナに連絡してください。その際にはcat /proc/pci や dmesg の出力を添え ましょう。そうすれば、お使いのカードのサポートもドライバに追加できま す。 全く NE2000 と互換でないのに、「NE2000 互換」のステッカーを製品に貼っ ているカードメーカーがあることに注意してください(例: PCNet-PCI や RealTek 8139)。よくわからない場合には、メインのチップの番号とこの文書 を比べてみるとよいでしょう。 5.27.3. NE-10/100 ステータス: 未サポート これらは、National Semiconductor の DP83800 および DP83840 チップをベ ースにしている ISA 用 100Mbps カードです。現在はドライバのサポートはあ りませんし、他のドライバで動くという報告も全くありません。チップに関す る文書が 1 つの PDF ファイル以外にはなく、それもドライバを書くには情報 が不足しているという状況のようです。 5.27.4. NE1500, NE2100 ステータス: サポート、ドライバ名: lance これらのカードは AMD が出したオリジナルの 7990 LANCE チップを使用して おり、Linux の lance ドライバでサポートされています。新しい NE2100 ク ローンは、AMD の改良された PCnet/ISA チップを使用しています。 lance ドライバの初期のバージョンには、もともとの Novell/Eagle の 7990 カードから autoIRQ 機能を使って IRQ 線を得るのに問題がありました。現在 は修正されていると思います。そうでなければ、LILO 経由で IRQ を指定して やり、問題がまだ残っていることを私たちに連絡してください。 DMA の選択と、チップの番号に関する情報は ``AMD LANCE'' の節にありま す。 LANCE ベースのカードに関する技術情報は ``AMD ... に関する注意''の節に あります。 5.27.5. NE/2 MCA ステータス: 準サポート、ドライバ名: ne2 色々な会社が作った NE2000 マイクロチャネルカードがいくつかありました。 このドライバ(バージョン 2.2 のカーネルで使用可能)は、以下の MCA カード を検出します: Novell Ethernet Adapter NE/2, Compex ENET-16 MC/P, Arco Ethernet Adapter AE/2 5.27.6. NE3200 ステータス: 未サポート この古い EISA カードは 8 MHz の 80186 と i82586 を組み合わせて使ってい ます。このドライバに対する作業を行っている人はいません。というのも、カ ードの情報が入手できませんし、ドライバに対する実際の需要もないからで す。 5.27.7. NE3210 ステータス: サポート、ドライバ名: ne3210 (+8390) この EISA カードは NE3200 とは全く異なるカードであり、National Semiconductor の 8390 チップを使っています。ドライバはバージョン 2.2 のカーネルのソースツリーにあります。共有メモリのアドレスは必ず、1MB 以 下の位置か、マシンに物理的に載っている RAM の最大アドレスよりも高い位 置にしてください。 5.27.8. NE5500 ステータス: サポート、ドライバ名: pcnet32 これは単なる AMD PCnet-PCI カード (79C970A チップ) です。LANCE/PCnet ベースのカードについての詳しい情報は ``AMD LANCE'' にあります。 5.28. Proteon 5.28.1. Proteon P1370-EA ステータス: サポート、ドライバ名: ne (+8390) これは NE2000 クローンのようであり、Linux でうまく動作します。 5.28.2. Proteon P1670-EA ステータス: サポート、ドライバ名: de4x5, tulip これは DEC の Tulip チップをベースにしている PCI カードの一つです。こ のカードは Linux で動作することが報告されています。 ドライバの詳しい情報については、21040 チップに関する節 (``DEC 21040'') をご覧ください。 5.29. Pure Data 5.29.1. PDUC8028, PDI8023 ステータス: サポート、ドライバ名: wd (+8390) PureData PDUC8028 と PDI8023 シリーズのカードは、動作することが報告さ れています。Mike Jagdis jaggy@purplet.demon.co.uk が特別な検出コードを 作成してくれたおかげです。このサポートは WD ドライバに統合されていま す。 5.30. Racal-Interlan Racal Interlan には、WWW 経由の www.interlan.com でアクセスできます。 この会社は過去に MiCom-Interlan として知られていた会社であるはずです。 5.30.1. ES3210 ステータス: 準サポート、ドライバ名: es3210 これは EISA 8390 ベースの共有メモリカードです。実験的なドライバがバー ジョン 2.2 のカーネルに含まれており、うまく動作することが報告されてい ます。しかし EISA の IRQ と共有メモリアドレスの検出は(少なくとも)古い リビジョンのカードではうまく動作しないようです。(この問題は Linux 界に 固有のものではありませんが……。) この場合には、これらのパラメータをド ライバに指定する必要があります。例えば IRQ 5 で共有メモリ 0xd0000 のカ ードをモジュールドライバで使う場合には、options es3210 irq=5 mem=0xd0000 を /etc/conf.modules に追加してください。カーネルにドライ バを組み込む場合には、起動時に ether=5,0,0xd0000,eth0 を指定してくださ い。I/O のベース値は自動的に検出されるので、 0 を指定しなければなりま せん。 5.30.2. NI5010 ステータス: 準サポート、ドライバ名: ni5010 以前は古い 8 ビットの MiCom-Interlan カード用のドライバを別途入手しな ければならなかったのですが、現在は実験的なドライバがバージョン 2.2 の カーネルに入っています。 5.30.3. NI5210 ステータス: 準サポート、ドライバ名: ni52 このカードも Intel のチップを使っているものの一つです。 Michael Hipp がこのカード用のドライバを書きました。このドライバは標準「アルファ版」 のドライバとしてカーネルに含まれています。Michael はこのカードのユーザ からのフィードバックを求めています。Linux でアルファテスト版のイーサ ネットドライバを使用する際の重要な情報に関しては、 ``アルファ版ドライ バ''を参照してください。 5.30.4. NI6510 (EB ではありません) ステータス: 準サポート、ドライバ名: ni65 LANCE ベースの NI6510 にもドライバがあり、これも Michael Hipp によって 書かれました。繰り返しになりますが、これも「アルファ版」ドライバです。 いくつかの理由により、このカードは汎用 LANCE ドライバとの互換性があり ません。 Linuxでアルファテスト版のイーサネットドライバを使用する際の重 要な情報に関しては、 ``アルファ版ドライバ''を参照してください。 5.30.5. EtherBlaster (別名 NI6510EB) ステータス: サポート、ドライバ名: lance カーネル 1.3.23 の時点では、汎用 LANCE ドライバには 0x52, 0x44 という NI6510EB 固有の「署名」をチェックするコードが追加されていました。この 署名は NI6510EB 全てで同じではないと報告する人もいましたが、その場合は lance ドライバはカードを検出しません。検出できなかった場合には、検出コ ード(lance.c の322行付近)を printk() に変更してそのカードの値を表示さ せ、それからデフォルトの 0x52, 0x44 の代わりに得られた値を使用してくだ さい。 このカードは、lance ドライバで使用している場合は、たぶん NI6510 互換モ ードではなく、「高性能」モードで動作しているはずです。 5.31. RealTek 5.31.1. RealTek RTL8002/8012 (AT-Lan-Tec) ポケットアダプタ ステータス: サポート、ドライバ名: atp これはよく使われていて、AT-Lan-Tec および(多分)他の多くの会社によって 売られている低価格な OEM 向けポケットアダプタです。このアダプタ用のド ライバは、標準カーネルに含まれています。しっかりとした情報がドライバソ ースの `atp.c'ファイルに含まれています。 このデバイスに関して、ifconfig に渡すデバイス名は eth0 ではなく atp0 であることに注意してください。 5.31.2. RealTek 8009 ステータス: サポート、ドライバ名: ne (+8390) これは ISA NE2000 クローンであり、Linux の NE2000 ドライバでうまく動作 すると報告されています。rset8009.exe プログラムを RealTek の WWW サイ トである http://www.realtek.com.tw から入手できます。同じサイトから FTP で入手することもできます。 5.31.3. RealTek 8019 ステータス: サポート、ドライバ名: ne (+8390) これは上記カードの Plug and Pray (訳注: カードを挿したら「お祈 り(Pray)」する方のプラグ&プレイ)版です。DOS プログラムを使って PnP を 無効にし、ジャンパ無しの設定を行いましょう。使える I/O アドレスと IRQ を設定すれば使えるはずです(ドライバをモジュールとして使うなら、 /etc/conf.modules に io=0xNNN オプションを追加してください)。 rset8019.exe プログラムを RealTek の WWW サイトである http://www.realtek.com.tw から入手できます。同じサイトから FTP で入手 することもできます。 5.31.4. RealTek 8029 ステータス: サポート、ドライバ名: ne, ne2k-pci (+8390) これは NE2000 を 1 チップで実装した PCI カードです。現在はいろいろなベ ンダがこのチップを使ったカードを販売しています。これらのカードの使用に ついては ``NE2000-PCI'' の節を見てください。これは 10 年以上前の設計を 単に PCI バスにくっつけただけのものである点に注意してください。性能は 対応する ISA モデルより劇的に良いわけではありません。 5.31.5. RealTek 8129/8139 ステータス: 準サポート、ドライバ名: rtl8139 上記のチップとは別に、RealTek が出している PCI 用の 1 チップイーサネッ トです。このチップをベースにしているカード用のドライバは、バージョン 2.0.34 の Linux に入っています。現在、バージョン 2.2 のカーネルでこの ドライバを使うには、実験的なドライバを使うかどうかを聞かれた時に `Y' と答えなければなりません。詳しくは以下の WWW ページを見てください: http://cesdis.gsfc.nasa.gov/linux/drivers/rtl8139.html 5.32. Sager 5.32.1. Sager NP943 ステータス: 準サポート、ドライバ名: 3c501 これは単なる 3c501 クローンで、S.A. PROM プレフィックスが異なるだけで す。筆者はこのカードは、オリジナルの3c501と同様に腐っていると思いま す。ドライバは NP943 の I.D. をチェックし、その後は 3c501 として扱いま す。これらのカードは本当にどれも使わない方が良い理由については、 ``3Com 3c501''を参照してください。 5.33. Schneider & Koch 5.33.1. SK G16 ステータス: サポート、ドライバ名: sk_g16 このドライバは PJD Weichmann と SWS Bern によって書かれ、バージョン 1.1 のカーネルで取り込まれました。SK G16は、LANCE チップの初期の版 (7990)をベースにしているという点で、NI6510 に似ているようです。繰り返 しになりますが、このカードは汎用 LANCE ドライバでは動作しないようで す。 5.34. SEEQ 5.34.1. SEEQ 8005 ステータス: サポート、ドライバ名: seeq8005 このドライバは Hamish Colemanによって書かれ、1.3.x 初期のカーネルに取 り込まれました。このドライバにはカードに関する情報が少ししか含まれてお らず、そのためここにもあまり情報を書けません。疑問があれば、 hamish@zot.apana.org.au にメールを出すのが最善でしょう。 5.35. SMC (Standard Microsystems Corp.) Western Digital のイーサネット部門は、何年も前に wd8003 や wd8013 が主 力製品だった頃に SMC に売却されました。SMC は 8309 ベースの ISA カード (Elite16, Ultra, EtherEZ) を作り続けており、さらにいくつかの PCI 製品 をラインナップに追加しています。 SMC の連絡先は以下です: SMC / Standard Microsystems Corp., 80 Arkay Drive, Hauppage, New York, 11788, USA. 電話による技術サポート: 800-992-4762 (アメリカ)、 800-433-5345 (カナダ)、516-435-6250 (その他の国)。書面による要望: 800-SMC-4-YOU (アメリカ)、800-833-4-SMC (カナダ)、 516-435-6255 (その 他の国)。 電子メールによる技術サポート: techsupt@ccmail.west.smc.com. FTP サイト: ftp.smc.com. WWW サイト: SMC 5.35.1. WD8003, SMC Elite ステータス: サポート、ドライバ名: wd (+8390) これらは 8 ビットのカードです。8 ビットの 8003 は若干安価ですが、軽い 負荷で使用する場合以外ではお金を惜しむだけの価値はありません。非 EEPROM のカード(ジャンパで設定するタイプの互換カード、古い古い古い wd8003 カードなど)の中には、使用している IRQ 線を通知する方法がないも のがありますので注意してください。この場合は自動 IRQ 検出が用いられま すが、これに失敗するとドライバは黙って IRQ 5 を割り当てます。古い非 SMC の設定/ドライバディスクは SMC の ftp サイトから入手できます。比較 的新しい SMC の `SuperDisk' プログラムは、非常に古い EEPROM 無しのカー ドの検出に失敗します。SMCDSK46.EXE が対応範囲が広いようです。全てのカ ードのジャンパ設定は、前述のアーカイブに ASCII 形式のテキストファイル として含まれています。最新の(最高の?)バージョンは ftp.smc.com から入手 できます。 これらのカードは 16 ビット版のもの(WD8013 / SMC Elite16)と基本的に同じ ですから、詳細な情報については次の節をご覧ください。 5.35.2. WD8013, SMC Elite16 ステータス: サポート、ドライバ名: wd (+8390) 何年かの間に設計が変わり、レジスタや EEPROM が追加されました(最初の wd8003 カードは約 10 年前に登場しました!)。互換製品も通常 `8013' の名 前で通っており、通常は非 EEPROM(ジャンパによる設定) の設計を使用してい ます。新しいモデルの SMC カードは、元々古いカードで使っていた National Semiconductor 製の DP8309 ではなく、SMC 83c690 を使っています。共有メ モリを使う設計のカードはプログラムド I/O のカードより少し高速です。こ れは特に大きなパケットの時に顕著です。もっと重要な点として、ドライバの 観点からは、共有メモリを使えば 8390 のプログラムド I/O モードにある、 いくつかのバグを避けることができることが挙げられます。その結果、パケッ トバッファへのマルチスレッドなアクセスが安全に行なえますし、ウォームブ ート時の検出の際にマシンをハングさせしまうプログラムド I/O のデータレ ジスタもありません。 選択された IRQ を読めなかった非 EEPROM カードは自動 IRQ 設定を試み、こ れに失敗すると黙って IRQ 10 を割り当てます(8 ビットバージョンは IRQ 5 を割り当てます)。 ボード上のメモリ量が標準とは異なっているカードでは、起動時に(あるいは モジュールとして使用している場合は/etc/conf.modules のオプションで)メ モリサイズを指定できます。標準のメモリ量は 8 ビットのカードが 8kB で、16 ビットのカードが 16kB です。例えば、古い WD8003EBT カードはジャ ンパを使ってメモリが 32kB の設定にできます。RAM 全部を使用するには、以 下の例のようにします(I/O アドレスが 0x280、IRQ が 9 の場合): ______________________________________________________________________ LILO: linux ether=9,0x280,0xd0000,0xd8000,eth0 ______________________________________________________________________ もっと一般的な問題や、よく質問される問いに対する回答については ``SMC Ultra/EtherEZ と WD80*3 カードでの問題'' の節も参照してください。 このドライバをモジュールとして使用するなら、 ``イーサネットドライバを モジュールとして用いる場合'' の節を見て、モジュール固有の問題を確認し てください。 5.35.3. SMC Elite Ultra ステータス: サポート、ドライバ名: smc-ultra (+8390) このイーサカードは SMC の 83c709 チップをベースにしています。このカー ドは 83c690 に新機能をいくつか追加したものです。このカードは古い SMC のイーサネットカードと同様なモードを持っていますが、古い WD80*3 ドライ バとの完全な互換性はありません。しかし、このモードでは他の 8390 用ドラ イバとほとんどのコードを共有しており、さらに WD8013 クローンよりは若干 動作が高速です。 Ultra の一部は 8013 のように見えるので、誤検出を避けるため Ultra の検 出は wd8013 の検出の前に行われます。 Donald は、受信バッファの利用効率は犠牲になるが連続送信を可能にする、 Ultraの `Altego' モードのための別のドライバを書くことも可能だが多分そ のドライバが書かれることはないだろうと言っています。 バスマスタ SCSI ホストアダプタのユーザは注意が必要です: Interactive UNIX に同梱されているマニュアルには、SMC Ultra にバグがあり、aha-154X ホストアダプタに接続されている SCSI ディスクのデータを壊すだろうとの記 載があります。このバグは aha-154Xと互換のカード(例えば BusLogic のボー ドや AMI-FastDisk の SCSI ホストアダプタ)でも問題になるかもしれませ ん。 SMC は Interactive と古い Windows NT で生じる問題を認識しています。こ れは初期のバージョンで起こるハードウェアの衝突で、ドライバの設計によっ て回避することができます。現在の Ultra ドライバは、カードがデータ転送 する間に共有メモリを有効にするだけで、この問題を防いでいます。カーネル バージョンが最低でも 1.1.84 であることや、あるいは起動時に表示されるド ライバのバージョンが少なくとも smc-ultra.c:v1.12 であることを確認して ください。そうでない場合は問題が生じます。 このドライバをモジュールとして使用するなら、 ``イーサネットドライバを モジュールとして用いる場合'' の節を見て、モジュール固有の問題を確認し てください。 5.35.4. SMC Elite Ultra32 EISA ステータス: サポート、ドライバ名: smc-ultra32 (+8390) この EISA カードには、対応する ISA カードとの共通部分がたくさんありま す。動作する(そして安定している)ドライバはバージョン 2.0 と 2.2 の両方 のカーネルに含まれています。Linux がこれらのカードに対応できるように、 これらのカードのいくつかを購入してくれた Leonard Zubkoff に感謝しま す。 5.35.5. SMC EtherEZ (8416) ステータス: サポート、ドライバ名: smc-ultra (+8390) このカードは SMC の 83c795 チップを使用しており、プラグ&プレイ仕様をサ ポートしています。SMC Ultra 互換モードも持っており、Linux の Ultra ド ライバで使用することも可能です。このカードをもっともうまく使うために は、SMC が提供しているプログラム (SMC の WWW/ftp サイトから入手できま す)を使って、PnP を無効にし共有メモリモードに設定してください。上述の Ultra ドライバに関する注意を参照してください。 バージョン 1.2 のカーネルでは、カードは共有メモリで動作するように設定 しなければなりません。しかしバージョン 2.0 のカーネルでは共有メモリモ ードでもプログラムド I/O モードでも使用できます。共有メモリモードの方 が多少高速で、PCU 資源の消費も少ないです。 5.35.6. SMC EtherPower PCI (8432) ステータス: サポート、ドライバ名: de4x5, tulip 注意: EtherPower II はまったく別のカードです。後述の説明を読んでくださ い! これらのカードは基本的な DEC 21040 の実装です(つまり、1 つの大き なチップと 2 個のトランシーバからなります)。Donald は汎用の 21040 ドラ イバ (別名 tulip.c)を開発するのに、これらのカードの一つを使用しまし た。繰り返しになりますが、開発のためにカードを提供してくれた Duke Kamstra に感謝します。 このカードのより新しいバージョンの中には、比較的新しい DEC 21041 チッ プを使用したものがあり、古いバージョンの tulip ドライバで問題を起こす かもしれません。問題が起きた場合には、最新リリースのドライバを使用して いることを確認してください。最新のドライバは最新のカーネルのソースツリ ーにはまだ取り込まれていないかもしれません。 このカードを使用するにあたっての詳細な情報、およびドライバの現状に関し ては ``DEC 21040'' を参照してください。 どうやら、このカードの最新版の EtherPower-II は 9432 チップを使ってい るようです。このカードが現在のドライバで動作するかどうかは今のところ不 明です。いつものことですが、動作するかどうかがよく分からなければ、 Linux のドライバで動作しなければカードに金を払う前に返品できることを確 認しておきましょう。 5.35.7. SMC EtherPower II PCI (9432) ステータス: 準サポート、ドライバ名: epic100 これらのカードは SMC 83c170 チップをベースにしており、Tulip ベースのカ ードとは全く異なります。バージョン 2.0 と 2.2 のカーネルに、これらのカ ードをサポートする新しいドライバが入っています。詳しくは以下の WWW ペ ージを見てください: http://cesdis.gsfc.nasa.gov/linux/drivers/epic100.html 5.35.8. SMC 3008 ステータス: 未サポート これらの 8 ビットカードは富士通の MB86950 ベースで、Linux の at1700 ド ライバで使われている B86965 の古い祖先にあたります。Russ は、at1700.c のコードと彼が Tiara カード用に作った DOS のパケットドライバ (tiara.asm)を見れば、たぶんドライバを作れるだろうと言っています。 5.35.9. SMC 3016 ステータス: 未サポート これは 16 ビット I/O マップトの 8390 カードで、一般的な NE2000 カード と大変よく似ています。SMC から仕様を入手できたら、非常に簡単に NE2000 のドライバを移植できるでしょう。これらのカードはあまり一般的ではありま せん。 5.35.10. SMC-9000 / SMC 91c92/4 ステータス: サポート、ドライバ名: smc9194 SMC9000 は 91c92 チップをベースにしている VLB カードです。91c92 は他の ブランドのいくつかのカードでも使われていますが、かなりマイナーです。ド ライバは Erik Stahlman (erik@vt.edu) が書きました。これはバージョン 2.0 のカーネルに入っていますが、バージョン 1.2 の古いカーネルには入っ ていません。このドライバをバージョン 1.2 のカーネルのソースツリーに入 れるのはさほど難しくないと思います。 5.35.11. SMC 91c100 ステータス: 準サポート、ドライバ名: smc9194 SMC 91c92 ドライバは、この 100Base-T 用チップをベースにしているカード でも動作すると思われますが、現時点ではこの確認は行われていません。 5.36. Texas Instruments 5.36.1. ThunderLAN ステータス: サポート、ドライバ名: tlan このドライバは、Compaq 機に組み込まれている多くのイーサネットデバイス で使われています。NetFlex シリーズや Netelligent シリーズがこれに該当 します。このドライバは Olicom 2183, 2185, 2325, 2326 にも対応していま す。 5.37. Thomas Conrad 5.37.1. Thomas Conrad TC-5048 これは DEC の 21040 チップをベースにした PCI カードの一つです。 詳しくは 21040 チップに関する節 (``DEC 21040'') を見てください。 5.38. VIA VIA のネットワークカードを見かけることは多分ないでしょう。というのも、 VIA がいくつか作っているのは、イーサネットカードの部品として他のカード で使われているネットワークチップだからです。VIA の WWW サイトが以下に あります: http://www.via.com.tw/ 5.38.1. VIA 86C926 Amazon ステータス: サポート、ドライバ名: ne, ne2k-pci (+8390) この制御チップは VIA が PCI-NE2000 用に販売しています。 ISA/PCI ne.c ドライバと PCI 専用の ne2k-pci.c のどちらでも使うことができます。詳し くは PCI-NE2000 に関する節を見てください。 5.38.2. VIA 86C100A Rhine II (and 3043 Rhine I) ステータス: サポート、ドライバ名: via-rhine これは比較的新しいドライバで、現在の 2.0, 2.1 カーネルに入っています。 このチップは、バスマスタ転送をサポートしている点で NE2000 用の 86C926 チップよりも進歩していますが、厳密に 32 ビット境界を持つバッファが必要 なので、バスマスタ転送で得られる利点も制限されてしまいます。詳しい説明 とドライバの更新については以下のページを見てください: http://cesdis.gsfc.nasa.gov/linux/drivers/via-rhine.html 5.39. Western Digital SMC カードの情報については ``SMC'' の節を見てください。 (SMC は何年も 前に Western Digital のネットワークカード部門を買収しています。) 5.40. Winbond Winbond は実際には一般向けの完成品のカードの製造・販売は行っていません -- この会社は完成品のカードではなく 1 チップイーサネットを作っていま す。これは他の会社が購入し、独自の名前を持つ PCI ボードに取り付け、小 売店経由で販売しています。 5.40.1. Winbond 89c840 ステータス: 準サポート、ドライバ名: winbond-840 このドライバは現時点ではカーネルに含まれていません。というのも、テスト 段階だからです。このドライバは以下の場所で入手できます: http://cesdis.gsfc.nasa.gov/linux/drivers/test/winbond-840.c 5.40.2. Winbond 89c940 ステータス: サポート、ドライバ名: ne, ne2k-pci (+8390) このチップは、多くの会社が販売している低価格の PCI NE2000 カードでよく 見かける 2 つのチップうちの 1 つです。これは 10 年以上も前の古い設計を PCI バスで使えるようにしただけのものに過ぎない点に注意してください。性 能は対応する ISA モデルよりずっと優れているわけではありません。 5.41. Xircom ずっと長い間、Xircom はドライバを書くために必要なプログラミング情報を 就職でもしない限り公開しようとしませんでした。もちろん Linux ユーザ は、非開示契約を結ばなくても Xircom が文書を公開するように方針を変える ように、ドライバの対応を Xircom にせがんできました(Xircom はポピュラー なネットワーク OS は全てサポートしていると言っていました)。SCO ドライ バのソースコードを公開するつもりだと言われた人がいる一方で、古い PE モ デルのような「時代遅れになった」製品の情報を今さら提供しないと言われた 人もいます。この話題に興味があり、ご自身で確認してみたいなら、電話番号 1-800-874-7875, 1-800-438-4526, +1-818-878-7600 で Xircom に連絡するこ とができます。 5.41.1. Xircom PE1, PE2, PE3-10B* ステータス: 未サポート 期待をしてはいけませんが、もしパラレルポート用のアダプタをお持ちであれ ば、Xircom が提供している DOS ドライバを DOS エミュレータ上で使えるか もしれません。DOSEMU がパラレルポートにアクセスできるようにする必要が あるでしょうし、SIG (DOSEMU の Silly Interrupt Generator)を使う必要も あるでしょう。 5.41.2. Xircom 製の PCMCIA カード ステータス: 準サポート、ドライバ名: ???? 一部の Xircom 製 PCMCIA カードには、David Hinds の PCMCIA パッケージで 使えるドライバがあります。PCMCIA パッケージの最新情報を確認してくださ い。 5.42. Zenith 5.42.1. Z-Note ステータス: サポート、ドライバ名: znet Z-Note に組み込まれているネットワークドライバは、DMA チャネルを 2 つ使 う Intel i82593 をベースにしています。最新バージョンのカーネルに は、(アルファ版の?)ドライバが入っています。全てのノート用アダプタやポ ケットアダプタと同様に、make config 時の設定は `Pocket and portable adaptors' のセクションにあります。 IBM ThinkPad 300 は Z-Note と互換で ある点にも注意してください。 5.43. Znyx 5.43.1. Znyx ZX342 (DEC 21040 based) ステータス: サポート、ドライバ名: de4x5, tulip このチップをベースにしているカードの場合は 2 つのドライバを選ぶことが できます。つまり David が書いた DE425 ドライバと Donald が書いた汎用の 21040 ドライバです。 1.1.91 の時点では、David が追加した DEC 製でないカード(Znyx 製カード 等) でこのドライバを動作させるためのコンパイル時オプションが入っていま す。詳しくはREADME.de4x5 をご覧ください。 このカードを使用するにあたっての詳細な情報、およびドライバの現状に関し ては ``DEC 21040'' を参照してください。 5.44. 未知のカードの識別 さて、あなたの叔父さんのいとこの隣人の友達に兄弟がいて、その人が息子の ペットのハムスターの籠として使われている AT ケースの中に ISA イーサ ネットカードを見つけたとします。何らかの理由で読者の皆さんがそのカード を手に入れてこれを Linux で使おうとしたものの、そのカードが何であるか についての手がかりを誰も持っておらず、文書もまったくないものとします。 何よりもまず、見て分かるモデル番号がヒントになるかもしれないので確認し てください。「2000」を含むモデル番号がついていれば大抵 NE2000 の互換カ ードです。「8003」や「8013」が書いてあるカードは Western/Digital WD80x3 カードか、SMC Elite カードか、あるいはこれらの互換カードでしょ う。 5.44.1. ネットワークインタフェースコントローラの識別 カードに付いている最も大きなチップを探しましょう。これがネットワークコ ントローラ(NIC)で、そのほとんどは部品番号で識別することができます。ど の NIC がカードに載っているかがわかっていれば、カードが何であるかを調 べる際に以下の説明が役立つでしょう。 多分今でもまだ最も一般的な NIC は National Semiconductor の DP8390、別 名 NS32490, DP83901, DP83902, DP83905, DP83907 です。これらは全て National Semiconductor が作った同じ NIC です! Winbond や UMC 等の他の 会社も、Winbond 89c904 (DP83905 クローン)や UMC 9090 といった DP8390 と DP83905 の互換品を作っています。もしカードに何らかの形の 8390 が 載っていれば、これは NE1000 または NE2000 の互換カードである可能性があ ります。8390 ベースで次に一般的なカードは、wd80x3 カードとそのクローン です。DP83905 が載っているカードは ne2000 または wd8013 として設定でき ます。純正の wd80x3 と SMC Elite には、元々の DP8390 の代わりに 83c690 を使っているバージョンはありません。SMC Ultra には 83c790 が載ってお り、そのためドライバは wd80x3 カードと少し異なります。SMC EtherEZ カー ドには 83c795 が載っており、SMC Ultra と同じドライバを使います。何らか の種類の 8390 か 8390 クローンをベースにしている全ての BNC カードには 普通、BNC コネクタのすぐ近くに 16 ピンの DIN チップである 8392(または 83c692 や ???392)が載っています。 古いカードに載っている一般的な NIC としては Intel i82586 もあります。 この NIC が載っているカードには 3c505, 3c507, 3c523, Intel EtherExpress-ISA, Microdyne Exos-205T, Racal-Interlan NI5210 がありま す。 元々の AMD LANCE NIC には AM7990 という番号が付いています。新しいリビ ジョンには 79c960, 79c961, 79c965, 79c970, 79c974 があります。これらの NIC のいずれかが載っているカードの大部分は Linux の LANCE ドライバで動 作します。ただし古い Racal-Interlan NI6510 は例外で、専用のドライバが あります。 NIC に DEC 21040, 21041, 21140 等の番号が付いている新しい PCIカード は、 Linux の tulip ドライバか de4x5 ドライバで動作するはずです。 これ以外で、RTL8029 や 89C940, 86C926 と記されている大きなチップが載っ ている PCI カードは NE2000 のクローンであり、Linux バージョン 2.0 以上 の ne ドライバはこれらのカードを自動的に検出するはずです。 5.44.2. イーサネットアドレスの識別 それぞれのイーサネットカードは、そのカード固有の 6 バイトのアドレスを 持っています。このアドレスの最初の 3 バイトは、カードを作ったメーカー が同じならば同じです。例えば、全ての SMC のカードのアドレスは 00:00:c0 で始まります。最後の 3 バイトはメーカーによって、製造時にそれぞれのカ ードに対して一意に割り当てられます。 6 バイトのアドレスを全て示すステッカーがカードに貼ってあれば、最初の 3 バイトからメーカーを調べることができます。しかし普通は、最後の 3 バイ トしか印刷されていないステッカーがソケットに挿さった PROM に貼られてい ることの方が多いでしょう。この場合はメーカーについては何も分かりませ ん。 どのメーカーがアドレスを割り当てたのかは RFC-1340 で調べることができま す。また、もっと新しい一覧を色々な場所で入手できるようです。 EtherNet- codes や Ethernet-codes で WWW や FTP の検索を行えば何か見つかるでしょ う。 5.44.3. 未知のカードを使う時のテクニック まだカードの正体がはっきりしなくても、少なくともある程度絞りこめれば、 ドライバを山のように埋め込んだカーネルを構築し、起動時にドライバのいず れかがカードを自動検出するかどうかを見ることができます。 カーネルがカードを検出しなければ、カードの設定がドライバがカードを探す 時に検知するアドレスを使うようになっていないのかもしれません。この場合 には、お近くの Linux 関連 FTP サイトから scanport.tar.gz を入手し、こ のツールでカードのジャンパ設定を調べられるかどうか試すとよいでしょう。 このツールは ISA バスの I/O アドレスを 0x100 から 0x3ff まで、 /proc/ioports に登録されていないデバイスを探しながらスキャンします。ど こか特定のアドレスから始まる未知のデバイスが見つかれば、イーサネットが そのアドレスを検知するように、起動時の引き数 ether= で明示的に指定でき ます。 何とかカードを検出させることができたら、ジャンパの設定を一つずつ変更 し、そのカードが検出される I/O ベースアドレスと IRQ がどうなるかを調べ ることにより、不明なジャンパの意味を明らかにできます。IRQ 設定は、カー ドの裏にある跡をジャンパが半田付けされている所まで追いかけることによっ て調べられます。カードの裏側の「金色のピン」を金属のブラケットが付いて いる側の端から数えて、4, 21, 22, 23, 24, 25, 34, 35, 36, 37, 38 番目の ピンによってそれぞれ IRQ を 9, 7, 6, 5, 4, 3, 10, 11, 12, 15, 14 を設 定できます。8 ビットのカードには 31 ピンまでしかありません。 何もしないように見えるジャンパは普通、オプションの起動 ROM のメモリア ドレスを選ぶためのものです。これ以外で BNC, RJ-45, AUI 端子の近くにあ るジャンパは、普通は出力メディアを選ぶためのものです。これらは通常、 YCL や Valor, Fil-Mag 等と記された「ブラックボックス」の電圧コンバータ の近くにあります。 各種カードのジャンパ設定について集めた素晴らしいコレクションが以下の URL にあります: Ethercard Settings Linuxの ソースには他にいくつかドライバがあり、ネットワークプログラムに 対して、実際にはイーサネットではないけれどイーサネットのようなデバイス を提供します。完璧を期すため、以下で簡単に説明します。 dummy.c - このドライバの目的は、通過する経路をデバイスに示すことです。 しかし実際にはパケットは送信しません。 eql.c - (負荷を平均化する)ロードイコライザです。複数のデバイス(通常は モデム)を支配下に置いてデバイス間の送信負荷を平均化し、その一方でネッ トワークプログラムには 1 つのデバイスを提供します。 ibmtr.c - IBM の Token Ringです。実際にはイーサネットではありませ ん。Broken-Ring にはソースルーティングや他の難しいものが必要です。 loopback.c - ループバックデバイスです。これは自分自身から出て自分宛に なっている全てのパケットマシンが送られるデバイスです。本質的には送信 キューから受信キューにパケットを移動させるだけです。 pi2.c - オタワアマチュア無線クラブの PI および PI2 インタフェースで す。 plip.c - パラレル接続インターネットプロトコルです。2 台のコンピュータ 間をパラレルポートで結び、Point-to-Point 形式 でパケットをやりとりする ことが可能です。 ppp.c - Point-to-Point プロトコル(RFC1331)です。 Point-to-Point 接 続(これも通常はモデム)を通じて、マルチプロトコルデータグラムを転送する ためのものです。 slip.c - シリアル接続インターネットプロトコルです。 2 台のコンピュー タ間をシリアルポートで結び(通常はモデム経由)、 Point-to-Point ポイント 形式でパケットをやりとりすることが可能です。 tunnel.c - サブネット間のネットワークトラフィックを透過的にトンネルさ せることができる、IP トンネル機能を提供します。 wavelan.c - Intel EtherExpress などの他のイーサカードで使われている Intel 82586 コプロセッサによって制御される、イーサネットに似た無線トラ ンシーバです。 6. ケーブル、同軸、ツイストペア ネットワークを全く一から始めるのであれば、シンイーサネット(BNC コネク タのついた RG58 同軸ケーブル)を使うのか、10baseT (八線用の電話コネクタ のついた電話線式のツイストペアケーブル)にするかを決めましょう。 シック イーサネット(N コネクタのついた RG-5 ケーブル)は、旧式で時代遅れの代物 なので、もうほとんどお目にかかることもなくなってしまいました。 ケーブルについてはまず、 ``どのタイプのケーブルが使えるカードを選べば よいか'' に目を通してください。comp.dcom.lans.ethernet にある FAQ もケ ーブルなどの情報源として有用です。rtfm.mit.edu の FTP サイト、 /pub/usenet-by-hierarchy/にニュースグループの FAQ があります。 6.1. シンイーサネット(シンネット) シンイーサネットケーブルは結構安いものです。自作するなら、ソリッドコア の RG58A が一メートル $0.27、標準の RG58AU でもメートル当たり $0.45 で 入手できます。ツイスト-オン BNC コネクタは一個 $2 程度です。ほかにもい ろいろと部品が必要ですが、いずれも高いものではありません。大事なの は、50 オームのターミネータを使って全部のケーブルの端をきちんと終わら せておくことです。このターミネータは一対 $2 くらいです。片端がどこにも つながっていないケーブルができないようにすることも肝要です。T コネクタ は必ずイーサカードに直接取りつけること。 シンネットを使うのをやめておこうという主な理由は、以下の二つです。ま ず、速度の限界が 10M/sec である点。 100Mb/sec にはツイストペアが必要で す。第二の理由は、たくさんのコンピュータをつないでいる場合、どこか一カ 所のケーブルが T コネクタからたまたま抜けてしまっただけで、ネットワー ク全体が落ちてしまうという点です。こんなことになるのは、50 オームのタ ーミネータが必要であるにもかかわらず、ケーブルが抜けるとインピーダンス が無限大になってしまう(回路が開いてしまう)からです。ただし、カードその ものから T コネクタを取り除いてもサブネット全体が落ちてしまうことはあ りません。ただし、その場合でもケーブルを T コネクタからはずしてはいけ ません。もちろん、本当に T コネクタを取り除いたりしたら、そのコンピュ ータに支障が発生することでしょう 8-)。 コンピュータ二台でささやかな ネットワークを組む場合にも、T コネクタと 50 オームのターミネータ二個が 必要です。コンピュータ同士をケーブルで直結してはいけません。 世の中には線が一本だけカードの中に入っているように見える変わり種のケー ブルもあります。でも、実際には、外装を施した二本のケーブルが平行して 走っているのです。そのためケーブルの横断面は楕円形になっています。ネッ トワーク網の方向が変わる場所では、カードに接続した BNC コネクタのとこ ろでねじれができてしまいます。同じケーブル二本と BNC T コネクタ一つが あるわけですが、こんな場合には、T コネクタの一方の側からケーブルを取り 外すというのは無理な相談です。そして結果としてはネットワークに障害が発 生してしまうのです。 6.2. ツイストペア ツイストペアケーブルを使ったネットワークを組むには、アクティブハブが必 要です。ハブは $50 以上はします。ケーブルそのものの値段もシンネット用 のものよりは高価です。手元にある電話ケーブルを使えるという話は忘れた方 がいいでしょう。うまく行くことはめったにありませんから。 100Mb/sec のイーサネットを組む時には、ツイストペアを使うしかありませ ん。最近では事業所用のネットワークの場合には、ツイストペアを選ぶのが普 通になっています。Russ Nelson は、「新たにネットワークを組むときには、 カテゴリー 5 のケーブルを使うようにしてください。さもないと、作業時間 が無駄になってしまいます。 100Base 系のネットワークの場合には、常に カ テゴリー 5 のケーブルが必要です」と付け加えています。 二台のコンピュータを繋ぐだけなら、ハブがなくてもだいじょうぶです。この 場合には Rx のペアと Tx のペアを入れ替えてください。 固定用タブを上にして RJ-45 コネクタを自分の方に向けて持つと(プラグを自 分の口に突っ込むように持つわけです)、左端が 1 番ピンで右端が 8 番ピン になります。各ピンの役割は以下の通りです。 ピン番号 用途 ---------- ---------- 1 データ出力 (+) 2 データ出力 (-) 3 データ入力 (+) 4 電話ケーブルとして使うときに留保 5 電話ケーブルとして使うときに留保 6 データ入力 (-) 7 電話ケーブルとして使うときに留保 8 電話ケーブルとして使うときに留保 ケーブルを自作する場合には、次に述べることを正確に行うようにしてくださ い。差動信号線のペアは同じツイスト線のペアを使わなければなりませ ん。UTP ケーブルの不整合損失を最小限にするためです。上の表をご覧くださ い。1 と 2 および 3 と 6 が差分ペア信号線の二組が、差分ペア信号線で す。1 と 3、 2 と 6 ではありません!!!!! 短いケーブルを 10MHz として使 用する場合なら、ここで間違いをしでかしてもなんとかなるでしょう。でもこ れはケーブルが短いときだけです。100 MHz の時にもこんな風にいくとはお考 えにならないように。 A 側 と B側 を結ぶ普通のパッチコードの場合なら、すなおにピンとピンを対 応させれば OK です。入力・出力のそれぞれが各一対のツイストペアになるよ うにすればいいのです(インピーダンスの問題)。つまり、1A と 1B、 2A と 2B、3A と 3B、 そして 6A と 6B を対応させることになります。1A - 1B と 2A - 2B でツイストペアをつくってください。もう一対のツイストペアは 3A - 3B と 6A - 6B を組み合わせることになります。 ハブがない場合には、ヌルケーブルをつくるという手があります。つまり、 A 側の入力が プラスマイナスが同じである B 側の出力になり、A 側の出力がプ ラスマイナスが同じである B 側の入力になるようにするのです。言い換えれ ば、1A と 3B (A 側の出力(+)と B 側の入力(+)を、そして 2A と 6B (A 側の 出力(-)と B 側の入力(-))を繋ぐのです。そして、この二本でツイストペアを 作ります。この二本が A(カード/プラグ)側からみて出力に相当するもの、つ まり B(カード/プラグ)側からみると入力となるものを伝達するのです。 3A は 1B と(A 側の入力(+)と B 側の出力(+))、同様に 6A と 2B (A 側の入 力(-)と B 側の出力(-))を接続します。そして、この二本でまたツイストペア をつくります。この二本が伝達するのは、A(カード/プラグ)側からみて入力に 相当するもの、つまり B(カード/プラグ)側から見ると出力となるものです。 ですから、普通のパッチコードが手元にあるなら、その片端を切断した上で Rx のペアと Tx のペアの場所を入れ替え、そして、新しいプラグに差し込ん で固定してやればいいことになります。すでにヌルケーブルをお持ちなら、や やこしい作業はいっさい必要ありません。このケーブルさえ繋いでやれば、片 側のカードからの Tx 信号は もう一方のカードの Rx に(逆も同様)送り込ま れていきます。 注: 10BaseT が標準の座を獲得する以前には、 RJ-45 コネクタと上述したの と同じ形式のケーブルを使用するネットワーク方式がいくつもありました。 SynOptics 社の LattisNet や AT&T 社の StarLAN はその一例です。初期の 3C503 のように、ジャンパのセットで接続するハブの形式を決めることができ るカードもあります。とはいうものの、こうした旧式のネットワーク方式用の カードは、標準となっている 10BaseT ネットワーク/ハブでは正常に機能しな いのが普通です(AUI ポートのあるカードなら、AUI から 10BaseT への変換器 がついていますから、使えないはずはありません)。 6.3. シックイーサネット シックイーサネットはもうたいがい時代遅れなので、既存の設備との互換性を 保つためにしか用いないようになっています。短いシックイーサネットケーブ ルとシンイーサネットケーブルを N-to-BNC パッシブコネクタ(約 3$)を使っ て接続するという、規則の拡大解釈も可能です。既存のシンネットを拡張する 場合には、これが最善の選択でしょう。リピータを使うというのがこういう場 合には正解ですが、高くついてしまいます。 7. ソフトウェアによる設定とカードの診断 ほとんどの場合、設定をソフトウェアで行って EEPROM に保存するタイプのカ ードでは、カードの IRQ, I/O, メモリアドレスその他を設定するにはマシン を DOS で起動してベンダが提供した DOS 版のプログラムを使います。ありが たいことに、この設定は普通は一度だけ行えばよい筈です。 もしお使いのカード用の DOS のソフトウェアをお持ちでない場合、そのカー ドの製造者の WWW サイトで探してみてください。サイトの名前が判らないと きは www. ベンダ名 .com というのを、「ベンダ名」のところを製造者の名前 にして試してみましょう。これは SMC, 3Com, その他本当にたくさんの製造者 で有効です。 (訳注: SMC 製のカードなら www.smc.com を試してみろという ことです。日本の会社なら www. ベンダ名 .co.jp になりますね。) 中にはここに一覧されているような Linux 版の設定ユーティリティが存在す るカードもあります。 Donald は Linux 上で走る小さなカード診断プログラ ムをいくつか書きました。それらのほとんどは彼が様々なドライバを書く際に 作ったデバッグ用のツールから生まれたものです。だから素敵なメニュー形式 のインタフェースは期待しないでください。そのツールのほとんどは、ソース コードを読まないと使えないでしょう。お持ちのカード用の診断ソフトが無い 場合でも、cat /proc/net/dev と入力すれば、そのカードが起動時に検出され ているかどうかなど何らかの情報を得られます。 どちらにしても、これらのプログラムの大半は (ポートへの読み書きを許可す るために) root で実行する必要があり、先に ifconfig eth0 down というコ マンドでネットワークカードをシャットダウンしておいたほうが良いでしょ う。 7.1. 各イーサネットカードの設定プログラム 7.1.1. WD80x3 カード wd80x3 のカード向けには、Linux の ftp サイトに wdsetup-0.6a.tar.gz と いう名前で置かれている wdsetup というプログラムがあります。これはあま りメンテナンスされてなく、ずいぶん長いこと更新もされていません。もしこ れがうまく動けばしめたもの、駄目だったら、カードに付いていた筈の DOS 版のプログラムを使ってください。 DOS 版を持っていませんか?大丈夫、SMC セットアップ・ドライバディスクは SMC の ftp サイトで見つかります。もち ろん、このユーティリティは EEPROM が載っているカード専用です。旧式の wd8003 カードといくつかの wd8013 クローンは、ジャンパを使ってカードを 設定します。 7.1.2. Digital / DEC カード Digital EtherWorks 3 シリーズのカードには、 DOS 版の NICSETUP.EXE と同 じような設定プログラムが使えます。 David C. Davies は、 EtherWorks 3 用のドライバと一緒にこの設定プログラムとその他のツールを作りました。手 近な Linux の ftp サイトの /pub/linux/system/Network/management ディレ クトリで、 ewrk3tools-X.XX.tar.gz というファイルを見つけてください。 7.1.3. NE2000+ または AT/LANTIC カード ナショナル・セミコンダクタの DP83905 を使用したカードのいくつか (例え ば AT/LANTIC や NE2000+ など)はソフトウェアで設定ができます。 (これら のカードは wd8013 をエミュレートすることも可能です。) Donald の FTP サ ーバ cesdis.gsfc.nasa.gov にある /pub/linux/setup/atlantic.c という ファイルを使ってこのカードを設定してください。また、Kingston DP83905 カード用の設定プログラムは、カード上にあるベンダ固有の情報をチェックし ていないためこのチップを使用している全てのカードで使用可能なようです。 Kingston Software という URL にある 20XX12.EXE および INFOSET.EXE を入手しましょう。 NE2000+ のカードを設定する際には、誤った設定値が問題を引き起こすことに 気をつけてください。よく起きる例は EEPROM 上で (付いてもいない) BOOT ROM を誤って VGA カードと衝突させてしまう設定を有効にしてしまうことで す。これは、コンピュータの電源を入れたときにビープ音が鳴るだけで画面に は何も表示されないという結果になります。 通常、この状態からは以下の手順で回復できます -(ネットワーク)カードを取 り外してブートし、CMOS セットアップメニューに入ります。「ディスプレイ アダプタ」は「なし」に、デフォルトのブートドライブは「A: (お使いのフ ロッピードライブ)」に設定します。また、「全てのエラー発生時に F1 入力 を待つ」を「無効」に変更します。これでコンピュータはユーザとのやり取り なしで起動するでしょう。次に起動可能な DOS のフロッピーを(DOS 上で format a: /s /u というコマンドを使って)作成し、前述の 20XX12.EXE アー カイブファイル中にある default.exe プログラムをコピーします。そして echo default > a:autoexec.bat というコマンドを入力し、カードを全くの初 期状態に戻すプログラムがこのフロッピーを使用してブートしたときに自動的 に起動されるようにします。 コンピュータの電源を切り、NE2000+ カードを再び取り付け、作成したフロッ ピーをセットし、再び電源を入れます。まだビープ音がするでしょう。しかし 最後にはフロッピーからのブートに伴ってフロッピードライブのライトが点滅 する筈です。 default.exe が終了したしるしにフロッピーの動作が止まるま で 1, 2 分待ち、電源を切りましょう。フロッピーを抜いてもう一度電源を入 れればビデオの機能が復活している筈なので、CMOS 設定を元に戻し、カード の EEPROM 設定をお好みの値に変更することができるでしょう。 もし DOS に慣れていないなら、default.exe プログラムが自動的に起動する DOS のブートディスクを使う代わりに、 Donald の(正しいオプションを付け た) atlantic プログラムが自動的に起動するようにした Linux のブートディ スクを使用して上記と全く同じことができます。 7.1.4. 3Com カード 3Com Etherlink III 系のカード(例えば 3c5x9)は、 Donald が作った別の設 定ユーティリティで設定ができます。これらのカードを設定するには、 Donald の FTP サーバ cesdis.gsfc.nasa.gov から /pub/linux/setup/3c5x9setup.c を入手してください。 (Etherlink III 系の 中でも新しい `B' シリーズ向けである DOS 版の 3c5x9B 設定ユーティリティ にはより多くのオプションがあります。) 7.2. 各種イーサネットカードの診断プログラム Donald が書いたこれらの診断プログラムは以下の URL から入手できます。イ ーサネットカードの診断プログラム Allied Telesis AT1700 − cesdis.gsfc.nasa.gov で /pub/linux/diag/at1700.c というファイルを探してください。 Cabletron E21XX − cesdis.gsfc.nasa.gov で /pub/linux/diag/e21.c とい うファイルを探してください。 HP PCLAN+ − cesdis.gsfc.nasa.gov で /pub/linux/diag/hp+.c というファ イルを探してください。 Intel EtherExpress − cesdis.gsfc.nasa.gov で /pub/linux/diag/eexpress.c というファイルを探してください。 NE2000 クローン − cesdis.gsfc.nasa.gov で /pub/linux/diag/ne2k.c とい うファイルを探してください。一般的となった NE2000-PCI クローン向けには PCI 版もあります。 RealTek (ATP) Pocket adaptor − cesdis.gsfc.nasa.gov で /pub/linux/diag/atp-diag.c というファイルを探してください。 その他のカード全て −問題のカードについてカーネルが持っている情報を調 べるには、 cat /proc/net/dev および dmesg というコマンドを試してみてく ださい。 8. 技術情報 既存のドライバで遊んでみたい方や、まだサポートされていないカードのドラ イバを自分自身で書いてみたい方には、この情報はとても役に立ちます。も し、あなたが上に挙げたような方でなければ、この章は飛ばすとよいでしょ う。 8.1. プログラムド I/O 対 共有メモリ 対 DMA 隙間のないパケットの送受信が既にできていれば、それ以上のビットデータを ネットワークに流すことはできません。現在のイーサネットカードは全て、隙 間なくやってくるパケットを受け取ることができます。Linux の DP8390 ドラ イバ(wd80x3, SMC-Ultra, 3c503, ne2000 等)は、もう少しで隙間なくパケッ トを送信できる所まで来ています(これは現在の割り込みの遅延に依存しま す)。また、3c509 と AT1500 のハードウェアは自動的に隙間がないパケット を送信するので全く問題ありません。 ISA バスは 5.3MB/秒(42Mb/秒)を処理できます。これは 10Mbps のイーサネッ トに対しては十分以上に思われます。100Mbps のカードの場合には、ネットワ ークのバンド幅の恩恵を受けるためには高速なバスが明らかに必要です。 8.1.1. プログラムド I/O (NE2000, 3c509 等) 利点: 制限付きのシステムリソースを使わず、I/O レジスタを数個使うだけで ある。16M の制限を受けない。 欠点: 普通は転送速度が最も遅い。CPU はずっと待ち状態となり、インタリー ブ処理されるパケットのアクセスは普通は困難であるか、不可能である。 8.1.2. 共有メモリ(WD80x3, SMC-Ultra, 3c503 等) 利点: 単純かつプログラムド I/O より高速で、パケットへのランダムなアク セスが可能である。可能であれば、Linux のドライバはやってきた IP パケッ トをカードからコピーする際にそのチェックサムを計算する。これにより、同 等の PIO カードよりも CPU の使用量が少ない。 欠点: メモリ空間をたくさん消費する(DOS ユーザにとっては多いでしょう。 Linux では本質的にはあまり関係ありません)。また、PIO カードより少ない にせよ、それでも CPU をたくさん使う。 8.1.3. スレーブ(普通)の直接メモリアクセス(Linux で使えるカードはあり ません!) 利点: 実際のデータ転送の間は CPU が解放される。 欠点: 境界条件のチェック、連続したバッファの割り当て、DMA レジスタのプ ログラミングがあるため、全ての技術の中で一番動作が遅い。希少な DMA チャネルをたくさん使う上に、低位メモリ上にバッファを持たなければならな い。 8.1.4. バスマスタ直接メモリアクセス(LANCE, DEC 21040 等) 利点: データ転送の間 CPU を解放する。複数のバッファを繋げることがで き、 ISA バスでも CPU 時間をあまり無駄にしないか、ほとんど無駄にしな い。バスマスタを行う Linux のドライバの大部分は現在 `copybreak' スキー ムを使っている。このスキームでは、大きなパケットはカードから直接カーネ ルのネットワークバッファに入れられ、小さなパケットは CPU によってコピ ーされ、CPU は後での処理のためにキャッシュにパケットの内容を知らせる。 欠点: (ISA バスのカードにだけ当てはまる) 低位メモリのバッファと、カー ド用の DMA チャネルを必要とする。どんなバスマスタカードでも、バスを食 い潰す他のバスマスタカードがあると問題を起こす。例えば、このようなカー ドとしては初期の SCSI アダプタがある。設計が悪い一部のマザーボード用 チップセットは、バスマスタカードで問題を起こす。どんな種類の DMA デバ イスも使えない場合としては、 386 のソケットに挿して置き換えるように設 計された 486 プロセッサを使う場合がある。このようなプロセッサは、DMA 周期の各サイクルでキャッシュをフラッシュする。(これには Cx486DLC, Ti486DLC, Cx486SLC, Ti486SLC 等が含まれる。) 8.2. ドライバを書く ちゃんと動いてくれるドライバさえあれば、どんなイーサネットカードでも Linux で利用できます。このためにはメーカーがプログラミングに関する技術 的情報を、人生を放棄する書類にサインする必要なしに、一般に向けて公開す ることが絶対条件です。文書を得られるかどうか(あなたがコードを書かない のならば、あなたが本当に欲しいドライバを誰かが書いてくれるかどうか) の 良いガイドは、Crynwr さん(旧姓 Clarkson さん)のパケットドライバが入手 できるかどうかです。Russ Nelson さんはこの作戦を実行して、Linux 用のド ライバの開発をサポートするのに大変有用なことを実証しました。ネットサー ファーなら以下の Russ' software の URL を見てください: Russ Nelson's Packet Drivers ドキュメントを入手できれば、自分でカード用のドライバを書き、それを Linux 上で使うことができます(少なくとも理屈としては)。XT マシン用に設 計されたいくつかの古いハードウェアは Linux などのマルチタスクな環境で はうまく動いてくれないということを覚えていてください。XT タイプのもの を使う場合、大量のトラフィックを扱うときに大きな問題が発生することがあ ります。 ほとんどのカードは NDIS や ODI など MS-DOS 用のドライバが付属していま すが、 Linux にはこれらのものは無用です。多くの人は直接リンクしたり、 自動的に変換することを提案していますが、これは不可能に近いのです。 MS- DOS 用のドライバは 16 ビットモードで動作し、ソフトウェア割り込みを使っ てフックしますが、両者とも Linux カーネルでは不可能なものです。Linux 用のドライバの中には MS-DOS 用のものよりも著しく優れたものもあるのです から、こういった非互換性も機能のうちというが本当のところでしょう。例え ば、 8390 シリーズのドライバは MS-DOS の世界にのみ知られているピンポン 転送バッファを利用しています。この非互換性は実際には仕様であり、いくつ かの Linux 用のドライバはMS-DOS 用のそれよりも相当に良いものです。 (ピンポン転送バッファとは少なくとも 2 つの最大サイズのパケットバッファ を転送用パケットに使うということを意味します。一方はカードがもう片方の バッファを転送している間にロードされます。バッファの転送が終るとすぐに 次のバッファが次々に転送されます。このようにして、ほとんどのカードは連 続してやってくるパケットを転送することができるのです。) さて、プログラミングに関する情報を手に入れ、それがいまだ実装されていな いのだから(... この二つは主要な必要条件です ;-)、どこかのイーサネット カード用にドライバを書くことを決意されましたね。Linux のカーネルソース ツリーに含まれている骨組みとなるようなネットワークドライバから始めるべ きです。これは最近のカーネルの /usr/src/linux/drivers/net/skelton.c に あります。また、以下に挙げる URL の「Kernel Hackers Guide」も見てみる と良いでしょう: KHG 8.3. カーネルへのドライバインタフェース 新しくドライバを作る際に、あなたが書かなければならない関数に関するいく つかの注意があります。上記の骨組みドライバと並行してここに書かれてある ことを読むと、状況をはっきりさせる手助けになるでしょう。 8.3.1. 自動検出 起動時にカードの存在を検査します。メモリなどから読み込むことによってあ まりでしゃばらずに検査するのがベストでしょう。I/O ポートから読み込むこ ともできます。他のデバイスを kill してしまうかも知れないので、検出時に I/O ポートに対する初期書き込みは良くありません。いくつかのデバイスの初 期化は通常この段階で行われます (I/O 空間 や IRQ を割り当て、 dev->??? フィールドに値を代入します)。あなたはそのカードがどの I/O ポート/メモ リ に設定できるのか、(もし使われているのであれば) 共有メモリをどのよう に有効にするのか、また割り込み発生をどのように選択/有効にするのかを 知っている必要があります。 8.3.2. 割り込みハンドラ カードが割り込みを発生させるとカーネルによって呼ばれます。これはカード がなぜ割り込みを発生させたのかを調べ、それに応じた処理を行うということ を担当します。通常、割り込みが生じる条件は、データが記録されたり、転送 が終了したり、エラーの状態をレポートする場合などです。この条件に応じて 処理を行うことができるように、関係する割り込み状態を保持するビットを 知っている必要があります。 8.3.3. 転送関数 dev->hard_start_xmit() に連結されており、カーネルがデバイスに出力する べきデータが存在する場合に呼ばれます。これによってデータがカードに出力 され、転送が行われます。そのためにはどのようにデータをまとめカードに出 力するか(共有メモリーコピーか、PIO 転送か、DMA か?)、またどのようにし てカード上の正しい位置に出力するか知っている必要があるでしょう。更にい かにしてケーブルへ向けてカードがデータを転送するように指示し転送後割り 込みを発生させるかを知っている必要があります。ハードウェアが次のパケッ トを受け付けることができない場合、dev->tbusy フラグがセットされます。 またパケットを受け付けるためのバッファが空いている場合(通常、転送完了 時の割り込みの間)、dev-tbusy はクリアされ mark_bh(INET_BH) によってよ り上位の層へと伝えられます。 8.3.4. 受信関数 カーネルの割り込みハンドラが受信関数を呼び出すのは、「情報がある」とカ ードが報告してきた時です。受信関数はカードからデータを取得し、sk_buff に保持し netif_rx(sk_buff) によってカーネルに受信したデータが存在する ことを知らせます。データ受信時の割り込み発生を有効にする方法、関係する 受信ステータスビットをチェックする方法、カードからデータを受け取る方 法(転送時と同じく、共有メモリー, PIO, DMA 等のいずれか)を理解している 必要があるでしょう。 8.3.5. オープン関数 オープン関数は dev->open に連結されており、ifconfig eth0 up が実行され たとき - これはデバイスをオンラインにしデータの送信を有効します - ネッ トワーク層によって呼ばれます。デバイスの自動検出時(IRQ の有効化など)に 行われなかった特殊な初期化処理がここでなされます。 8.3.6. クローズ関数 (省略可能) クローズ関数は ifconfig eth0 down が実行されたときにカードを正常な状態 に設定します。ハードウェアが許可すれば IRQ と DMA チャネルを開放し、ト ランシーバのような電源供給元をオフにします。 8.3.7. その他の関数 この部類の関数にはリセット関数のようなものが含まれます。ドライバは最終 手段としてカードをリセットできます。これらは通常、送信がタイムアウトす るなどした場合に行われます。また、カード上に統計的データを保存しておく レジスタが備わっている場合、そのデータを読み込む関数もあります。 8.4. 3Com からの技術情報 もしあなたが 3Com 用のドライバに関して興味を持っているのなら、 3Com か ら技術情報を得ることができます。 Cameron は親切にも、どのようにすれば いいのか教えてくれました。 3Com のイーサネットアダプタは「テクニカル リファレンス」(TRs) の中でド ライバを書く人のために解説されています。これらのマニュアルはボードへの プログラムインタフェースについて述べていますが、対話的なインストレー ションプログラムやその他エンドユーザが見るようなものについては触れられ ていません。 ネットワークアダプタ部門のマーケティング部は無料で TR を公開するように しています。このプログラムを効率良くしておくために、'CardFacts' と呼ば れるものに集約しています。`CardFacts' とは自動化された電話応対システム です。プッシュホンで電話することによってファックスの形で取り寄せること ができるのです。 TR を手に入れるには、 408-727-7021 の CardFacts へ電 話してみてください。ドキュメント番号 9070 の Deveoper's Order Form を 依頼しましょう。電話するときには、すでにファックスが準備されているよう にしてください。Order form の書式に従って記入し、 408-764-5004 へ ファックスしてください。マニュアルは Federal Express の 2nd Day サービ スで届くはずです。(訳注 実際にはアメリカ(?)の電話番号ですので、このま まダイヤルしないでください) マニュアルが気前良く出されすぎていると考えている人がいて、彼らはシステ ムが高価すぎる証拠、あるいは時間や手間がかかりすぎている証拠を探そうと しています。今のところ、3Com の顧客はこの点について実際に満足してお り、我々が行ってきた要求のレベルは問題ないと言えます。我々には協力を続 けていくことと、このように節度を保つことも必要です。 8.5. AMD PCnet / LANCE ベースのカードに関する注意 AMD LANCE (Local Area Network Controller for Ethernet) は、独自の製品 で 79C960 としても知られている `PCnet-ISA' チップによって置き換えられ ました。 AMD が出している比較的新しいチップである 79C960 は現在リリー スされている多くの新しいカードの中核をなしているものです。`LANCE' とい う名前は使われていない場合が多く、新しいチップを古い名前で読んでいる人 もいます。 AMD のネットワーク製品部門の Dave Roberts は親切にもこの チップに関して次のような情報を公開してくれました。 「機能的には NE1500 に相当するものです。レジスタセットは古い 1500/2100 アーキテクチャの LANCE に等しく、 古い 1500/2100 用ドライバが PCnet- ISA 上で動作可能でしょう。 NE1500 と NE2100 アーキテクチャは基本的には 同じ物です。 もともとの Novell が 2100 と命名しましたが、 そのときは 10BASE-2 と 10BASE-T の違いを指すものとして使おうとしていたようです。 10BASE-T のカードは 1500 番台の番号がつけられるはずでした。違いはこれ だけです。 HP や Racal-Datacom, Allied Telesis, Boca Research, Kingston Technology などを含む多くのメーカーが PCnet-ISA ベースの製品をリリース しています。いくつかの製造メーカーがソフトウェアによってカードの設定を 可能にするような「ジャンパ無し」機能を追加している以外は、これらのカー ドは基本的には同じものです。しかし、ほとんどのカードはこのような「ジャ ンパ無し」機能は持っていません。 AMD が PCnet-ISA 使うカード向けに標準 デザインパッケージというものを提供していて、多くの製造メーカーはそれを 変更なしに利用しているためです。つまり、誰でも PCnet-ISA ベースのカー ド用ドライバを書いてみようという人はデータシートを AMD から取り寄せる ことができるということです。AMD の literature distribution center (800)222-9323 に電話して、 Am79C960, PCnet-ISA データシートに関して聞 いてみてください。なお、これは無料です。 通常のカードであるかどうかを調べる一番簡単な方法は、直接そのカードを見 てみることです。もし、通常のカードであれば、大きなチップと、水晶振動 子、小さな IEEE アドレス PROM、そしておそらくブート ROM のためのソケッ ト、そしてコネクタ( これは提供されているメディアオプションに依存して 1/2/3 個 と変化します )が付いています。10BASE-2 カードであれば、トラン シーバがいくつか載っているということに注意してください。なお、PCnet- ISA チップからは離れたコネクタ周辺に載っていることが多いようです」 カードをいじってみたい人に注意してほしいのは、LANCE カードでも実装が異 なれば「リスタート」の方法も異なるということです。鳴りやんだところで信 号を拾いあげるものもあれば、鳴り始めた時点で(ちょうど初期化されたかの ように)信号を拾いはじめるものもあります。 8.6. マルチキャストと無差別モード Donald が貢献してくれたことのもう一つは、マルチキャストと無差別モード のフックの実装に関してです。リリースされている ISA 用の全てのカード(つ まりアルファ版ではないもの)のドライバは無差別モードをサポートしていま す。 Donald は以下のように述べています: 「概念的に実装が簡単な無差別モード から始めてみよう。ほとんどのハードウェアに対してしなくちゃならないの は、レジスタビットを設定することだ。そうすれば、ワイヤ上の全てのパケッ トを受け取ることができる。さて、これはだいたいこんな要領だ。いくつかの ハードウェアはボードを閉じて (これはいくつかのパケットを落してしまうか も知れない)、再設定し、そしてさらに再度イーサネットカードを有効にす る。ねえ、簡単だろう。さて、次にこれほどは明白じゃないことをしよう。マ ルチキャストだ。マルチキャストをするには二通りのやり方がある: 1. 無差別モードとバークレーパケットフィルタ(BPF)のようなフィルタを利用 する。 BPF はパターンマッチングを行うスタック言語で、自分が調べたい アドレスだけを選択してくれるようなプログラムを書くことができる。 BPF のメリットはとっても一般的でプログラム可能だってことだ。逆にデ メリットは無差別モードに設定し、登録されているパケットフィルタを通 してネットワーク上へ全てのパケットを飛ばすことをカーネルが避けるた めの一般的な方法がないということだ。詳しくは ``バークレーパケット フィルタ''を見ること。 2. ほとんどのイーサチップが持っている内蔵のマルチキャストフィルタを利 用する。 ここでいくつかのイーサカードやイーサチップが持っている機能を紹介しなけ ればならないだろう: チップ/カード 無差別モード マルチキャストフィルタ ------------------------------------------------------ Seeq8001/3c501 あり Binary filter (1) 3Com/3c509 あり Binary filter (1) 8390 あり Autodin II six bit hash (2) (3) LANCE あり Autodin II six bit hash (2) (3) i82586 あり Hidden Autodin II six bit hash (2) (4) 1. これらのカードはフィルタを搭載しているといっているけれど、これに単 純な yes と no で「全てのマルチキャストパケットを受信する」か「全て のマルチキャストパケットを受信しない」を選ぶものだ。 2. AUTODIN II は標準的なイーサネット CRC (チェックサム) の多項式だ。こ の仕組みではマルチキャストアドレスはハッシュテーブルにハッシュさ れ、取り出すことができる。もし、相当するビットが有効になっていれ ば、そのパケットは受信される。イーサネットのパケットは処理を行うハ ードウェアが実に単純になるように設計されている。つまり、最初の 6 オ クテット(行き先アドレス) の後、CRCからの 6 ビット(通常は)(常にエラ ーのチェックに使用される)をラッチして、ハッシュテーブルへのインデッ クスとして利用するんだ (6 ビット、つまり、64 ビットテーブルというこ とになる)。 3. これらのチップは 6 ビットのハッシュを利用し、ホストが計算してロード したテーブルを持っていなければならない。つまり、カーネルが CRC のコ ードを含んでいなければならないということになる。 4. 82586 は内部的に 6 ビットのハッシュを利用する。しかし、受信許可する マルチキャストアドレスのリストからハッシュテーブルを計算する。 これらのチップのどれもが完全なフィルタリングを行わず、そして最終的な フィルタリングをするために中間レベルのモジュールが必要であることに注目 すること。また全ての場合において、受信許可したマルチキャストアドレスが 変化した場合ハッシュテーブルを再計算するため許可されたマルチキャストア ドレスの完全なリストを保持しなければならないことにも注目するといい」 8.7. バークレーパケットフィルタ (BPF) 開発者の一般的な考えは、BPFはカーネルによって提供されるのではなく、(で きればあまり使われない)互換性ライブラリによって提供されるべきであると いうものです。 知らない人のための説明: BPF とはカーネルのネットワーク層にどのパケット が関与しているのかを指定するための機構です。これはネットワークコードの 下位のレベルにおいて専用のスタック言語インタプリタとして実装されていま す。アプリケーションはこの言語によって書かれたプログラムをカーネルに渡 し、カーネルはやってくるパケットに対してこのプログラムを実行します。も しカーネルが複数の BPF アプリケーションを持っている場合、それぞれのプ ログラムはそれぞれのパケットに対して実行されることになります。 問題は、パケットフィルタプログラムによってアプリケーションがどの種類の パケットと本当に関係があるのかを推測することが難しいということです。し たがって、常にフィルタを実行するということが一般的な解決法になります。 マルチキャストアドレスに向けて低いデータ転送量のストリームを抽出するた めに BPF プログラムを登録するアプリケーションを想像してみてください。 ほとんどのイーサネットカードは、多くの不必要なマルチキャストのパケット を無視する 64 のエントリからなるハッシュテーブルとして実装されているハ ードウェア的なマルチキャストアドレスフィルタを持っているため、容易にこ の処理を行ってしまう可能性があります。しかし BPF の場合、カーネルはイ ンタフェースを無差別モード、つまり「全て」のパケットを受信するモード、 に変更しなくてはならず、これらの処理をこのフィルタによって行わなければ なりません。これは動作しますが、この処理はパケットを要求するプロセスへ きちんと応答することが非常に難しいのです。 9. ラップトップ/ノートブックコンピュータでのネットワーク ラップトップをネットワークにつなぐ方法は、あまり多くありません。SLIP コードを使用する (そしてシリアルポートの速度で使用する) 方法、PCMCIA スロットをサポートするノートを購入する方法、ドッキングステーション付の ラップトップを購入して ISA イーサカードを挿す方法、あるいはパラレルポ ート用のイーサネットアダプタを使用する方法です。 9.1. SLIP これがもっとも安価な解決法なのですが、とほうもなく困難な方法です。おま けに高速な転送速度は期待できないときています。SLIP は実際のところイー サネットカードとは関係ないので、ここではこれ以上説明しません。NET-2 HOWTO を参照してください。 9.2. PCMCIA のサポート 自分の持っているハードウェアが何であるか、正確に把握してください (すな わち、カードのメーカー、PCMCIA のコントローラチップのメーカー)。それか ら LAPTOPS チャネルについても尋ねてください。いずれにせよ、全て事が単 純に行くとは思わないことです。そこらじゅういじくったり、カーネルにパッ チを当てたりする必要があるかもしれません。いつか `make config' とタイ プできる日が来ることでしょう 8-) 訳注: pcmcia-cs パッケージのおかげで、パッチ当てなどの作業はほとんどい りません。また、pcmcia-cs に同梱の SUPPORTED.CARDS に記載されているカ ードさえ購入すれば、さほど問題は生じないでしょう。 現時点では、2つの PCMCIA チップセット、Databook の TCIC/2 と Intel の i82365 がサポートされています。 (訳注: i82365 には多くの互換チップが存 在します。) いくつかの便利なプログラムが tsx-11.mit.edu の /pub/linux/packages/laptops/ にあります。PCMCIA イーサカードのドライバ から、PCMCIA のコントローラチップと通信するためのプログラムまでありま す。これらのドライバは、通常特定の PCMCIA チップ (すなわち Intel の 82365 か TCIC/2) 用に開発されているので注意してください。 NE2000 互換カードについては、DOS 環境でカードを設定し、その後 DOS のコ マンドプロンプトから loadlin 経由で Linux を起動させるようにして成功し ている人もいます。 PCMCIA のサポートを望んでいる Linux ユーザに朗報です。大きな進歩が実り つつあります。この成果の先駆けを担っているのが David Hinds です。彼の 最新の PCMCIA サポートパッケージは以下から入手できます: PCMCIA Package ファイル名は pcmcia-cs-X.Y.Z.tgz のようになっていて、X.Y.Z が最新のバ ージョン番号です。これはたぶん tsx-11.mit.edu の FTP サイトにも置かれ るはずです。 Donald の PCMCIA イネーブラはユーザレベルの処理として動作し、David Hind のそれはカーネルレベルの解決法であることに注意してください。David のパッケージの方が、かなり広い範囲で利用されていて開発も継続されている ことから、そちらを利用した方がいいでしょう。 9.3. ドッキングステーションの ISA イーサカード ラップトップ用のドッキングステーションは大体 250 ドル程度し、2 つのフ ルサイズ ISA カード、2 つのシリアルと 1 つのパラレルポートを使用できま す。ほとんどのドッキングステーションはラップトップ本体のバッテリから給 電され、短い ISA カードを使用する場合には、ドッキングステーション内部 に追加のバッテリを内蔵できるものもあります。安価なイーサカードを追加す ることで、フルスピードのイーサネットの性能を享受できます。 9.4. ポケット/パラレルポートのアダプタ `ポケット' 型のイーサネットアダプタもあなたの要求に合致するかもしれま せん。パラレルポートの制限のためその転送速度はそれほどすごいというわけ にはいきません (たぶん 200kB/秒 がいいところ?)。 また、ほとんどの場合壁のコンセントに拘束されることになります。ラップ トップのキーボードポートから電力を供給するケーブルを購入あるいは自作す ることにより、コンセントの AC アダプタを使用しなくて済むことがあります (``キーボード電源''の項を参照)。 (訳注: 一部サブノートでは、電流供給能 力に問題があるかもしれません。) ``DE600 / DE-620'' および ``RealTek'' の項にポケットアダプタのサポート に関する情報があります。 10. その他 ここでは、ほかに適当な場所がなかった問題をとりあつかっています。関連の 薄い問題や、万人向きではないテーマについてもここでは取り上げます。 10.1. カーネルにイーサネット関連引数を渡す方法 起動時にカーネルが受け取る命令には、二つの種類があります。ether and reserve がその二つです。 LILO や loadlin を使って命令を伝えることもで きます。とにかく、オプションを付けることができるブートユーティリティな ら何でも OK です。 たとえば、引数を三つ(123, 456, 789 ということにしておきましょう)とる `blah' という命令を LILO を使って引き渡すときには、 LILO: linux blah=123,456,789 としてください。起動時引数に関する詳細については、 BootPrompt-HOWTO をお読みください。 10.1.1. ether コマンド ether= という引数は、 カーネルにじかに組み込んであるドライバに対して用 いるものです。この引数は、モジュラー化してあるドライバに対しては何の効 果もありません。基本的な使い方は ether=IRQ,BASE_ADDR,PARAM_1,PARAM_2,NAME のようになります。 オプションはいずれも省略可能です。数字以外の最初のオプションを NAME と みなすことになっています。 IRQ:説明するまでもないでしょう。`0'(通常の初期設定値)にすると IRQ が自 動設定になります。歴史的な経緯によって、IRQ は最初のアドレスではなく、 ベースアドレスで設定するようになっています。何か別のことが変更になると きには、この点も改まることでしょう。 BASE_ADDR:これも説明の必要はないでしょう。`0'(通常の初期設定値)にする と、各カードごとに決まっているアドレスを順に試していくことになります。 PARAM_1: もともとこれは、WD80*3 のようなイーサネットカードの共有メモリ 開始アドレス値を変更するための引数でした。なかには、この引数の下位 4 ビットをデバッグメッセージレベルを設定するために利用しているドライバも あります。この場合の初期値は 0 で、メッセージレベルは 1 から 7 の 7 段 階に設定できるようになっています(一番詳しいのが 7 になります)。初期値 の 0 の場合には、いっさいメッセージが表示されなくなります。また、LANCE ドライバはこの引数の下位 4 ビットを DMA の選択に利用しています。この値 を指定しない場合には、 DMA 自動設定となります。 PARAM_2: 3c503 ドライバはこの引数を使って、内部トランシーバと外部トラ ンシーバの選択を行います。初期値 の 0 は内部トランシーバを表していま す。外部 AUI を選択する場合には、この値を 1 に設定します。Cabletron E21XX カードは、この変数の下位 4 ビットを出力メディアの設定に利用して います。この値を指定しない場合には、自動検出となります。 NAME: 設定した各値を使用するネットワークデバイスを指定する引数です。標 準的なカーネルでは `eth0', `eth1', `eth2' あるいは `eth3' (バス接続イ ーサネットカードの場合)、 `atp0'(パラレルポート接続の場合)、もしくは `pocket' (イーサネットアダプタの場合)になります。アークネットドライバ は 'arc0' という名称を用いています。イーサネットカードが一枚しかない場 合には、`eth0' を試してみるというのが初期設定となっています。二枚以上 のカードを用いる際には、各カードのベースアドレスを LILO 引数として明示 的に与えてやる必要があります。1.0 のカーネルは LANCE ベースのイーサ ネットカードを特別扱いしていました。この場合には、 LILO 引数は無視さ れ、 LANCE カードはつねに `eth'となります(n は 0 から始まります)。 さらに LANCE 以外のイーサネットカードがある場合には、明示的にこれを `eth' と指定してやる必要があります。さらに、 `ether=0,-1,eth0' の ようにして 'eth0' に対する通常のチェックをオフにすること(もちろん、こ れはバグです)。 10.1.2. reserve コマンド この LILO 命令も、使い方は 上に記した 'ether=' の場合と同じです。つま り、以下のように lilo.conf のブートセレクタにこれを付け加えればいいの です。 reserve=IO-base,extent{,IO-base,extent...} デバイスドライバを特定範囲内におけるデバイス検出(自動検出)の対象外とす る必要があるコンピュータもあります。こんなことが必要となるのは、ハード ウェアの設計がお粗末なため、ブート時に凍結してしまう場合、検出に失敗す るハードウェアの場合、それまでに行った検出作業によってハードウェアの状 態が変化してしまう場合、あるいは単にカーネルが初期化できないハードウェ アの場合です。 reserve というブート時引数は、検出対象外とする I/O ポート領域を指定す ることによってこの問題に対処するためのものです。指定した領域は、カーネ ルのポート登録テーブルに書き込まれるので、あたかも何らかのデバイスが検 出済みであるかのように取り扱われることになります。ただし、大抵のコン ピュータでは、こうしたテクニックは必要ありません。この引数を設定するこ とになるのは、何らかの問題が発生した場合や、特別の場合だけです。 指定した範囲内にある I/O ポートはデバイス検出の対象外となります。この 手法は、何らかのデバイスが NE2000 と衝突したり、正しく認識できない場合 に利用されてきました。別の起動時引数によって明示的にその旨を指定しない 限り、正しいデバイスドライバでも指定範囲内にあれば検出から除外されてし まいます。つまり、大抵の場合には他の起動時引数と reserve 引数をいっ しょに使用することになるわけです。というのも、特定のデバイスを保護する ために reserve対象領域を指定するときには、通常そのデバイスの検出を明示 的に指定してやらなければないからです。アドレスが明示的に指定してあれ ば、大抵のデバイスドライバはポート登録テーブルを無視するようになりま す。 ブート行の例を以下に示します。 LILO: linux reserve=0x300,32 ether=0,0x300,eth0 こうすれば、0x300-Ox31f の範囲についてはイーサネットドライバ以外のあら ゆるデバイスドライバのチェックを行ないません。 ブート時に指定できるパラメータ引数には 最大 11 個という制限があるのが 普通です。ということは、reserve を用いて特定できる除外範囲の数は最大で も五カ所になります。特に込み入った指定が必要な場合には、reserve を何個 も並べることになります。 10.2. イーサネットドライバをモジュールとして用いる場合 今や大抵の Linux ディストリビューションは、ごく少数のドライバだけを組 み込んだカーネルを提供するようになっています。すなわち、大部分のドライ バを動的リンクが可能な独立したモジュールとして提供しているのです。モ ジュールドライバをロードするには、管理者が modprobe(8) コマンドを実行 するというのが普通の方法です。場合によっては、 `kerneld'(カーネル 2.0)あるいは `kmod'(カーネル 2.1)コールを利用してカーネルがモジュール ドライバを自動的にロードするようになっていることもあります。 お使いのディストリビューションには、イーサネットモジュール設定用のかっ こいい設定ツールがついているかも知れません。その場合には、まずそのツー ルを試してみるべきです。以下には、どんなすばらしい設定プログラムを使用 するときにも大切である要素、こうしたプログラムを用いて変更する条件につ いて知っておくべきことを記載しています。 どのモジュールを使用し、各モジュールに対してどのようなオプションを設定 するかについての情報は、通常 /etc/conf.modules ファイルが保存していま す。このファイルに記載する設定の中でもイーサネットカードに関して特に大 切なオプションは alias と options の二つです。 modprobe コマンドがモ ジュールに関する情報を提供する際に参照するのも、このファイルです。 現在使用中のカーネル用のモジュールは、/lib/modules/`uname -r`/net とい う名称のディレクトリにあるのが普通です。 uname -r は、カーネルのバー ジョン数(例: 2.0.34)を返してくるコマンドです。お使いのカード用のモジュ ールはここで見つかるはずです。 conf.modules ファイルで真っ先に必要となるのは、 eth0, eth1... といっ たネットワークインタフェースにどのドライバを用いるかを modprobe に教え てやるための情報です。これを設定するには alias コマンドを用います。た とえば、 ISA SMC EtherEZ という smc-ultra.oドライバモジュールを使用す るカードの場合なら、以下のようにしてこのドライバを eth0に alias して やることになります。 alias eth0 smc-ultra その他、options 行を用いて各モジュール(あるいは モジュールの別名) にど のようなオプションを設定するかを教えてやる必要があるかもしれません。上 の例の場合なら、alias 行が必要なだけで、options 行は不要です。カーネル は 「ISA カードを自動検出の対象にするのはよくない」という警告を発して くるでしょう(dmesg をご覧ください)。この警告がでないようにしたい時に は、別の行を付け加えて、どの I/O アドレスを使用するようにカードを設定 しているかをモジュールに伝えてやります。アドレスの指定には、下記のよう に 16 進数を用いてください(例:0x280)。 options smc-ultra io=0x280 大部分の ISA モジュールには、insmod コマンドを使って io=0x340 および irq=12 のような引数を与えることができます。こうした引数を与えておくこ とは必須、控え目にいっても強くお勧めできる作業です。というのも、こうし ておけばカード検出作業を回避できるからです。PCI デバイスや EISA デバイ スの場合とは違って、たいていの ISA デバイスについては、これを確実に自 動検出する方法は実際のところ存在しないのです。モジュール化したドライバ を使う場合にも自動検出を回避するようにしなければならないのは、それゆえ なのです。 各モジュールにどのようなオプションがあるかの一覧表は、以下のファイルに あります: /usr/src/linux/Documentation/networking/net-modules.txt このファイルを読んで、お使いのカードにはどのようなオプションが使えるか を知っておくことをお勧めします。 モジュールに与える値の境目にコンマを置くモジュールもあります。こうすれ ば、一つのモジュールで複数のデバイスを取り扱えるようになるからです。た とえば、 8390 系の全ドライバや PLIP ドライバでは、こうしたことが可能と なっています。以下に例を掲げます。 ______________________________________________________________________ options 3c503 io=0x280,0x300,0x330,0x350 xcvr=0,1,0,1 ______________________________________________________________________ 上の場合では、3c503 カード四枚を一つのモジュールが管理することになりま す。二番目・四番目のカードは外部トランシーバを利用しています。"=" やコ ンマの前後にスペースを作らないようにしてください。 ビジー状態のモジュールは取り除けないことにもご注意ください。つまりモ ジュールを取り除く前に、 ifconfig eth0 down (イーサネットカードの シャットダウン) を実行しておかなければならないのです。 lsmod は、使用中であるかどうかを問わずロードしている全モジュールを一覧 するためのコマンドです。モジュールを取り除くには rmmod を用います。 10.3. 関連文献 この文書で紹介している情報の大部分は、有力な情報源であるニュースグルー プ comp.os.linux への投書を元にしたものです。その他、Donald 本人が用意 している短いファイルも有益な情報源となっています。イーサネットカードを 組み込もうとしているのなら、 当然 NET-2 HOWTO を読むべきです。この HOWTO を読めば、使いたいソフトがちゃんと動くように設定できるはずです。 ハッカーの端くれを自認する方なら、これ以外の情報をドライバのソースファ イルからも嗅ぎ出すことができるに違いありません。重要な情報は、実際のコ ードが始まる前の一〜二段落にあるのが通例です。 Linux に特化していない情報をお求めの方(たとえば、10BaseT や AUI とは何 ぞやとか、ハブはどんな機能を果たしてるのかといった情報)には、ニュース グループ comp.dcom.lans.ethernet や comp.sys.ibm.pc.hardware.networking が特にお勧めです。ニュースグループ の過去記事は dejanews.com などが保管しています。これも情報の尽きせぬ宝 庫といえるでしょう。ニュースグループの FAQ は RTFM (ここはあらゆるニュ ースグループの FAQ を収集しています)から入手できます。 URL は以下の通 りです。 Usenet FAQs また、「イーサネットホームページ」というものもあります。URL は Ethernet-HomePage です。 10.4. 免責条項・著作権 この文書は無謬の聖典ではありません。とはいうものの、記載している情報の 大部分は最新のものになっているはずです。お使いのコンピュータに何が起 こってもだれも責任は取ってくれません。自己責任で行動してください。イー サネットその他のハードウェアが煙を噴く(まず、そんなことはあり得ません が)ようなことがあっても、当方は責任を負いかねます。「この文書が記載し ている情報を元にして行った行為によって発生したいかなる損害に対しても、 著者は責任を負いません」 この文書の著作権は、Paul Gortmaker に帰属します Copyright (c) 1993-1997。この文書全体を複製・配布する際には著作権に関するこの注意事 項を添付するという条件を守ってください。またこの注意事項を各複製物のそ れぞれに添付するようにしてください。 この文書を加工したものを複製・配布する際にも、著作権に関するこの注意事 項原本全体を添付してください。この文書からの派生物を配布する際の条件 は、この文書の配布条件と同一のものとしてください。 この文書を他の言語に翻訳する際の条件は、派生物の配布の際の条件と同じも のとします。 この文書を翻訳なさろうとする方へ。まず、SGML ソース(HOWTO メインサイト から FTP 経由で入手できます)を翻訳することをお勧めします。そうしておけ ば、後から他の形式のものを作成することも可能となります。翻訳に用いた元 の英語版 SGML ソース を保存しておくことを忘れないように。この文書の新 版が出たときにも、新しい SGML ソースを調達して diff -u old.sgml new.sgmlといった感じの作業をすれば、どこを改めればいいかも一目瞭然にな ります。翻訳版の SGML ソースを変更する作業も簡単になるというわけです。 全体を読み直したり、訳し直したりする必要がなくなるからです。 この文書を出版物の一部として利用する場合には、電子メールで御一報くださ い。そうすれば、最新の情報を提供させていただけるからです。以前には、古 くなってしまった Linux HOWTO 文書が刊行されてしまったために、最新版で は解決済みの問題に関する質問に著者が悩まされてしまうということもあった のです。 10.5. 結び 本文書に誤字・誤植や、目に余るほど陳腐化した情報があることに気づかれた 方は、是非 e-mail をお寄せください。何かを見逃してしまうというのは、寛 大ではありますが、また安易なことでもあります。メールしていただいた変更 点を次の版に取り入れていない場合には、遠慮なく再送してください。受け 取った屑メイルの海のなかに紛れこんでしまったのかも知れませんから。 以上、よろしく御願いします。 Paul Gortmaker, p_gortmaker@yahoo.com 10.6. 日本語訳について 日本語訳は Linux Japanese FAQ Project が行いました。翻訳に関するご意見 は JF プロジェクト 宛に連絡してください。 改訂履歴を以下に示します。 v2.5, 18 November 1995 翻訳: 嶋崎@梨大 v2.7, 7 November 1999 翻訳: o 中谷千絵 (1 章) o 佐藤亮一 (2, 6, 10 章) o 中野武雄 (3 章) o 田中雄一郎 (4 章) o 藤原輝嘉 (5 章) o 伊藤祐一 (7 章) o さいとうたつや (8 章) o 谷口健二 (9 章) 訳語統一・校正: o 武井伸光 o 高城正平 o 水原文