Chapter 3. 必要なら BIOS の設定を行なう

BIOS によっては、 シリアルコンソールをサポートしているものがあります。 お使いのコンピュータの BIOS もそういった BIOS なら、 サポートの程度を調査しておくといいでしょう。 シリアルコンソールのサポート度合によっては、 ブートローダーを明示的に設定しなくても、 シリアルポートが使えるかも知れません。

この HOWTO に協力してくれた人たちが遭遇した BIOS では、シリアルコンソールのサポートは、次のようになっていました。

VGA へのテキスト出力をそのままシリアルポートにリダイレクトしている

BIOS は画面に表示するために使っている 0x10 という“ビデオ”の割り込み要求を捉えて、 画面に出力するはずの文字をシリアルポートに送信します。 シリアルポートで受信した文字は、 “キーの読みとり” という、BIOS の 0x16 割り込み要求へ与える文字として使われます。

BIOS のこの機能を使って、画面へテキストを出力したり キーボードからの読み取りを行なっている 16 ビットのアプリケーション は、どれでもシリアルポートにリダイレクトされます。これには BIOS 自身も入るし、ブートローダーや 16 ビットの オペレーティングシステム(例えば MS-DOS など)も 含まれます。

Linux, BSD あるいは Windows NT/2000/XP といったような) 32 ビットオペレーティングシステムの場合は、16 ビットの BIOS をロードしても、そのオペレーティングシステム ではもう使用できないので、 その BIOS を入出力用には使えません。 ですから、32 ビットのオペレーティングシステムは、 32 ビット専用のデバイスドライバをロードします。 これらのデバイスドライバは、コンソールの I/O をシリアルポートにリダイレクトする機能を備えている必要があります。

自分の BIOS がこのテクニックを使っている場合は、 次のようにしてください。

  1. BIOS を設定して、キーボードからの入力と画面出力 をシリアルポートにリダイレクトする。

  2. ブートローダーの設定は変えないこと。というのは BIOS がこの 16 ビットアプリケーションの入出力を、 シリアルポートにリダイレクトしてくれるからである。

  3. Linux の設定を変更して、 シリアルポートをコンソールで使うようにすること。というのは、 Linux が 32 ビットの オペレーティングシステムだからである。

BIOS の設定および電源投入時のセルフテストでシリアルポートを使っている

この BIOS は、 設定と電源投入時のセルフテスト用にシリアルポートを使っています。 でも 0x10 の“ビデオ” 割り込み要求と、 0x16 の“キーボードの読みとり” 割り込み要求を、 シリアルポートにリダイレクトしません。

いくつかの BIOS は、通常キーボードと画面出力を、 すべてシリアルポートにリダイレクトしていますが、 中には設定で BIOS の入出力のリダイレクトだけにできるものがあります。 BIOS の設定オプションで、 Cease redirection after boot (訳注:ブート後リダイレクトを止める)に似たものを探して下さい。

お使いの BIOS がこのテクニックを用いていたり、 Cease redirection after boot を設定するつもりなら、以下のようにしてください。

  1. BIOS を設定して、 その出力をシリアルポートに送るようにする。

  2. ブートローダーを設定して、シリアルポートを使うようにする。

  3. Linux は 32 ビットオペレーティングシステムなので、 Linux がシリアルポートをコンソールで使うように設定する。

グラフィックの VGA 出力をシリアルポートにリダイレクトしている

グラフィックの 32 ビットオペレーティングシステムの中には、 コンソール出力をシリアルポートに送るための、 専用の機能が無いものがあります。 BIOS によっては、 この欠点を克服しようとするものもあります。 専用のシリアルプロトコルを使って、 グラフィック出力をリモートのシリアルクライアントに送信するのです。

Linux オペレーティングシステムを使っている場合は、 標準の端末エミュレータからはそういったマシンに接続できないので、 この機能には手を触れずにおくのが一番です。

  1. 出力をシリアルポートに送らないように BIOS を設定する。

  2. ブートローダーを設定して、シリアルポートを使うようにする。

  3. シリアルポートをコンソールで使うように Linux を設定する。

シリアルポート機能がない

この BIOS はシリアルポートからアクセスできないので、 電源投入時のセルフテストのメッセージがわかりません。

それでも /dev/nvram デバイスを使えば、 遠隔地から BIOS を設定できるかもしれません。 これを使う場合は注意して下さい。

  1. ブートローダーを設定して、シリアルポートを使うようにする。

  2. Linux を設定して、 シリアルポートをコンソールで使うようにする。

ブートローダーを設定してシリアルポートを使う必要がある場合は、 Chapter 4 に進んで下さい。 それ以外は、直接 Chapter 5 に行って、 カーネルの構成変更を行なって下さい。 これには、ブートローダーを設定して、ブートパラメータを Linux カーネルに渡すという方法を使います。