knqyf263's blog

自分のためのメモとして残しておくためのブログ。

virsh consoleの設定

virsh consoleの設定をすれば、virsh console <ホスト名>でコンソールをつかむことができます。 sshを入れ忘れた場合などに有効です。 例によってそのままやってみただけですが、メモとして残します。

環境

ホストOSはDebian 7.3で、ゲストOSはUbuntu 13.10のサーバー版とします。
また、Ubuntu 13.10のホスト名をhost01とします。

ホストOS:Debian 7.3(wheezy)
ゲストOS:Ubuntu 13.10 server
ゲストOSのホスト名:host01

参考サイト

KVMゲストOSへのコンソール接続設定 - jitsu102の日記
lost and found ( for me ? ): KVM: virsh コンソール接続 ( guest OS Ubuntu )

virsh consoleの設定

今回の作業は全てroot権限で行っています。

ホスト側の設定

VMシリアルコンソール接続があるか確認
# less /etc/libvirt/qemu/host01.xml
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>

上記のような記述があればOKです。 もしなければ、host01がシャットダウンされているのを確認してから、

# virsh edit host01

で上記の設定を追加してください。 私の環境ではデフォルトで入っていました。

VMの起動

上記設定の確認が終わったら、host01を起動します。

# virsh start host01

ゲスト側の設定

/etc/init/ttyS0.conf の作成

/etc/init/ttyS0.conf を新規作成します。 以下のように設定を書いてください。

# vim /etc/init/ttyS0.conf 
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -L 115200 ttyS0 vt102
ttyS0のスタート
# start ttyS0
ttyS0 start/running, process 1839
/etc/default/grubの編集

/etc/default/grubに以下の設定を追記してください。

# vim /etc/default/grub
+GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
+GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

動作確認

ここまでで設定は終わりなので、virsh consoleを試してみましょう。

# virsh console host01
Connected to domain host01
Escape character is ^]

Ubuntu 13.10 host01 ttyS0

host01 login:

こんな感じで出ていれば成功です。 ユーザ名とパスワードを入れてログインできます。 "Ctrl"+"]"で、ログアウトできます。