好不容易装好了Ubuntu 7.10 ,准备装Vmware WorkStation6了,可在最新的2.6.22-6内核上确编译Vmnet模块时却失败了,报如下错误:
make: Entering directory `/tmp/vmware-config0/vmnet-only‘
make -C /lib/modules/2.6.22-6-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.22-6-generic’
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
/tmp/vmware-config0/vmnet-only/userif.c: 在函数 ‘VNetCopyDatagramToUser’ 中:
/tmp/vmware-config0/vmnet-only/userif.c:630: 错误: ‘const struct sk_buff’ 没有名为 ‘h’ 的成员
/tmp/vmware-config0/vmnet-only/userif.c:630: 错误: ‘const struct sk_buff’ 没有名为 ‘nh’ 的成员
/tmp/vmware-config0/vmnet-only/userif.c:636: 错误: ‘const struct sk_buff’ 没有名为 ‘h’ 的成员
make[2]: *** [/tmp/vmware-config0/vmnet-only/userif.o] 错误 1
make[1]: *** [_module_/tmp/vmware-config0/vmnet-only] 错误 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.22-6-generic‘
make: *** [vmnet.ko] 错误 2
make: Leaving directory `/tmp/vmware-config0/vmnet-only’
Unable to build the vmnet module.
哎,又是一个和内核编码规范不符合的BUG,还好已经有人修复了这个问题,具体的修复方法如下:
cd /tmp
wget http://labs.eshangrao.com/files/vmnet.tar
cd /usr/lib/vmware/modules/source
sudo mv vmnet.tar vmnet.tar.old
cp /tmp/vmnet.tar ./
然后使用如下命令按提示重新编译Vmware模块就可以了:
sudo vmware-config.pl