まず BocaBoard を認識させるためにカーネルを修正します。残念なことに再構築の
の時に使用する configure スクリプトを実行しても認識させることができないので、
ソースを直接変更しなければなりません。
次の行を linux/drivers/char/serial.c
に追加します。
#define CONFIG_BOCA 1
以前はこれでよかったのですが、あるバージョンのカーネルからはこの部分は変わっ
てしまいました。新しいカーネルでも動作させるためには、serial.c の中で
"BOCA_FLAGS" を #define しているところを捜してください。そしてその値を次の
ように変更してください。
#define BOCA_FLAGS ASYNC_BOOT_AUTOCONF
これでこの定義をソースに反映させて再構築ができるようになりました。
構築が終ったら、そのカーネルでうまく動作することを確認できるまで、新しい
カーネルはフロッピーから読み込むようにする事をお勧めします。さもないとシス
テムを再構築前の状態に戻すのに非常に苦労する事になります。
私自身も、カーネルの再構築の時はプレッシャーを感じます。リラックスしま
しょう!! フロッピーディスクにコピーするだけなら、新しいカーネルは人畜
無害ですから。
カードと 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 から
変更することができます。私はまだやってみたことはありませんが。
カーネルを構築したら、電源を落してカードをインストールしましょう。インストール したらフロッピーディスクにある新しいカーネルでブートします。インストール がうまくいっていれば、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 ファイルに設定 を追加できます。そうすればモデムやターミナルが使えるようになっているはずです。
問題が起こったら、それは 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 を新しい設定に 合わせて書き換える必要があります。その後カーネルを再構築してインストールを 行ってください。