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

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

 参考:Linux on VMware でシリアルコンソールを使う方法
 http://d.hatena.ne.jp/pyopyopyo/20120213/p1

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

$ sudo apt-get install kernel-package
$ uname -m;uname -r
x86_64
2.6.26-2-amd64
$ dpkg -L kernel-package | grep amd64\$
/usr/share/kernel-package/Config/config.amd64

$ grep "CONFIG_SERIAL_8250=\|CONFIG_SERIAL_8250_CONSOLE=" \
    /usr/share/kernel-package/Config/config.amd64
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y

■前提条件2:Lennyのカーネルオプションの確認(ゲスト)
 ※カーネルのバージョンが同じなので、ホストで見ても同じ。

$ sudo apt-get install kernel-package
$ uname -m;uname -r
i686
2.6.26-2-686
$ dpkg -L kernel-package | grep i686\$
/usr/share/kernel-package/Config/config.i686

$ grep "CONFIG_SERIAL=\|CONFIG_SERIAL_CONSOLE=" \
    /usr/share/kernel-package/Config/config.i686
CONFIG_SERIAL=y
CONFIG_SERIAL_CONSOLE=y


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

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

■inittabの再読み込み
 ※webで検索すると、以下なのだが。。。

$ sudo init q
$ sudo telinit q

■反映しないので、以下を実行。

$ sudo pkill getty
$ ps -ef | grep getty | head -1 | awk '{print $2}' | xargs sudo kill

$ ps -ef | grep ttyS | cut -c 40- | head -1
00:00:00 /sbin/getty -L ttyS0 115200 vt100

■コンソールはデフォルトで許可。

$ sudo grep ttyS0 /etc/securetty
ttyS0

■grub1の設定変更

$ whereis -b grub
grub: /usr/sbin/grub /usr/lib/grub
$ /usr/sbin/grub --version
grub (GNU GRUB 0.97)
$ sudo cp -pi /boot/grub/menu.lst /boot/grub/menu.lst.bak
$ sudo vim /boot/grub/menu.lst
$ sudo diff /boot/grub/menu.lst /boot/grub/menu.lst.bak
122,124d121
< serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
< terminal --timeout=10 serial console
<
127c124
< kernel                /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro console=tty0 console=ttyS0,115200n8
---
> kernel                /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro quiet

■grubのアップデート

$ sudo /usr/sbin/update-grub
[sudo] password for labunix:
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.26-2-686
Updating /boot/grub/menu.lst ... done

■再起動後のコマンドラインの確認
 ※kernel行のオプションを取得する箇所

$ cat /proc/cmdline
root=/dev/sda1 ro console=tty0 console=ttyS0,115200n8

■シリアルドライバの設定の追加
 ※仮想マシン側は電源OFFの状態で行う。

$ sudo cp -pi vmware/vmlenny86/vmlenny86.vmx vmware/vmlenny86/vmlenny86.vmx.bak
$ sudo vim vmware/vmlenny86/vmlenny86.vmx
$ sudo diff vmware/vmlenny86/vmlenny86.vmx vmware/vmlenny86/vmlenny86.vmx.bak
73,76d72
< serial0.present = "TRUE"
< serial0.fileType = "pipe"
< serial0.fileName = "/tmp/vmware-serial-port"
< serial0.pipe.endPoint = "server"

■ホスト側socatの導入

$ sudo apt-get install socat

■ユーザ名(username)、パスワード(PASSWORD)でログインした様子
 ※仮想マシンはvmrun の noguiオプションで起動

$ sudo socat /tmp/vmware-serial-port stdout
username
Password: PASSWORD

Last login: Tue Feb 14 22:12:09 JST 2012 on ttyS0
Linux vmlenny86 2.6.26-2-686 #1 SMP Wed Sep 21 04:35:47 UTC 2011 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
No mail.
username@vmlenny86:~$ tty
tty
/dev/ttyS0

■例えば「/etc/init」でvt102に変更すると、

username@vmlenny86:~$ echo $TERM
echo $TERM
vt102

■普段使いに。

$ vim sirial.sh
$ cat sirial.sh
#!/bin/bash

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

$ sudo chown root:root sirial.sh
$ sudo chmod 700 sirial.sh
$ sudo ./sirial.sh