サーバの停止・再開作業などをSSH上から行うことは、その端末へ行って作業を進めなくて済むため、すごく楽です。しかし、違うネットワーク環境で立ち上げたり、イーサネットの設定に失敗したりすると、全く歯が立たなくなってしまいます。
そこで今回は、KVM上のゲストOSへ、ホストOSから接続する設定を書いてみます。ゲストOSとホストOSは、ともにUbuntu 10.04 LTS Server x64です。
ゲストOSの設定をする
まずは、シリアルコンソールで接続される側の設定をします。この設定は、シリアルコンソールでの接続を許可するものになります。
最初は、ログインコンソールの設定を書きます。sudo vim /etc/init/ttyS0.confとして、下のファイルを作成します。作成が終わったところで、sudo start ttyS0とします。
# ttyS0 - getty # # This service maintains a getty on ttyS0 from the point the system is # started until it is shut down again. start on stopped rc RUNLEVEL=[2345] stop on runlevel [!2345] respawn exec /sbin/getty -L 115200 ttyS0 vt102
続いてブートローダの設定を書きます。sudo vim /etc/default/grubとし、私が追加した設定は、次の3行だけです。これの編集が終わったところで、sudo update-grub(update-grub2ではない)として、設定を反映します。
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8" GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
ここまで完了したら、最後にsudo rebootとして、サーバを再起動します。dmesgを確認すると、次のようなログが残っていました。
% dmesg | grep -i "\(serial\|ttyS0\)" [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-2.6.32-29-server root=/dev/mapp er/asagao-root ro console=tty0 console=ttyS0,115200n8 quiet [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-2.6.32-29-server root=/d ev/mapper/asagao-root ro console=tty0 console=ttyS0,115200n8 quiet [ 0.000000] console [ttyS0] enabled [ 0.235460] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.235995] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.236833] 00:05: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ホストOSから接続する
ホストOSから接続する場合は、libvirtのvirshを使って接続しました。ただし、/dev/ttyS0への接続はrootでなければ出来ないため、sudoを使って接続します。
% sudo virsh -c qemu:///system console <domain>
このコマンドを実行すると、普段は「Username: 」と表示されるログイン画面になっています。なので、何も出ない画面へログインIDを入力してEnterを押下すると、パスワードを求められます。
まとめ
意外と簡単に接続できるんだな、という印象でした。普段の作業をシリアルコンソールから行うことは無いと思いますが、たまに持ち運ぶことがあれば、設定をしておいて損は無いと思います。
Leave a Reply