シリアルコンソール · 1 min read · Feb 02, 2026

シリアルコンソールの設定

シリアルコンソールの設定

このチュートリアルでは、Linuxシステムでシリアルコンソールを設定し、ヌルモデムケーブルを介して接続する方法を示します。これは、Linuxサーバーがヘッドレス構成(キーボードやモニターなし)の場合に非常に便利で、システムに問題が発生した場合(特にSSHが利用できないネットワークの問題)に簡単にコンソールにアクセスできます。最終的には、GRUBメニューがシリアルリンクを介して表示され、システム起動時のメッセージも表示されます。私はサーバーにDebian Etchを、クライアントにUbuntu Edgyを使用していますが、これは任意のLinuxディストリビューションで動作するはずです。

最初のステップ

最初に確認する必要がある最も重要なことは、サーバーに実際にシリアルポートがあるかどうかです :)。サーバーの背面を見て、9ピンのシリアルポートがあるかどうかを確認してください。ほとんどのマザーボードには1つまたは2つのシリアルポートがあります。システム上で、Linuxがシリアルポートを認識しているかどうかを確認します:

root@server:~# dmesg | grep tty  
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A  
00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

これにより、私のシステムには1つのシリアルポート、ttyS0があることが示されます(後でこれを覚えておいてください)。

GRUBの設定

次のステップは、GRUBの設定を編集して、メッセージをシリアルコンソールに送信することです。最も重要なことの1つは、パスワードを設定することです。そうしないと、誰でもシリアルケーブルを接続し、システムが起動している間にGRUBの設定行を編集(「e」キーを介して)し、ルートアクセスを取得できます。パスワードが設定されていると、正しいパスワードが入力されない限り、インタラクティブメニューの編集が無効になります。パスワードを設定するには、まずその暗号化されたバージョンを取得する必要があります。

grubを実行し、”md5crypt”コマンドを使用してパスワードを暗号化します:

grub> md5crypt  
  
Password: ********  
Encrypted: $1$AlfMq1$FxRolxW5XvSLAOksiC7MD1

暗号化されたパスワードのバージョンをコピーします(次のステップで必要です)、その後、quitと入力して終了します。

次に、GRUBの設定を編集する必要があります。/boot/grub/menu.lstファイルを編集し(nano /boot/grub/menu.lstと入力)、このセクションを見つけます:

## password ['--md5'] passwd
   # If used in the first section of a menu file, disable all interactive editing
   # control (menu entry editor and command-line)  and entries protected by the
   # command 'lock'
   # e.g. password topsecret
   #      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
   # password topsecret

その下に、次のように追加します:

password --md5 $1$AlfMq1$FxRolxW5XvSLAOksiC7MD1
serial --unit=0 --speed=38400 --word=8 --parity=no --stop=1   
terminal --timeout=10 serial console

$1$AlfMq1$FxRolxW5XvSLAOksiC7MD1あなたのパスワードの暗号化された形式に置き換えます。2行目は、GRUBにシリアルポートを38,400 bps(標準コンソールと同じ速度)で初期化し、8データビット、パリティなし、1ストップビット(基本的に標準設定)を指示します。–unit=0は、最初のシリアルポート(ttyS0)を使用することを意味します。2番目のシリアルポート(ttyS1)を使用している場合は、–unit=1に変更します。最後の行は、GRUBにメニューをシリアルラインとコンソール(モニター)の両方に表示するよう指示します。

次に、カーネルセクションも編集して、シリアルコンソールにメッセージを出力する必要があります。各カーネル行の最後にconsole=tty0 console=ttyS0,38400n8を追加します(ttyS0を正しいシリアルポートに置き換えます)。私の場合、最終的には次のようになりました:

title           Debian GNU/Linux, kernel 2.6.18-4-vserver-686
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-4-vserver-686 root=/dev/hda3 ro console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-4-vserver-686
   savedefault
title           Debian GNU/Linux, kernel 2.6.18-4-vserver-686 (single-user mode)
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-4-vserver-686 root=/dev/hda3 ro single console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-4-vserver-686
   savedefault
title           Debian GNU/Linux, kernel 2.6.18-3-686
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-3-686 root=/dev/hda3 ro console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-3-686
   savedefault
title           Debian GNU/Linux, kernel 2.6.18-3-686 (single-user mode)
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-3-686 root=/dev/hda3 ro single console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-3-686  
   savedefault  

CTRL+O(”出力”またはファイルを保存)を押して保存し、Enter(ファイル名を受け入れる)を押し、CTRL+X(実際に終了する)を押して終了します。

シリアルコンソールでのログインを許可

これで、GRUBメニューがシリアル接続を介して表示されますが、まだログインを待機していません(まだ”getty”が実行されていません)。/etc/inittabファイルを編集し、このセクションを見つけます:

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

その下に(デフォルトの行を編集するのは好きではありません :P)、次のように追加します:

T0:2345:respawn:/sbin/getty -L ttyS0 38400 vt100

これで完了です。サーバーはシリアルコンソールを介してGRUBメニューを表示し、ログインを許可します(起動が完了した後)。

テストしてみましょう!

これで全てが完了したので、クライアントを設定する必要があります。私はノートパソコンでGtkTermを使用していますが、任意のターミナルプログラムが機能するはずです(シリアルポートを使用できる限り)。私のノートパソコンにはシリアルポートがないため、eBayで購入したUSB to Serialアダプターを使用しています(ttyUSB0デバイスを作成します)。ターミナルプログラムを次の設定に設定します:

  • ポート(Linux): ttyS0またはttyS1(システムにシリアルポートがある場合)、またはttyUSB0(USB to Serialコンバーターを使用している場合)。
  • ポート(Windows): COM1またはCOM2
  • ビット毎秒: 38400
  • データビット: 8
  • パリティ: なし
  • ストップビット: 1
  • フロー制御: なし、ただしハードウェア(RTS/CTS)が正常に動作するはずです

サーバーを再起動します(おそらくSSH接続から、または上記のGRUB設定を編集した方法で)、その後、起動中にヌルモデムケーブルを接続します(つまり、BIOS画面で)。プロンプトが表示されたら任意のキーを押すと、次のようなものが表示されます:

シリアルコンソールの使い方 - GRUBメニュー

これは、GRUBが正常に動作していることを意味します :)。Enterを押すと、起動し、すべてのメッセージがターミナルウィンドウに表示されるはずです。起動後は、次のようになります:

シリアルコンソールの使い方 - 起動中

最後にログインし、正常に動作することを確認します:

シリアルコンソールの使い方 - ログイン済み

おめでとうございます、すべてが設定されて正常に動作しています。

このチュートリアルを楽しんでいただけたら幸いです! :)

Daniel15 (ダニエル・ロ・ニグロ)
http://www.daniel15.com/
http://www.dansoftaustralia.net/

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。