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"+"]"で、ログアウトできます。