Token-Ring mini-HOWTO Mike Eckhoff, mike.e@emissary.aus-etc.com v4.1, 7 January 1998 中野 正剛 sx3m-nkn@asahi-net.or.jp v4.1j1.0, 23 March 1998 この HOWTO は、カーネルパッチをインストールするときの助けになるよう に、また、いくつかの注意点を明確にするためにという目的で作成されていま す。 Linux に Token Ring ドライバを (たとえその一部であっても) インス トールする前には、この文書を一通り読んでおくことをお勧めします。 ______________________________________________________________________ 目次 1. 著作権とその他雑多な事柄 2. 必要なハードウェア 3. 必要なソフトウェア 4. インストールとセットアップ 5. NetTools のインストール 6. 既知の問題 7. 質問とそれに対するコメント 8. ディストリビューション固有のインストール手順 8.1 Slackware 96 8.2 RedHat 4.0 以降 9. 日本語版の謝辞 ______________________________________________________________________ 以下の方々に感謝します。 このドライバを書き、メンテナンスすることに自分の時間を割いてくれ ている Mark Swanson, Peter De Schrijver, David Morris, Paul Norton そして書き忘れているかもしれないその他全ての人々に。それ と linux-tr listserv をサポートしてくれている packrat に。 1. 著作権とその他雑多な事柄 私たちは、この HOWTO があなたのシステムに適用できるかどうかは保証しま せん。しかし、この文書のとおり行ったほとんどの人は、Token Ring ネット ワークを Linux にうまくインストールできています。 このHOWTOはあなた自信のリスクで用いてください!!! このHOWTOを用いること で問題が起こっても私たちに質問しないで下さい。 もし、このHOWTOで触れられていないドライバで何か問題が起こったなら、ど うぞ私にemailを送ってください。アドレスは以下のとおりです。 mike.e@emissary.aus-etc.com Linux on Token Ring Listservに参加したい方は、 majordomo@emissary.aus- etc.com 宛てに、本文に以下の一行を書いたメールを送ってください。 subscribe linux-tr [訳注: 以下の著作権表示に関しては、原文を優先します] この文書の著作権は、Michael Eckhoff にあります。この文書に関しては、そ の全部でも一部でも複製していただいて結構です。また、その媒体が物理的な ものであろうと、電子的なものであろうとかまいません。ただしその場合は、 必ずすべての写しに著作権を表示するようにしてください。また、商用の再配 布に使用することはかまいませんし、むしろ使用していただくことを奨励しま す。ただしその場合は、そちらにある情報が最新のものなのかどうかを確認し たいと思いますので、私に連絡をするようにして下さい。 This document is copyright (c) 1995-1998 by Michael Eckhoff. You may make copies of this document in whole or in part, in any medium physical or electronic, as long as the copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, please notify me so that I can make sure that you have the most current information available. 2. 必要なハードウェア まず、あなたの Token Ring カードがこのドライバでサポートされているのか どうかを確認してください。現在サポートされているのは、 Tropic チップ セットを使用したカードのみです。 動作するカードとして私が個人的に知っているものは以下のとおりです。 o 3Com 3C619B Token Link o 3Com 3C619C Token Link o HyperRing Classic 16/4 o IBM Turbo 16/4 ISA adapter** o IBM Token Ring Auto 16/4 ISA adapter o IBM Token Ring Auto 16/4 adapter /A o IBM Token Ring 16/4 adapter /A o IBM Token Ring adapter /A o IBM Token Ring adapter II (4 Megabit only) o IBM 16/4 ISA Token Ring card (16bit) o IBM 16/4 ISA Token Ring card (8bit) o Madge Blue (100% IBM compatable) [訳注: このリストには挙げられていませんが、 Olicom は、自社製の Token Ring カードに対して Linux 用のドライバを作成し、web で公開しています。 本文書の Q & A を参照してください] 他の全ての 100% IBMコンパチブルな、Shared-RAMタイプのアダプタもうまく 動作するはずです。特別に何かしてやらないと動かないカードを見つけたら私 たちに知らせてください。 さしあたっては、Shared RAMのサイズは 16KB に設定することをおすすめしま す。 おそらく問題を起こすであろうカードたち: IBM Turbo 16/4 ISA アダプター このアダプターは、Linux の Token Ring ドライバで動作します。ただ し、このカードを Auto 16/4 コンパチブルモードで動作させる必要が あります。設定するための一番簡単な方法は、カードに付属の LANAID ディスクを使って以下のコマンドを実行させることです。 LANAIDC /FAST=AUTO16 それからマニュアルにしたがって、LANAIDC もしくは LANAID を使用して カードの設定を行ってください。 IBM トークンリング・ネットワーク 16/4 アダプター II このアダプターは*動作しません*。なお、このカードと IBM Token Ring adapter II (4M bit) を混同しないで下さい。そちら [訳注: 4M bit の方] は動作します。このカードは ISA の DMA/バスマスタを使用 するアダプターです。 3Com TokenLink Velocity ISA このカードは、あなたのところで動くかもしれないし動かないかもしれ ません。私は何人かの人からこのカードが何の問題も無く動作するとい う報告を受けています。しかし別の人たちはエラーの嵐にみまわれたと いっています。 PCI アダプター 現在のところ、サポートされている IBM PCI アダプターはありませ ん。 [訳注: もちろん Token Ring に限っての話。ただし、次のカード については開発が進められているようです] IBM Auto LanStreamer 16/4 Token-Ring PCI Adapter 現在のところサポートされてはいませんが、作業は行われています。こ のドライバは、完成したあかつきには Full Duplex で動作するはずで す。 3. 必要なソフトウェア 注意: もし、あなたが使用している Linux のディストリビューションが 2.0 だったなら(*)、この文書のディストリビューションに依存した章に進 んでください。以下に書かれていることは、主に 1.2 カーネルについ てのものです [訳注: カーネルのバージョンが 2.0.xxだったなら。も ちろん 2.1.xx 以降もあてはまるでしょう。また、2.x のユーザーの方 も、6章および 7章には目を通しておいてください] ちなみに、ここに書かれていることは、すでに Linux が立ち上がって動作し ていることを前提にしています。 Token Ring パッチを以下の場所から入手します。 パッチの当たったNetToolsのソースコードを以下の場所から入手します。 パッチ用のディレクトリを作成し(例えば /usr/src/patches)、パッチのファ イルをそこに置きます。 mkdir /usr/src/patches central directory for patch storage mkdir /usr/src/patches/token place TokenRing patch here 4. インストールとセットアップ 注意: 以下の手順は 1.2 カーネルに Token Ring サポートのパッチを入れる ためのものです。もし、2.0 カーネルを使用しているのであれば、現在 のソースをコンパイルして、token ring support の欄に ``yes'' また は ``module'' とするだけで OK です。 [訳注: カーネルコンパイルの 詳細に関しては、Kernel HOWTO 等を参照してください。] 1. Token Ringカードをシステムに装着し、あなたのシステムにあわせて設定 してください。Linux で動作させる前に DOS で動作確認を行うのは良いこ とです。DOS で動作したなら、同じ設定で Linux でも動作する可能性があ ります。プラグアンドプレイのアダプタの場合は、可能であれば、動作し たときの設定で固定するようにして(プラグアンドプレイを禁止して)く ださい。 2. まず、Linux ディレクトリ [訳注: /usr/src/linux] のバックアップを とってください。これはカーネルのソースからパッチを完全に除去して、 元のコードに戻さなければならなくなったときのためにやっておくべき大 変重要な作業です。 cd /usr/src tar cvzhf linuxbak.tar.gz linux 3. Token Ring パッチを展開する。 cd /usr/src/patches/token gzip -d TokenRing.patch-1.2.0.gz 4. カーネルのソースに Token Ring パッチを当てる。 cd /usr/src/linux patch -p1 < /usr/src/patches/token/TokenRing.patch-1.2.0 -または- patch -p1 < /TokenRing.patch-1.2.0 5. パッチの中で*はねられた*部分を探して、必要に応じて変更する。 find . -name \*.rej -print 6. orig ファイルを探して、それらを消去する。 find . -name \*.orig -print | xargs rm 7. カーネルを設定し、make し直す。 注意: もしスワップファイルを設定している場合、アクティブになっているこ とを確認してください。 cd /usr/src/linux make config (パッチが config.in ファイルに2行つけ加えことによって、以下のオプショ ンが現れるようになるはずです) Token Ring support (CONFIG_TR) [y] (そしてリストのずっと下の方を見ていくと、次の選択肢があります) IBM Tropic chipset based adaptor support (CONFIG_IBMTR) [y] make dep make clean make zImage 8. LILOをセットアップします。 はじめに、/vmlinuz となっている現在のカーネルを vmlinuz.old に名前 を変えます。次にカーネルを /vmlinuz としてコピーします。私のシステ ムでは、 /usr/src/linux/arch/i386/boot/zImage を /vmlinuz にコピーし て、 /etc/lilo.conf を書き換えて、そのカーネルがブートするよ うにしてやるという手順になります。 ここで、プロンプトから ``lilo'' を実行してください。 9. これで、あとはシステムをリブートすれば Token Ring カードが使用可能 になっているはずです。その他の特別な設定情報に関しては、ディストリ ビューションに固有の情報の項を参照してください。 5. NetTools のインストール [訳注: この章もカーネル 1.2 の人を主な対象にしています] NetTools パッケージには、ネットワークデバイスとやり取りするのに使用す る多くの基本的なユーティリティーが含まれています。arp や rarp、route、 ifconfig、netstatといったプログラムが含まれます。これらのプログラムは デフォルトで Token Ring を扱えるようになっていないので、NetTools パッ チを当てる必要があります。そうすることによって、これらのユーティリティ ーが Token Ring ドライバとともにより効率的に使用できるようになります。 注意: 1.2.x カーネル用 NetTools の現在のバージョンは、1.2.0.です。あな たのカーネルが 2.0 であれば、nettools はすでにアップデート済みで す。いずれにしろ、最新のソースは以下のところから入手が可能です。 1. (1) Nettools のソースをあなたのソースディレクトリにコピーし、tar で 展開します。 cp net-tools-1.2.0.patched.tar.gz /usr/src tar -zxvof /usr/src/net-tools-1.2.0.tar.gz 2. (5) net-tools ファイルを make します。 cd /usr/src/net make install 6. 既知の問題 私個人としては、あまり問題には出くわしていません。それほど長い間使い込 んではいませんが、少なくとも私にとっては完璧に動いています。 もし、1.2.x カーネルでドライバの問題が起こった場合は、2.0 にアップデー トしてください。この文書を書いている時点で最新のバージョンは 2.0.33 で す。2.0 の Token Ring ドライバには、1.2 用パッチよりずっと多くの改良が なされています。ところがそのほとんどは、1.2 パッチには反映されていない のです。 また、Linux 2.0 カーネルには Toke Ring のためのパッチを当てる必要はあ りません。ソースにすでに組み込まれています。なお、2.1 に組み込まれるで あろうコードに対応するテスト用パッチが公開されていますので、適用してみ たい方はされると良いでしょう。 7. 質問とそれに対するコメント Q: Token Ring ドライバはモジュールとしてコンパイルできますか? A: はい。それは可能ですし、問題なく動作します。モジュールとしてコン パイルする時には特別なパラメータを使用することができます。例えば RedHat のブートディスクなどで、(NFS/FTP インストール時等) Token Ring カードを Ethernet デバイスだというように見せかけてインスト ールプログラムをだますといった必要があれば、``device'' パラメー タで、デバイス名を tr0 以外に設定することが可能です。複数のアダ プタを使用している場合、このオプションを使うとおそらく問題が起こ ると予想されます。しかし、下記の例のような記述をすることによっ て、このちょっとした互換性の問題は回避することができます。 /sbin/insmod ibmtr device=eth0 Q: ``0011'' というエラーコードが表示されます。何が起こっているので しょう? A: ネットワークに正しく接続されているか、接続されていなければトーク ンリングカードにループバックコネクタが取り付けられているかどうか 確認してください。このメッセージは、リングがオープンできないとい うことを表わしています。99.99% の確率で、エラーの原因は単にカー ドのコネクタに何も接続されていないことによるものだと思います。 C: もしあなたのマシンにサウンドカードがセットされていて、I/O ベース アドレスが 0x220 にセットされていたなら、I/O ベースアドレスを 0xa20 にセットした Token Ring アダプタと衝突を起こします。 [訳 注: ISA アダプタはアドレスのデコードを(伝統的に) 10bit しかして いないものが多い。その場合、アドレスの bit10 以上は切り捨てられ てしまうため、0x220 と 0xa20 の区別がつかない] サポートされてい るはずのアダプタがうまく動作しない場合、サウンドカードが取り付け てあったなら、Token Ring カードの設定を 0xa24 に設定するか、また はサウンドカード側の I/O アドレスを移動する、もしくはサウンドカ ードそのものを抜いて試してみてください。 さらに... 以下は、私が受け取った Token Ring と Linux に関する email です。 いくつかの文書では、スペースを節約するために重要でない部分を削除 してあります。 Q: 差出人: "Mr. Chuck Rickard" 題名 : Re: Token Ring Kernel patch パッチを入手し、それを当ててコンパイルし直しました。ブート 時に、"tr0: Can't assign device to adapter" (tr0: アダプタ にデバイスをアサインできません)というメッセージが出てしまい ます。tr1 にした場合も同様です。何か分かることはありますか? よろしくお願いします。 Chuck Rickard (chuck@umbc8.umbc.edu) A: 差出人: David Morris 表示されるのがこのメッセージだけなら、その意味するところは、アダ プタ情報を得るための PIO リクエストのところでアクセスしているの が全く離れた I/O アドレスで、その I/O アドレスに Token Ring カー ドを発見できないということです。(ibmtr.c の segment = inb(PIOaddr)) の部分を参照してください) Q: 差出人: Mike Glover 題名 : Token ring problems. (Token ring での問題) 返事をありがとう。以前投稿したものが正しくなかったので、再 投稿します。ところで、以下はブート時の /var/adm/messages フ ァイルの一部分です。 May 2 10:03:14 linux kernel: tr0: Unable to assign adapter to device. May 2 10:03:14 linux kernel: tr1: Unable to assign adapter to device. tr0: Unable to assign adapter device (アダプタをデバイスに アサインできません)となっている部分が混乱しているところで す。とにかくドキュメントの分量が少ないので、このメッセージ に対してどう対処してよいのか分かりません。何か Token Ring に関する情報を設定していないためであろうことは分かるのです が、どこに設定すればいいのかが分かりません。 ハードウェアは以下のとおりです。 PC 互換機 (厳密に言うと Dell OMNIPLEX 560) Token ring カードは Olicom 16/4 Adapter DOS の Token Ring ドライバは持っていて、それだとネットワー クにつながります。そういうわけなのでカードには問題はないと 思います。Linux 側での設定が、何かほんの少し足りないだけの ことだと思うのですが。 A: Olicom 16/4 アダプタは Tropic Chipset を使用していません。こ の HOWTO の最初に挙げたリストの中にあるカードを使用してくださ い。 [訳注: 現在 (98/3/17)、いくつかの Olicom 製 Token Ring カード 用のドライバが Olicom の web サイトからダウンロード可能になっ ています。詳細は http://www.olicom.com を参照のこと] Q: 差出人: Mike Glover 題名 : Found an IBM card...(IBM カードは見つけたのですが…) IBM Token Ring カードを見つけ、入手しました。しかしまだ動か せていません。(/etc/rc.d/rc.inet1 の ifconfig エントリーを eth0 から tr0 に換えてあります。) 以下は /var/adm/messages ファイルの一部です、 May 2 16:23:07 linux kernel: IPX Portions Copyright (c) 1995 Caldera, Inc. May 2 16:23:07 linux kernel: tr0: PIOaddr: a20 seg/intr: b8 mmio base: 000dc000 intr: 0 May 2 16:23:07 linux kernel: tr0: Channel ID string not found for PIOaddr: a20 May 2 16:23:07 linux kernel: tr0: Expected for ISA: 5049434f3631313039393020 May 2 16:23:07 linux kernel: tr0: found: 000902003021111000182000 May 2 16:23:07 linux kernel: tr0: Expected for MCA: 4d4152533633583435313820 May 2 16:23:07 linux kernel: tr0: Unable to assign adapter to device. May 2 16:23:07 linux kernel: tr1: Unable to assign adapter to device. May 2 16:23:07 linux kernel: PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS OPTIMIZE_FLAGS どういう意味のメッセージなのでしょうか。私にはあまり良く分 かりません。 A: 差出人: David Morris このメッセージの意味は、MMIO 領域のメモリが衝突しているか、ドラ イバと互換性の無い Token Ring カードを使用しているということで す。(少なくともシグネチャは既知のものではありません) Q: 差出人: Mike Glover 題名 : Almost there... 以下は私のところの messages ファイルの内容です。 May 3 14:50:24 linux kernel: tr0: now opening the board... May 3 14:50:24 linux kernel: tr0: board opened... May 3 15:11:47 linux kernel: tr0: Arrg. Transmitter busy for more than 50 msec. Donald resets adapter, but resetting May 3 15:11:47 linux kernel: the IBM tokenring adapter takes a long time. It might not even help when the May 3 15:11:47 linux kernel: ring is very busy, so we just wait a little longer and hope for the best. May 3 15:11:47 linux kernel: tr0: Arrg. Transmitter busy for more than 50 msec. Donald resets adapter, but resetting May 3 15:11:47 linux kernel: the IBM tokenring adapter takes a long time. It might not even help when the May 3 15:11:47 linux kernel: ring is very busy, so we just wait a little longer and hope for the best. May 3 15:11:47 linux kernel: tr0: Arrg. Transmitter busy for more than 50 msec. Donald resets adapter, but resetting Arrg で始まる行は telnet や rlogin、ftp でリモートマシンに接続し たときのみに表示されます。一度起こると非常に長い間接続が止まって しまいます。他の全てのハードウェア(SCSI カードが 1枚)を外して Token Ring カードだけで試してみました。同じでした。この結果から、 ハードウェア IRQ 云々の論争に及ぶことはないと思います。 以下に示すのが、カード上の DIP スイッチの設定です。 1 Up | 2 Down | 3 Down | According to the manual this sets the 4 Up | base address to CC000 Which is fine for 5 Up | my machine. 6 Down | 7 Down + This sets the IRQ to 2. Which is also fine 8 Down + 9 Up X Primary Lan adapter. Which it is. 10 Up = 16 KB shared RAM size. This OK? 11 Down = 12 Up # 16 Mbps Data rate. DIP スイッチの設定か、ルートテーブルやその他のネットワーク情報の 設定を疑っているのですが。 ではさようなら、 Mike A: Arrg に関する問題は 2.0 カーネルでずいぶん良くなっています。 しかし、問題解決のための全てのパッチが 1.2 に反映されているわ けではありません。今回の原因はその点にあることも考えられま す。もし、あまりにも多く Arrg メッセージがでるようでしたら Linux 2.0 に移行してみていただけませんか。 8. ディストリビューション固有のインストール手順 8.1. Slackware 96 まだあなたのシステム上で ``netconfig'' を走らせたことがなければ、まず は走らせてみて下さい。そして、(実際には無くても) Ethernet カードがマシ ンにセットされているという設定にしてください。 次に /etc/rc.d/rc.inet1 スクリプトを編集して、デバイス名が eth0 となっ ている部分を tr0 に書き換えます。以下に手順を述べます。 下記のような行が見つけられると思います。 /sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK} この行を以下のように変更します。 /sbin/ifconfig tr0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK} 8.2. RedHat 4.0 以降 RedHat ディストリビューションの Linux には、X Window 上で動作する control panel というすばらしいツールが付属しています。これを使ってモ ジュールやデバイスの設定を行うことができます。Token Ring アダプタを追 加する場合も、RedHat を普通にインストールした環境 (カーネルなどそのま ま) であれば Token Ring サポートはすでにモジュールとしてコンパイルされ ていますので、再コンパイルの必要はありません。次のコマンドを試して、表 示される情報を確認してみてください。 modprobe ibmtr もし、使用しているアダプタの情報が表示されていれば動作する可能性があり ます。(そのアダプタがサポートされているものであればの話ですが) 設定を変えるのに一番簡単なのは control panel を使うことです。まず最初 に kernel module control の画面を開き、新しい Token Ring 用のネットワ ークデバイスをロードします。すると ibmtr ドライバがブート時に自動ロー ドされるようになるはずです。それから network configuration を開い て、tr という新しいデバイスを追加し、IP アドレス等の設定を行います。 あとはリスタートしてやれば、RedHat 4.0(かそれ以上) の Linux 上で Token Ring が使えるようになっているはずです。 ここで注意していただきたいことがあります。ここに書いた RedHat に関して の手順は、あくまでも私が頭の中で思い浮かべながら書いたものなのです (実 際に作業しながら書いたわけではありません)。 といいますのも、私は自分の (RedHat ディストリビューションの Linux) システムの構成をそんなにいつも いじってばかりいるわけではありません。そういうわけで、この部分は私の記 憶に頼っています。ただ、いずれにせよ、この文書を読んでいただくことで、 必要となる作業はお分かりいただけると思います。 9. 日本語版の謝辞 この文書の作成に当たっては、有益なご助言をいただいた川岸 良治さん ほ か、JF の皆さんに感謝いたします。 日本語訳: 中野 正剛 (1998/03/23) (SGML conversion, y.senda (2001/08/30))