BOCA-HOWTO _Installing a Boca 16-port serial card (Boca 2016) with Linux_ David H Dennis, david@freelink.net 1 August 1997 高橋 聡 hisai@din.or.jp 14 Mar 1999 この HOWTO は David H Dennis, david@freelink.net が維持、管理していま す。このドキュメントは BocaBoard を動作させようと四苦八苦している方々 にとって役立つと思います。 BocaBoard に高い関心をもっている方々の大多数は、Internet Service Providers (ISP) を自分で運営することにも興味を持っています。あなたがそ の一人なら、私の web サイト で Inet-Access FAQ をご覧ください。そこにはネットワークへの接続方法と、ISP ビジネスを 成功へと導く方法について述べた 9,000行を越える文章があります。 Kevin Traas 氏からこの FAQ のアップデート情報をいただきました。主な訂正内容 は、mknod についての情報です。またこのデバイス用のケーブルについての、 新しい情報も提供してくれています。 1. 警告! BocaBoard のようなマルチポートシリアルカードは死に体です。 Internet Service Provider (ISP)を行っておられるなら、もうこのようなデバイスを利 用しようと思わないでしょう。それは新しい 56k モデムの規格は、もうこれ らのデバイスをサポートしないからです。そのかわりに Livingston PM3, Cisco 5200 や US Robotics Total Control といったデジタル モデム/ター ミナル サーバが必要となります。そのような機材を採用しなければ、市場競 争に負けてしまいます。ユーザは高速なサービスを望んでいます が、BocaBoard や他のマルチポートシリアルカードではそのサービスを提供で きません。 マルチポートシリアルカードとしてみても BocaBoard は全く時代遅れの代物 です。 BocaBoard を購入しようとする大多数の方々は、Cyclades もしくは Rocketport のようなアクセラレータカードを手に入れた方が幸せになりま す。(最近見た時は Rocketport の方が良さそうでしたが、Cyclades は非常に 安定したカーネルサポートがあります)。アクセラレータカードは CPU に負荷 をかけないので、コンピュータの性能をほとんど下げることなく多くのポート を利用することができます。 ですからこれらのデバイスを所有しており、それを利用したいかもしくは他の あまりものを使ってコストがかからない ISP を運営しようと考えている場合 にこのドキュメントは役立つはずです。繰り返し述べますが、この時点で新し い BocaBoard を購入する方は、ISP や他のビジネスを始める前に、もう少し 調査された方が良いと思います。 このドキュメントの情報は、数多くの方々に求めた助けの結果得られたもので す。残念なことにそれらの方々のお名前を忘れてしまいました。Netcom 上の 私のアカウントがあるディスク資源を圧縮する必要があったものですか ら。:-( お名前は忘れてしまいましたが、うまくいかない時に得られた彼らの 援助には深く感謝しています)。 このドキュメントの最後に、BocaBoard を拡張するのに必要な 80 ドルの機材 についての情報とその効果、 Boca のカスタマーサービスからのコメントを載 せておきます。 2. BocaBoard をインストールするには何が必要か。 必要なものは、 1. ボードとそのマニュアル 2. Linux のソースツリー 3. 忍耐 です。 3. 基本的な手続き 3.1. カーネルの再構築 まず BocaBoard を認識させるためにカーネルを修正します。残念なことに再 構築のの時に使用する configure スクリプトを実行しても認識させることが できないので、ソースを直接変更しなければなりません。次の行を linux/drivers/char/serial.c に追加します。 #define CONFIG_BOCA 1 以前はこれでよかったのですが、あるバージョンのカーネルからはこの部分は 変わってしまいました。新しいカーネルでも動作させるためには、serial.c の中で "BOCA_FLAGS" を #define しているところを捜してください。そして その値を次のように変更してください。 #define BOCA_FLAGS ASYNC_BOOT_AUTOCONF これでこの定義をソースに反映させて再構築ができるようになりました。構築 が終ったら、そのカーネルでうまく動作することを確認できるまで、新しいカ ーネルはフロッピーから読み込むようにする事をお勧めします。さもないとシ ステムを再構築前の状態に戻すのに非常に苦労する事になります。私自身も、 カーネルの再構築の時はプレッシャーを感じます。リラックスしましょう!! フロッピーディスクにコピーするだけなら、新しいカーネルは人畜無害ですか ら。 3.2. カードをインストールする カードと Linux のデフォルトのアドレス設定は、0x100 です。これはこのま まにしておきます。カードの IRQ を Linux のデフォルト値の 12 にします。 もし IRQ を変えたいなら "BOCA_FLAGS" を設定ファイルから捜します。それ は次のような感じになります。 { BASE_BAUD, 0x100, 12, BOCA_FLAGS }, /* ttyS16 */ { BASE_BAUD, 0x108, 12, BOCA_FLAGS }, /* ttyS17 */ ... 12 を好きな(かつ有効な)IRQ に変更することによって、IRQ を 12 から変 更することができます。私はまだやってみたことはありませんが。 3.3. Linux にカードを認識させる カーネルを構築したら、電源を落してカードをインストールしましょう。イン ストールしたらフロッピーディスクにある新しいカーネルでブートします。イ ンストールがうまくいっていれば、ttyS16 〜 ttyS32 に接続されている 16550 UARTS チップを確認できるはずです。これでシステムは正常に立ち上が ります。 おそらく、/dev にはまだこれらの回線用のデバイスは無いと思います。デバ イス番号が 16 から 32 までであることをお忘れなきように。ソースコードを 見れば理由がわかります。他のカードのサポートのためにこれより小さい番号 が使用されているのです。やり方さえわかれば、これらのデバイスをつくるこ とは簡単です。発信のための定義の入力はこのようになります。 mknod /dev/cuaxx c 4 N 訳註: 4 はデバイスファイルのメジャー番号、n はマイナー番号を表します。 n = 64 + <回線番号>。"C" はこのデバイスがキャラクタ型であることを意味 します。例えば、初めの 2 回線を発信用に定義するには次のように入力しま す。 mknod /dev/cua16 c 4 80 mknod /dev/cua17 c 4 81 ... 着信用の定義は次のようにします。 mknod /dev/ttySxx c 5 n "N" は上記と同じように定義します。例えば、初めの 2 回線を着信用に定義 するには次のようになります。 mknod /dev/ttyS16 c 5 80 mknod /dev/ttyS17 c 5 81 ... それぞれのポートを発着信両方で利用できるように作成すると、とても柔軟な 環境になります。こうすることによって、複数ある回線の一つを発信用にして 自分の電話番号に発信すれば、自分の別の回線を呼び出すことができます。私 はすでにそのようにしており、とてもうまくいっています。これは、接続相手 側がどのような状態かをチェックする場合にとても役に立ちます。私の場合、 この方法で自分のアプリケーションが、2400bps で接続されていることがわか りました (これは Linux のコンソールより遅い速度です。実際遅すぎます)。 上記の設定を終えたら、標準の ttySx の設定と同じ方法で inittab ファイル に設定を追加できます。そうすればモデムやターミナルが使えるようになって いるはずです。 3.4. 既知の問題点 問題が起こったら、それは Boca ボードとデュアル IDE コントローラの衝突 によるものかもしれません。 Kevin Traas 氏から寄せられた情報を次に挙げ ておきます。 カーネルはボードを認識していますか? 認識していればブート中 に 16 個全てのポートの ttySxx、I/Oポート、IRQが表示されるは ずです。あわせて、 setserial -bg ttyS*を実行すると、システム の*すべての*ポートが表示されるはずです。 訳註: 正しくはsetserial -bg /dev/ttyS* です。 デフォルトでは BB2016 で使用する IOポートは 0100 〜 017f に なっています。このことが、 2 つの IDE コントローラをもつシス テムで問題を起こします。2 番目のコントローラである ide1 は 0170 〜 0177 を使用していますので、先ほどのアドレスと重複し てしまいます。これは非常に問題です! 私の場合は IO の範囲を 0200 〜 027f にして解決しました。この アドレスの範囲では全く衝突は起きていません。しかしこれは私の 環境の場合なので、ご自分のシステムで確認されたほうがよいと思 います。(`cat /proc/ioports` を実行してみてください。また `cat /proc/interrupts` として IRQ12 が使われていないことも確 認したほうがよろしいでしょう)。 IO ポートの範囲が重なっておらず、また IRQ も使われていないな ら、BB2016 のジャンパを変更し て、/usr/src/linux/drivers/char/serial.c を新しい設定に合わ せて書き換える必要があります。その後カーネルを再構築してイン ストールを行ってください。 4. 素晴らしいお知らせ:特別に必要になるかもしれない事とサービスコメン ト 新しい Boca カードを標準の Dsub25 ピンの RS232 コネクタで利用したい場 合、約 80 ドルする特別な拡張機材を用意する必要があります。カードはその 機材とセットで利用し、とてつもなくすごいケーブルで接続します。またポー トに接続するための電話線のようなケーブルもついています。80 ドルするそ の機材には、接続するための電話線のようなケーブルも付属します。これで機 材に付いている標準 RS-232 コネクタにモデムや端末が接続できます。もし電 話線のようなコネクタを接続できるシステムを持っていないなら、機材の購入 の選択をするときにこれを選ぶべきです。 私は Boca 2016 を特別な卸売業者から購入しましたが、皆さんが同じように 購入できるとは思いません。この購入方法はすぐにも利用できますが、出荷ま で二週間ほどかかります。またこの機材はカードを購入する前に注文すべきだ と思います。 2016 ボードは 235 ドル、この機材は 79 ドル 95 セントで す。 ただし、もはやこの機材は手に入らないという話も聞いています。そのために 特別なケーブルを作っている人もいるようです。残念ながらどのようにそれを 作るかは分かりません。 最初に購入した Boca 2016 は 1 ポートしか動きませんでした。そこで色々な やりとりを期待して Boca に電話しましたが、期待とは裏腹に " Linux? そ れは何ですか?" という最悪な状況になってしまいました。しかし Boca が問 題点を確認すると、それはカードの不良なのでカードを送るようにと言ってく れました。このカードは 5 年間の修理保証と、30 日間の無償交換保証がつい ています。応対にでた女性のなんと親切なこと。最悪の状況を覚悟していたに もかかわらず、できる限りの対応をしてくれました。 私は購入先にカードの交換を依頼しました。あいにく在庫がなく、新しいカー ドが来るまで二週間以上かかりました。この遅れには本当にまいってしまい、 カードが到着して動き出すまで、心底から穏やかな気持にはなれませんでし た。 8 ポート目以降がどうしてもうまく動作しない方々がいます。私は 11 ポート までテストして、11 ポート全てうまく動きました。Boca の品質管理がよくな いのでしょう。カードの調子が良くないときは、Boca に電話してその問題を 直接伝えることをお勧めします。ディーラーを通すより、メーカーと直接やり とりした方がより良いサービスを受けられると思います。メーカーの人達はと ても親切で、対応が素晴らしいです。 今のところ、私は 4 回線しか持っていません。16 ポートのカードを購入した わけは、 2 つあります。それはポート数が少ない製品とは違い、モデムの制 御ができることと、将来の回線数の拡張を見越しているからです。 下記の追加情報は、Baan Business Systems 社の Kevin Traas 氏によるもの です。 訳註: 下記の情報が日本から利用できるかどうか、著者はわからないそうで す。直接本人に確認して欲しいといわれましたが、e-mail アドレスがわかり ません :-( ところで、私は BB2016 を以前から幾度となく利用してお り、Linux でもうまく動いています。 BB2016 は順調に動いてい て、かつ安価で信頼性があるので非常に満足しています。ポート当 たりの速度は、115200bps を要求します。このカードを経由して 2 つのシステムを PPP で接続するという珍しい接続を行っていま す。115200bps で接続できており、エラーレートは 0% です(数十 万パケットの転送において)。次のステップは EQL の導入と、帯域 を太くするため更に複数の PPP リンクを追加することです。その うち結果をお知らせできると思います。 最後にこのドキュメントでのアドバイスと相反することを書きたい と思います。私は BB2016(RJ ポートを持っている)のために、ケー ブルを自作しました。最初は RJ45 の 8 芯コンダクタ プラグを真 似てみましたが、BB2016 は モデム線をフルサポートするために RJ48 の 10 芯ジャックを使っていたので、このやり方をあきらめ ました。 今は 10 芯の線を使用して BB2016 とモデムを接続しています。そ れは非常にうまく動作しており何の問題もありません。唯一の問題 は、RJ48 のプラグと 10 芯のコンダクタ線と RJ48 - Dsub25 ピン 変換アダプタを手に入れることです。これらは需要がないせいか、 安価というわけではありません。それから RJ48 のクランパも忘れ ないで用意してください。もしお望みなら、これらのケーブルを 作ってお送りすることができます。興味がある方は e-mail で連絡 をいただければ値段などをお知らせします。このドキュメントに書 いてあるアダプタより安価に作れます。 このドキュメントに書いてあるアダプタはもう製造されていないようです。残 された接続方法は、自分でケーブルを何とかするしかありません。 訳註: 著者への質問は、必ず英語でお願いします。 5. 日本語訳の謝辞 この翻訳を行うに当たって、下記の方々にお世話になりました。ありがとうご ざいました。 早川 仁さん(uv9h-hykw@asahi-net.or.jp) 森本 淳さん(morimoto@marib.imagica.co.jp)