Linux シリアルコンソール シリアルポートをコンソールとして使用するためには、その機能をサポート するようにカーネルをコンパイルしなければなりません ――デフォルトでは、 この機能はカーネルに組み込まれません。PC スタイルのシリアルポートの 場合は、"Standard/generic (dumb) serial support" に続く設定オプションを 有効にします。シリアルサポートは、モジュールとしてではなく、常駐イメージ としてカーネルに組み込む必要があります。 コンソール出力として複数のデバイスを指定することも可能です。コンソール 出力に使用するデバイスは、新しく用意されたカーネルコマンドラインオプ ションを用いて選択することができます。 このオプションの形式は次のとおりです。 console=device,options device: tty0: フォアグランド仮想コンソール ttyX: そのほかの仮想コンソール ttySx: シリアルポート lp0: 一番目のパラレルポート options: ドライバによって異なります。シリアルポートの 場合は、そのポートのボーレート、パリティ、 ビット数を BBBBPN という形式で指定します。 BBBB はスピード、P はパリティ (n/o/e), N は ビット数です。デフォルト値は 9600n8 です。 ボーレートの最大値は 115200 です。 カーネルコマンドラインには、複数の console= オプションを与えることが できます。指定された全てのコンソールに対して出力がおこなわれます。 /dev/console をオープンした場合は、最後に指定されたデバイスが使用され ます。たとえば、 console=ttyS1,9600 console=tty0 というオプションを与えた場合、/dev/console をオープンすると、現在の フォアグランド仮想コンソールを取得できます。また、カーネルのメッセージは、 VGA コンソールと二番目のシリアルポート (ttyS1, すなわち COM2) の両方に 9600 ボーで出力されます。 各デバイスタイプ (シリアル、ビデオ) につき、一つのコンソールしか指定 できないので、注意してください。 コンソールデバイスが指定されていない場合は、システムコンソールとして 使用することが可能なデバイスのうち、最初に見つかったものを使用します。 この場合、システムは最初に VGA カードを調べ、その次にシリアルポートを 調べます。ですので、システムに VGA カードが無いときは、一番目のシリアル ポートが自動的にコンソールになります。 /dev/console を使用するためには、新しいデバイスを作成する必要があります。 現在のところ、公式の /dev/console はキャラクタデバイスで、メジャー番号が 5, マイナー番号が 1 です。 /dev/ttyS1 (COM2) をコンソールとして使う例を挙げます。必要に応じて、 サンプル中の値を変更してください。 1. /dev/console (実際のコンソール) と、/dev/tty0 (マスター仮想コン ソール) を作成します。 cd /dev rm -f console tty0 mknod -m 622 console c 5 1 mknod -m 622 tty0 c 4 0 2. LILO は、シリアルデバイスからも入力を受けつけることができます。 これは非常に便利な機能です。シリアルポートを使用するように LILO を設定するには、lilo.conf のグローバルセクションで次の ように指定します。 serial = 1,9600n8 (ttyS1, 9600 ボー、パリティ無し、8 ビット) 新しく構築し直したカーネル用のフラグを修正します。これも、 lilo.conf のカーネルセクションで指定します。 append = "console=ttyS1,9600" 4. システムのブート後にログインできるよう、シリアルポート上で getty を 走らせます。この設定をおこなうには、下記のような行を /etc/inittab に 追加します (正確な構文は使用する getty により異なります) 。 S1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 5. init と /etc/ioctl.save Sysvinit は、stty 設定を /etc/ioctl.save に保存しています。シリアル コンソールを初めて使用する場合は、その前にこのファイルを削除して ください。なぜかというと、そうしないと、おそらく init はボーレートを 38400 に設定してしまうからです (38400 というのは仮想コンソールの ボーレートです) 。 6. /dev/console と X 仮想コンソールに対して何かしらの処理を行いたいプログラムは、通常 /dev/console をオープンします。新規作成された /dev/console デバ イスが仮想コンソールではない場合、エラー終了してしまうプログラムも あります。そのようなプログラムは、VT インターフェースにアクセス しようとしていて、かつ /dev/tty0 ではなく /dev/console を使用して いるプログラムです。次のプログラムは、そのようなプログラムの例です。 Xfree86, svgalib, gpm, SVGATextMode これらのプログラムの新しいバージョンでは、問題点は修正されるでしょう。 console= オプションを指定せずに (または console=/dev/tty0 を 与えて) ブートした場合、/dev/console は /dev/tty0 と同一に なります。この場合は、全てがうまく動作します。 7. 謝辞 m68k, ppc, alpha にも対応するように 2.1.4x から 2.1.6x のパッチを 移植してくれたことを、Geert Uytterhoeven に 感謝します。 Miquel van Smoorenburg , 2000 年 6 月 11 日 翻訳団体: JF プロジェクト 翻訳者: 川崎 貴彦 校正者: 野本 浩一 校正者: 幸田 章宏