最近在實驗室裡的 CentOS 5.4上裝了VMWare Player 3.01, 在安裝的過程還算蠻順利的但是在啟動服務的時候發先vmnet的服務都無法啟動...後來在試著重新編譯安裝時, 發現了一些奇怪的錯誤...(小弟使用的kernel是2.6.18-164.15.1.el5.centos.plusPAE)
[root@wugi ~]# vmware-modconfig --install-all
Stopping VMware services:
VMware USB Arbitrator [ OK ]
VM communication interface socket family [ OK ]
Virtual machine communication interface [ OK ]
Virtual machine monitor [ OK ]
Blocking file system [ OK ]
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-root/modules/vmmon-only'
make -C /lib/modules/2.6.18-164.15.1.el5.centos.plusPAE/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-164.15.1.el5.centos.plus-PAE-i686'
CC [M] /tmp/vmware-root/modules/vmmon-only/linux/driver.o
CC [M] /tmp/vmware-root/modules/vmmon-only/linux/driverLog.o
CC [M] /tmp/vmware-root/modules/vmmon-only/linux/hostif.o
CC [M] /tmp/vmware-root/modules/vmmon-only/linux/iommu.o
CC [M] /tmp/vmware-root/modules/vmmon-only/common/comport.o
CC [M] /tmp/vmware-root/modules/vmmon-only/common/cpuid.o
CC [M] /tmp/vmware-root/modules/vmmon-only/common/hashFunc.o
CC [M] /tmp/vmware-root/modules/vmmon-only/common/memtrack.o
CC [M] /tmp/vmware-root/modules/vmmon-only/common/phystrack.o
CC [M] /tmp/vmware-root/modules/vmmon-only/common/task.o
CC [M] /tmp/vmware-root/modules/vmmon-only/common/vmx86.o
CC [M] /tmp/vmware-root/modules/vmmon-only/vmcore/moduleloop.o
LD [M] /tmp/vmware-root/modules/vmmon-only/vmmon.o
Building modules, stage 2.
MODPOST
CC /tmp/vmware-root/modules/vmmon-only/vmmon.mod.o
LD [M] /tmp/vmware-root/modules/vmmon-only/vmmon.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.18-164.15.1.el5.centos.plus-PAE-i686'
make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[1]: Entering directory `/tmp/vmware-root/modules/vmmon-only'
make[1]: `postbuild' is up to date.
make[1]: Leaving directory `/tmp/vmware-root/modules/vmmon-only'
cp -f vmmon.ko ./../vmmon.o
make: Leaving directory `/tmp/vmware-root/modules/vmmon-only'
Built vmmon module
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-root/modules/vmnet-only'
make -C /lib/modules/2.6.18-164.15.1.el5.centos.plusPAE/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-164.15.1.el5.centos.plus-PAE-i686'
CC [M] /tmp/vmware-root/modules/vmnet-only/driver.o
CC [M] /tmp/vmware-root/modules/vmnet-only/hub.o
CC [M] /tmp/vmware-root/modules/vmnet-only/userif.o
CC [M] /tmp/vmware-root/modules/vmnet-only/netif.o
In file included from /tmp/vmware-root/modules/vmnet-only/netif.c:43:
/tmp/vmware-root/modules/vmnet-only/compat_netdevice.h:299: error: redefinition of ‘struct napi_struct’
make[2]: *** [/tmp/vmware-root/modules/vmnet-only/netif.o] Error 1
make[1]: *** [_module_/tmp/vmware-root/modules/vmnet-only] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.18-164.15.1.el5.centos.plus-PAE-i686'
make: *** [vmnet.ko] Error 2
make: Leaving directory `/tmp/vmware-root/modules/vmnet-only'
Unable to install vmnet
後來到Google找了一下...發現是CentOS plus kernel 與VMware player衝突所造成的, 文章裡頭也有教我們怎麼去解決這個問題, 主要是修改/usr/lib/vmware/modules/source/vmnet.tar 中的vmxnet-only/compat_netdevice.h 檔, 可以直接下載國外網友已經打包好的檔案 http://communities.vmware.com/servlet/JiveServlet/download/1402806-30733/vmnet.tar.gz 然後更名成vmnet.tar後複製到/usr/lib/vmware/modules/source 中, 再重新編譯就可以正常起動完成vmware相關的服務了, 接下來就可以直接使用vmware player了 :)
參考: