labunix's blog

labunixのラボUnix

LennyからSqueezeへのアップグレード後のvmplayerの再設定

■LennyからSqueezeへアップグレード後のvmplayerの修正
 ※既知の問題ではあるが、Squeezeにしてから仮想マシンを立ち上げるのは初めてだった。

$ vmrun -T player start ~/vmware/vmsqueeze/vmsqueeze.vmx nogui
Error: Unknown error

■原因はSqueezeへのアップグレード時に「linux-headers」を削除のみ行ったことにある。
 アップグレード時のログから確認できるのは以下だけだった。

# grep linux upgrade-lenny.script* | grep "image\|headers"
upgrade-lenny.script1:linux-image-2.6-amd64 (2.6.32+29) を設定しています ...
upgrade-lenny.script1:Found linux image: /boot/vmlinuz-2.6.32-5-amd64
upgrade-lenny.script1:Found linux image: /boot/vmlinuz-2.6.26-2-amd64

■インストール時に必要なものについては以前にも書いた。

 debian squeezeにvmplayer4をインストールする
 http://d.hatena.ne.jp/labunix/20111106gccはアップグレードされているので、linux-headersを導入

$ gcc --version | head -1
gcc (Debian 4.4.5-8) 4.4.5

$ apt-cache search linux-headers-`uname -r`
linux-headers-2.6.32-5-amd64 - Header files for Linux 2.6.32-5-amd64
$ sudo apt-get install  linux-headers-`uname -r`

$ find /usr/ -name linux-headers-2.6* -type d -print
/usr/src/linux-headers-2.6.26-2-common
/usr/src/linux-headers-2.6.32-5-amd64
/usr/src/linux-headers-2.6.32-5-common
/usr/src/linux-headers-2.6.26-2-amd64
/usr/share/doc/linux-headers-2.6.26-2-common
/usr/share/doc/linux-headers-2.6.32-5-amd64
/usr/share/doc/linux-headers-2.6.32-5-common
/usr/share/doc/linux-headers-2.6.26-2-amd64

■「libgtkmm-dev」も無かった。

$ apt-cache search libgtkmm
libgtkmm-2.4-dbg - C++ wrappers for GTK+ (debug symbols)
libgtkmm-2.4-dev - C++ wrappers for GTK+ (development files)
libgtkmm-2.4-1c2a - GTK+C++ ラッパ (共有ライブラリ)
libgtkmm-2.4-doc - GTK+C++ ラッパ (ドキュメンテーション)

$ sudo apt-get install libgtkmm-dev
$  dpkg -L libgtkmm-2.4-dev | wc -l
586

■vmplayerの起動、コンパイル
 起動すると、コンパイルが始まる。ついでに4.0.2のアップグレード。

# vmplayer &

■VIXは別途ダウンロード、インストールしたが、vmnetの起動に失敗した。

$ vmware-installer -l
Product Name         Product Version
==================== ====================
vmware-vix           1.11.1.528992
vmware-player        4.0.2.591240

$ sudo vmware-installer -i VMware-VIX-1.11.2-591240.x86_64
$ vmware-installer -l
==================== ====================
vmware-player        4.0.2.591240
vmware-vix           1.11.2.591240

# /etc/init.d/vmware restart | grep failed
   Virtual ethernet                                                   failed

■インストーラのログからも失敗していることが分かる。
 裏で「Unknown Error」となったvmxが動いているままとして、サービスの停止に失敗したようだ。

# grep -i "Error" /var/log/vmware-installer
[2011-11-06 23:09:35,791] Ignored execution error: [Errno 2] No such file or directory 
when running command: [None, 'stoppable']
    raise AbortError('Installation was aborted')
AbortError: Installation was aborted
update-rc.d: error: insserv rejected the script header
[2012-04-01 22:10:58,597] Error removing component /tmp/vmis.Rh1K50/install/vmware-installer.

# grep -B1 "Errno" /var/log/vmware-installer
[2011-11-06 23:09:35,781] Cannot use vmware-app-control to shut down open VMs, defaulting to fallback message.
[2011-11-06 23:09:35,791] Ignored execution error: [Errno 2] No such file or directory when running command: [None, 'stoppable']

■やり直し

# vmware-installer -l
Product Name         Product Version
==================== ====================
vmware-player        4.0.2.591240
vmware-vix           1.11.2.591240

# vmware-installer -u vmware-vix --console
# vmware-installer -u vmware-player --console
All configuration information is about to be removed. Do you wish to
keep your configuration files? [yes]: yes

■GUIでインストール
 今度は出来た。

# /bin/sh VMware-Player-4.0.2-591240.x86_64
# /sbin/ifconfig vmnet8 > /dev/null && echo "ok"
ok
# /bin/sh VMware-VIX-1.11.2-591240.x86_64
# /etc/init.d/vmware-USBArbitrator stop
# /etc/init.d/vmware stop
# /etc/init.d/vmware start
Stopping VMware services:
   VMware Authentication Daemon                                        done
   VM communication interface socket family                            done
   Virtual machine communication interface                             done
   Virtual machine monitor                                             done
   Blocking file system                                                done
