VMwarePlayerで、Squeeze on Squeeze シリアルコンソール接続

■VMwarePlayerで、Squeeze on Squeeze シリアルコンソール接続

 VMwarePlayerで、Lenny on Lenny シリアルコンソール接続
 http://d.hatena.ne.jp/labunix/20120214

■前提条件:Squeezeのカーネルオプションの確認(ホスト/ゲスト)

$ dpkg -L kernel-package | grep amd64\$
/usr/share/kernel-package/Config/config.amd64

$ grep "CONFIG_SERIAL_8250_[=C]" \
     /usr/share/kernel-package/Config/config.amd64
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_CS=m

$ uname -m -r
2.6.32-5-amd64 x86_64

■シリアルコンソールを有効にする

$ sudo cp -pi /etc/inittab /etc/inittab.bak
$ sudo vim /etc/inittab
$ sudo diff /etc/inittab /etc/inittab.bak
63,64c63,64
< T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100
< T1:23:respawn:/sbin/getty -L ttyS1 115200 vt100
---
> #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
> #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

$ sudo init q
$ ps -ef | grep ttyS | cut -c 40- | head -2
00:00:00 /sbin/getty -L ttyS0 115200 vt100
00:00:00 /sbin/getty -L ttyS1 115200 vt100

■VMXの編集(ホスト側の作業)

 ・今回はsuspend時に作業した。
 ・「/tmp」直下であればvmrunを実行したユーザ権限で作成される。
 ・デフォルトの仮想プリンタが「serial0」を使用していたので、「serial1」とした。
 ・ここまでで、ログイン出来る。

$ sudo cp -pi vmware/squeeze/squeeze.vmx vmware/squeeze/squeeze.vmx.bak
$ sudo diff vmware/squeeze/squeeze.vmx vmware/squeeze/squeeze.vmx.bak
60c60
< cleanShutdown = "FALSE"
---
> cleanShutdown = "TRUE"
82c82
< checkpoint.vmState = ""
---
> checkpoint.vmState = "squeeze-ef1444d1.vmss"
89,92d88
< serial1.present = "TRUE"
< serial1.fileType = "pipe"
< serial1.fileName = "/tmp/vmsqueeze-serial-pipe"
< serial1.pipe.endPoint = "server"

$ ls -l /tmp/vmsqueeze-serial-pipe
srwxr-xr-x 1 user user 0 2012-02-15 20:40 /tmp/vmsqueeze-serial-pipe

$ sudo apt-get install socat
$ sudo vim vmsqueeze-serial.sh
$ sudo cat vmsqueeze-serial.sh
#!/bin/bash

if [ `id -u` -ne "0" ];then
  echo "Sorry! Not Permit User"
  exit 1
else
  socat /tmp/vmsqueeze-serial-pipe stdout
fi
exit 0

$ sudo chown root:root vmsqueeze-serial.sh
$ sudo chmod 500 vmsqueeze-serial.sh
$ sudo ./vmsqueeze-serial.sh

■grubの設定(ゲスト側の作業)
 ※ホスト/ゲスト共にGRUB2
  コマンドラインに追加するという考え方は同じ。

$ whereis grub
grub: /etc/grub.d /usr/lib/grub /usr/lib64/grub /usr/share/grub

$ dpkg -L grub-common | grep sbin
/usr/sbin
/usr/sbin/grub-mkdevicemap
/usr/sbin/grub-probe
/usr/sbin/grub-mkconfig

$ /usr/sbin/grub-setup --version
/usr/sbin/grub-setup (GRUB) 1.98+20100804-14+squeeze1

$ sudo cp -pi /etc/default/grub /etc/default/grub.bak
$ sudo vim /etc/default/grub
$ sudo diff /etc/default/grub /etc/default/grub.bak
7,9c7,8
< GRUB_TERMINAL="serial console"
< GRUB_SERIAL_COMMAND="serial --unit=0 --speed=15200"
< GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,15200"
---
> GRUB_CMDLINE_LINUX_DEFAULT="quiet"
> GRUB_CMDLINE_LINUX=""

$ sudo /usr/sbin/update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-5-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-amd64
done

■再起動して再度ログインチェック
 ※シリアルコンソール接続で表示が無く、応答確認したい場合は、「ENTER」を押してみるのもよい。

$ echo "this is gest,vmsqueeze" && sudo shutdown -r now
this is gest,vmsqueeze

$ echo "this is host squeeze" && sudo ./vmsqueeze-serial.sh
this is host,squeeze