BIOS によっては、 シリアルコンソールをサポートしているものがあります。 お使いのコンピュータの BIOS もそういった BIOS なら、 サポートの程度を調査しておくといいでしょう。 シリアルコンソールのサポート度合によっては、 ブートローダーを明示的に設定しなくても、 シリアルポートが使えるかも知れません。
この HOWTO に協力してくれた人たちが遭遇した BIOS では、シリアルコンソールのサポートは、次のようになっていました。
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 がこのテクニックを使っている場合は、 次のようにしてください。
BIOS を設定して、キーボードからの入力と画面出力 をシリアルポートにリダイレクトする。
ブートローダーの設定は変えないこと。というのは BIOS がこの 16 ビットアプリケーションの入出力を、 シリアルポートにリダイレクトしてくれるからである。
Linux の設定を変更して、 シリアルポートをコンソールで使うようにすること。というのは、 Linux が 32 ビットの オペレーティングシステムだからである。
この BIOS は、 設定と電源投入時のセルフテスト用にシリアルポートを使っています。 でも 0x10 の“ビデオ” 割り込み要求と、 0x16 の“キーボードの読みとり” 割り込み要求を、 シリアルポートにリダイレクトしません。
いくつかの BIOS は、通常キーボードと画面出力を、 すべてシリアルポートにリダイレクトしていますが、 中には設定で BIOS の入出力のリダイレクトだけにできるものがあります。 BIOS の設定オプションで、 Cease redirection after boot (訳注:ブート後リダイレクトを止める)に似たものを探して下さい。
お使いの BIOS がこのテクニックを用いていたり、 Cease redirection after boot を設定するつもりなら、以下のようにしてください。
BIOS を設定して、 その出力をシリアルポートに送るようにする。
ブートローダーを設定して、シリアルポートを使うようにする。
Linux は 32 ビットオペレーティングシステムなので、 Linux がシリアルポートをコンソールで使うように設定する。
グラフィックの 32 ビットオペレーティングシステムの中には、 コンソール出力をシリアルポートに送るための、 専用の機能が無いものがあります。 BIOS によっては、 この欠点を克服しようとするものもあります。 専用のシリアルプロトコルを使って、 グラフィック出力をリモートのシリアルクライアントに送信するのです。
Linux オペレーティングシステムを使っている場合は、 標準の端末エミュレータからはそういったマシンに接続できないので、 この機能には手を触れずにおくのが一番です。
出力をシリアルポートに送らないように BIOS を設定する。
ブートローダーを設定して、シリアルポートを使うようにする。
シリアルポートをコンソールで使うように Linux を設定する。
この BIOS はシリアルポートからアクセスできないので、 電源投入時のセルフテストのメッセージがわかりません。
それでも /dev/nvram デバイスを使えば、 遠隔地から BIOS を設定できるかもしれません。 これを使う場合は注意して下さい。
ブートローダーを設定して、シリアルポートを使うようにする。
Linux を設定して、 シリアルポートをコンソールで使うようにする。
ブートローダーを設定してシリアルポートを使う必要がある場合は、 Chapter 4 に進んで下さい。 それ以外は、直接 Chapter 5 に行って、 カーネルの構成変更を行なって下さい。 これには、ブートローダーを設定して、ブートパラメータを Linux カーネルに渡すという方法を使います。