Starting VMware services:
   Virtual machine monitor                                             done
   Virtual machine communication interface                             done
   VM communication interface socket family                            done
   Blocking file system                                                done
   Virtual ethernet                                                    done
   VMware Authentication Daemon                                        done
   Shared Memory Available                                             done
# /etc/init.d/vmware-USBArbitrator start
# exit

$ ps -ef | grep vmware | cut -c 49- | sed s/"\-lf"/"& \\\\\n  "/g
/usr/bin/vmnet-dhcpd -s 6 -cf /etc/vmware/vmnet1/dhcpd/dhcpd.conf -lf \
   /etc/vmware/vmnet1/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet1.pid vmnet1
/usr/bin/vmnet-natd -s 6 -m /etc/vmware/vmnet8/nat.mac -c /etc/vmware/vmnet8/nat/nat.conf
/usr/bin/vmnet-dhcpd -s 6 -cf /etc/vmware/vmnet8/dhcpd/dhcpd.conf -lf \
   /etc/vmware/vmnet8/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet8.pid vmnet8
/usr/sbin/vmware-authdlauncher
/usr/lib/vmware/bin/vmware-unity-helper --daemon
/usr/bin/vmware-usbarbitrator
grep vmware

■ネットワーク設定
 以前にも行っているので、特に問題は無い。

 Debian Lenny-amd64版のシステム起動パーティションが壊れた
 http://d.hatena.ne.jp/labunix/20111020

$ ls -l /usr/lib/vmware/bin/vmware-netcfg
lrwxrwxrwx 1 root root 29 2012-04-01 23:10 /usr/lib/vmware/bin/vmware-netcfg -> /usr/lib/vmware/bin/appLoader
# /usr/lib/vmware/bin/vmware-netcfg

■仮想マシンのゲストOSを起動する
 以前は出なかったエラーが出るようになった。(CentOSでは毎回出ていたが。。。)

$ vmrun -T player list
Total running VMs: 0
$ vmrun -T player start vmware/vmsqueeze-amd64i/vmsqueeze-amd64i.vmx nogui
Xlib:  extension "XVideo" missing on display "localhost:10.0".
Xlib:  extension "XVideo" missing on display "localhost:10.0".

■以下のように対処
 「Np protocol specified」が出てるけど、失敗しているわけでは無い。

$ ps -ef | grep gdm | cut -c 49-
/usr/sbin/gdm
/usr/sbin/gdm
/usr/bin/X :0 -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt8
/usr/lib/gdm/gdmgreeter
grep gdm

$ env DISPLAY=":0" vmrun -T player start vmware/vmsqueeze-amd64i/vmsqueeze-amd64i.vmx nogui && echo "ok"
No protocol specified
ok

$ ps -ef | grep vmx | cut -c 49- | awk '{print $1}'
/usr/lib/vmware/bin/vmware-vmx
grep

■一応調べてみる。あ、gccのバージョンが違う。

$ find /var/log -type f -exec sudo -u root grep vmware {}  \; 2>&1 | \
  grep "DISPLAY" | cut -c 49- | sed s/" "/"\n"/g | \
  grep bin | sort | uniq
'/usr/bin/vmware-modconfig'
--gcc='/usr/bin/gcc-4.3'
/usr/lib/vmware/bin/vmware-netcfg
COMMAND=/bin/sh
COMMAND=/usr/bin/env

$ sudo env DISPLAY=:0 /etc/init.d/vmware restart
$ sudo env DISPLAY=:0 /etc/init.d/vmware-USBArbitrator restart

■あれ、「LSB tag」に対応していなかった。
 以下からinitスクリプトにコピペ。

 vmwareのinitスクリプト修正for Squeeze
 http://d.hatena.ne.jp/labunix/20120114

$ sudo insserv -v 2>&1 | grep -i "warn\|error\|crit"
insserv: warning: script 'K01vmware' missing LSB tags and overrides
insserv: warning: script 'S50vmware-USBArbitrator' missing LSB tags and overrides
insserv: warning: script 'vmware' missing LSB tags and overrides
insserv: warning: script 'vmware-USBArbitrator' missing LSB tags and overrides

$ sudo insserv -v 2>&1 | grep -i "warn\|error\|crit" && echo "ok"
ok

■他に特にエラーもないので、しばらく様子見。
 もう一台アップグレードではないクリーンインストールのSqueezeがあるので、
 gccのバージョンの件も含めて、後日確認することにします。。。

$ sudo env DISPLAY=:0 /etc/init.d/vmware restart
$ sudo env DISPLAY=:0 /etc/init.d/vmware-USBArbitrator restart
$ env DISPLAY=":0" vmrun -T player start vmware/vmsqueeze-amd64i/vmsqueeze-amd64i.vmx nogui && echo "ok"
No protocol specified
ok