Help us understand the problem. What is going on with this article?

VirtualBox / VMware Player のシリアルコンソールを使う

More than 5 years have passed since last update.

仮想マシンのコンソールが欲しい

久々に VirtualBox を触ったのでメモ。ついでに VMware Player もまとめておく。
KVM コンソールのような大げさな画面はいらないし headless で VM を起動したいけど、いざって時のためにコンソールを触れるようにしておきたい。

ゲストOS 側の設定も必要だが、ここはやはりシリアルコンソールで。

VirtualBox でシリアル出力設定する

Linux なら unix domain socket を置くディレクトリを用意しておき、
VirtualBox を起動して下記のように設定する

vbox_setting.png

socket は Create Pipe にチェックを入れておけば VM 起動時に自動的に作成される。

ホストOS が Windows なら \\.\pipe\mypipename のようにする。

VMware Player でシリアル出力設定する

VMware Player を起動し、設定は下記のようにする。

vmware_setting.png

手元に Linux + VMware が無かったが、その場合でも同じように socket の名前を指定すればよいだけのはず。

ゲスト OS の headless 起動

VMware Player を headless で動かすには VIX が必要なため、適切なバージョンの VIX をインストールしておく。
コマンドのパスは Windows / Linux で違うが、実行方法は同じ。

  • VirtualBox
VBoxManage startvm Name_of_VM --type headless
  • VMware
vmrun -T player start "Path_to_Guest.vmx" nogui

ゲスト OS を設定する

以下は CentOS 6 のシリアル設定の例。
必要な手順はディストリビューションによって異なるだろう。

/boot/grub/grub.conf
default=0
timeout=5
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
#splashimage=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
        root (hd0,1)
        kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=874f153e-fc34-4821-9f13-e070c0c63190 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=jp106 rd_NO_LVM rd_NO_DM console=tty0 console=ttyS0,115200n8r
        initrd /boot/initramfs-2.6.32-358.el6.x86_64.img

agetty の起動はデフォルトの /etc/init/serial.conf のままで良かった。

# egrep -v '\s*#|^$' /etc/init/serial.conf
start on fedora.serial-console-available DEV=* and stopped rc RUNLEVEL=[2345]
stop on runlevel [S016]
instance $DEV
respawn
pre-start exec /sbin/securetty $DEV
exec /sbin/agetty /dev/$DEV $SPEED vt100-nav
post-stop exec /sbin/initctl emit --no-wait fedora.serial-console-available DEV=$DEV SPEED=$SPEED
usage 'DEV=ttySX SPEED=Y  - where X is console id and Y is baud rate'

設定が完了したらゲストを再起動する。

シリアルコンソールを使う

接続相手が unix domain socket なので、ググると socat の例が良く出てくるが、socat 単体だと以下のような点から不足だと思う。

  • Ctrl-c による SIGINT を送れない(うっかり押すと socat が終了して抜けてしまう)
  • エコーバックを忘れてうっかりパスワードが画面に見えてしまう。

socat で pty を作成して、操作は screen を使うと個人的にいい感じだった。

$# -d -d をつけると起動中に pty をどこに作ったか表示するので
$# screen では表示された pty を指定する
$ socat -d -d unix-connect:/var/run/vbox/test.sock pty,raw,echo=0 &
[1] 13548
2014/06/12 22:12:54 socat[13548] N opening connection to AF=1 "/var/run/vbox/test.sock"
2014/06/12 22:12:54 socat[13548] N successfully connected from local address AF=1 "\0\0\0\0\0\0\0\0\0\x02\0\0\0\0[\0\0\0|\0\0\0w"
2014/06/12 22:12:54 socat[13548] N PTY is /dev/pts/8
2014/06/12 22:12:54 socat[13548] N starting data transfer loop with FDs [3,3] and [4,4]

$ screen /dev/pts/8

## Enter たたく ##

CentOS release 6.5 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

test.local login: root
Password:
Last login: Thu Jun 12 22:14:01 on ttyS0
[root@test ~]#
## パスワードのエコーバックもないし、Ctrl-c では終了しない ##

Windows なら TeraTerm (4.74 以降?) でパイプに接続できる。
新しい接続から TCP/IP を選択し、
ホストに作成したパイプの名前 \\.\pipe\control-node.sock を入れる。

teraterm_serial.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした