CentOS でカーネルをバージョンアップしたときに VMWare Server の再設定をするには

February 25, 2008

VMWare Server ではカーネルのバージョンを上げると再コンパイルが必要になる。
まずカーネルの確認。

$ uname -r
2.6.18-53.1.13.el5xen

ノーマルもしくは xen の devel パッケージをインストール。

# yum install kernel-devel.i386
もしくは
# yum install kernel-xen-devel.i386

vmware-config.pl を実行する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
$ sudo vmware-config.pl
Making sure services for VMware Server are stopped.
Stopping VMware services:
Virtual machine monitor \[ OK \]
Bridged networking on /dev/vmnet0 \[ OK \]
Virtual ethernet \[ OK \]
Configuring fallback GTK+ 2.4 libraries.
In which directory do you want to install the mime type icons?
\[/usr/share/icons\]
What directory contains your desktop menu entry files? These files have a
.desktop file extension. \[/usr/share/applications\]
In which directory do you want to install the application's icon?
\[/usr/share/pixmaps\]
Trying to find a suitable vmmon module for your running kernel.
None of the pre-built vmmon modules for VMware Server is suitable for your
running kernel. Do you want this program to try to build the vmmon module for
your system (you need to have a C compiler installed on your system)? \[yes\]
Using compiler "/usr/bin/gcc". Use environment variable CC to override.
What is the location of the directory of C header files that match your running
kernel? \[/usr/src/linux/include\] /usr/src/kernels/2.6.18-53.1.13.el5-i686/include
The directory of kernel headers (version 2.6.18-53.1.13.el5) does not match
your running kernel (version 2.6.18-53.1.13.el5xen). Even if the module were
to compile successfully, it would not load into the running kernel.
What is the location of the directory of C header files that match your running
kernel? \[/usr/src/linux/include\] /lib/modules/2.6.18-53.1.13.el5xen/build/include
Extracting the sources of the vmmon module.
Building the vmmon module.
Using 2.6.x kernel build system.
make: ディレクトリ `/tmp/vmware-config0/vmmon-only' に入ります
ake -C /lib/modules/2.6.18-53.1.13.el5xen/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make\[1\]: ディレクトリ `/usr/src/kernels/2.6.18-53.1.13.el5-xen-i686' に入ります
C \[M\] /tmp/vmware-config0/vmmon-only/linux/driver.o
CC \[M\] /tmp/vmware-config0/vmmon-only/linux/hostif.o
CC \[M\] /tmp/vmware-config0/vmmon-only/common/cpuid.o
CC \[M\] /tmp/vmware-config0/vmmon-only/common/hash.o
CC \[M\] /tmp/vmware-config0/vmmon-only/common/memtrack.o
CC \[M\] /tmp/vmware-config0/vmmon-only/common/phystrack.o
CC \[M\] /tmp/vmware-config0/vmmon-only/common/task.o
CC \[M\] /tmp/vmware-config0/vmmon-only/common/vmx86.o
CC \[M\] /tmp/vmware-config0/vmmon-only/vmcore/moduleloop.o
LD \[M\] /tmp/vmware-config0/vmmon-only/vmmon.o
Building modules, stage 2.
MODPOST
CC /tmp/vmware-config0/vmmon-only/vmmon.mod.o
LD \[M\] /tmp/vmware-config0/vmmon-only/vmmon.ko
make\[1\]: ディレクトリ `/usr/src/kernels/2.6.18-53.1.13.el5-xen-i686' から出ます
cp -f vmmon.ko ./../vmmon.o
make: ディレクトリ `/tmp/vmware-config0/vmmon-only' から出ます
The module loads perfectly in the running kernel.
This program previously created the file /dev/vmmon, and was about to remove
it. Somebody else apparently did it already.
This program previously created the file /dev/vmnet0, and was about to remove
it. Somebody else apparently did it already.
You have already setup networking.
Would you like to skip networking setup and keep your old settings as they are?
(yes/no) \[no\] yes
Extracting the sources of the vmnet module.
Building the vmnet module.
Using 2.6.x kernel build system.
make: ディレクトリ `/tmp/vmware-config0/vmnet-only' に入ります
make -C /lib/modules/2.6.18-53.1.13.el5xen/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make\[1\]: ディレクトリ `/usr/src/kernels/2.6.18-53.1.13.el5-xen-i686' に入ります
CC \[M\] /tmp/vmware-config0/vmnet-only/driver.o
CC \[M\] /tmp/vmware-config0/vmnet-only/hub.o
CC \[M\] /tmp/vmware-config0/vmnet-only/userif.o
CC \[M\] /tmp/vmware-config0/vmnet-only/netif.o
CC \[M\] /tmp/vmware-config0/vmnet-only/bridge.o
CC \[M\] /tmp/vmware-config0/vmnet-only/procfs.o
CC \[M\] /tmp/vmware-config0/vmnet-only/smac_compat.o
SHIPPED /tmp/vmware-config0/vmnet-only/smac_linux.x386.o
LD \[M\] /tmp/vmware-config0/vmnet-only/vmnet.o
Building modules, stage 2.
MODPOST
WARNING: could not find /tmp/vmware-config0/vmnet-only/.smac\_linux.x386.o.cmd for /tmp/vmware-config0/vmnet-only/smac\_linux.x386.o
CC /tmp/vmware-config0/vmnet-only/vmnet.mod.o
LD \[M\] /tmp/vmware-config0/vmnet-only/vmnet.ko
make\[1\]: ディレクトリ `/usr/src/kernels/2.6.18-53.1.13.el5-xen-i686' から出ます
cp -f vmnet.ko ./../vmnet.o
make: ディレクトリ `/tmp/vmware-config0/vmnet-only' から出ます
The module loads perfectly in the running kernel.
Shutting down http.vmware: \[ OK \]
Starting httpd.vmware: \[ OK \]
Please specify a port for remote console connections to use \[9002\]
WARNING: VMware Server has been configured to run on a port different from the
default port. Remember to use this port when connecting to this server.
xinetd を停止中: \[ OK \]
xinetd を起動中: \[ OK \]
Configuring the VMware VmPerl Scripting API.
Building the VMware VmPerl Scripting API.
Using compiler "/usr/bin/gcc". Use environment variable CC to override.
Installing the VMware VmPerl Scripting API.
The installation of the VMware VmPerl Scripting API succeeded.
Do you want this program to set up permissions for your registered virtual
machines? This will be done by setting new permissions on all files found in
the "/etc/vmware/vm-list" file. \[no\]
Generating SSL Server Certificate
In which directory do you want to keep your virtual machine files?
\[/var/lib/vmware/Virtual Machines\]
Do you want to enter a serial number now? (yes/no/help) \[no\]
Starting VMware services:
Virtual machine monitor \[ OK \]
Virtual ethernet \[ OK \]
Bridged networking on /dev/vmnet0 \[ OK \]
Starting VMware virtual machines... \[ OK \]
The configuration of VMware Server 1.0.4 build-56528 for Linux for this running
kernel completed successfully.
Setup found that the VMware Management Interface is installed on your machine.
The VMware Management Interface configurator (/usr/bin/vmware-config-mui.pl)
needs to be run. Do you want to run this program now? \[yes\]
File /usr/lib/vmware-mui/apache/conf/httpd.conf is backed up to
/usr/lib/vmware-mui/apache/conf/httpd.conf.old.0.
Configuring httpd.conf to run Apache as:
User: nobody and Group: nobody
Set the number of minutes before a http session times out. (This is the length
of time before someone connecting to VMware Management Interface will be logged
out) \[60\]
Generating SSL Server Certificate
Starting httpd.vmware: \[ OK \]
The configuration of VMware Management Interface completed successfully.

と動かそうと思ったら、

1
2
3
4
5
Feb 29 11:46:36: app| Error during launch: 11, The "/usr/lib/vmware/bin/vmware-vmx" proc
ess did not start properly
Feb 29 11:46:36: app| Try running "/usr/lib/vmware/bin/vmware-vmx /var/lib/vmware/Virtu
al Machines/CentOs5/centos5.vmx" from the command-line on the server.
Feb 29 11:46:36: app| VmsdVmStatePendingCmdFailed: cmd status is already set

となってしまった。やはり kernel-xen で動かそうとしているのが間違っていたみたい。
/etc/sysconfig/kernel で DEFAULTKERNEL=kernel に修正し、/boot/grub/menu.lst を修正して xen ではない項目を default にセットし、reboot。
再度 vmware-config.pl を叩いて、/lib/modules/2.6.18-53.1.13.el5/build/include でコンパイルしたら動きました。
(3/3 加筆しました)

tilfin freelance software engineer