系统由CentOS7.3升级到CentOS7.4后,Vmware12大不开,出现了kernel module updater的提示,运行vmware-modconfig --console --install-all 重新建立模块,如果建立成功,那么恭喜。如果没有的话,就查看编译过后红色标记为error错误的提示。我的出现的问题如下:
# vmware-modconfig --console --install-all
Stopping vmware (via systemctl): [ OK ]
Using kernel build system.
make: Entering directory `/tmp/modconfig-5AxYzD/vmmon-only'
/usr/bin/make -C /lib/modules/3.10.0-693.2.2.el7.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-693.2.2.el7.x86_64'
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/linux/driverLog.o
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/linux/driver.o
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/linux/hostif.o
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/common/memtrack.o
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/common/apic.o
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/common/hashFunc.o
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/common/vmx86.o
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/common/cpuid.o
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/common/task.o
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/common/comport.o
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/common/phystrack.o
CC [M] /tmp/modconfig-5AxYzD/vmmon-only/vmcore/moduleloop.o
/tmp/modconfig-5AxYzD/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Free() falls through to next function PhysTrack_Add()
/tmp/modconfig-5AxYzD/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Add() falls through to next function PhysTrack_Remove()
/tmp/modconfig-5AxYzD/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Remove() falls through to next function PhysTrack_Test()
/tmp/modconfig-5AxYzD/vmmon-only/linux/driver.c:1291:1: warning: always_inline function might not be inlinable [-Wattributes]
LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
^
/tmp/modconfig-5AxYzD/vmmon-only/common/task.o: warning: objtool: .text: unexpected end of section
LD [M] /tmp/modconfig-5AxYzD/vmmon-only/vmmon.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/modconfig-5AxYzD/vmmon-only/vmmon.mod.o
LD [M] /tmp/modconfig-5AxYzD/vmmon-only/vmmon.ko
make[1]: Leaving directory `/usr/src/kernels/3.10.0-693.2.2.el7.x86_64'
/usr/bin/make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[1]: Entering directory `/tmp/modconfig-5AxYzD/vmmon-only'
make[1]: `postbuild' is up to date.
make[1]: Leaving directory `/tmp/modconfig-5AxYzD/vmmon-only'
cp -f vmmon.ko ./../vmmon.o
make: Leaving directory `/tmp/modconfig-5AxYzD/vmmon-only'
Using kernel build system.
make: Entering directory `/tmp/modconfig-5AxYzD/vmnet-only'
/usr/bin/make -C /lib/modules/3.10.0-693.2.2.el7.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-693.2.2.el7.x86_64'
CC [M] /tmp/modconfig-5AxYzD/vmnet-only/driver.o
CC [M] /tmp/modconfig-5AxYzD/vmnet-only/hub.o
CC [M] /tmp/modconfig-5AxYzD/vmnet-only/userif.o
CC [M] /tmp/modconfig-5AxYzD/vmnet-only/netif.o
CC [M] /tmp/modconfig-5AxYzD/vmnet-only/bridge.o
CC [M] /tmp/modconfig-5AxYzD/vmnet-only/procfs.o
CC [M] /tmp/modconfig-5AxYzD/vmnet-only/smac_compat.o
CC [M] /tmp/modconfig-5AxYzD/vmnet-only/smac.o
CC [M] /tmp/modconfig-5AxYzD/vmnet-only/vnetEvent.o
CC [M] /tmp/modconfig-5AxYzD/vmnet-only/vnetUserListener.o
In file included from include/linux/pci.h:35:0,
from /tmp/modconfig-5AxYzD/vmnet-only/compat_netdevice.h:27,
from /tmp/modconfig-5AxYzD/vmnet-only/netif.c:43:
include/linux/pci_ids.h:2251:0: warning: "PCI_VENDOR_ID_VMWARE" redefined [enabled by default]
#define PCI_VENDOR_ID_VMWARE 0x15ad
^
In file included from /tmp/modconfig-5AxYzD/vmnet-only/net.h:38:0,
from /tmp/modconfig-5AxYzD/vmnet-only/vnetInt.h:26,
from /tmp/modconfig-5AxYzD/vmnet-only/netif.c:42:
/tmp/modconfig-5AxYzD/vmnet-only/vm_device_version.h:56:0: note: this is the location of the previous definition
#define PCI_VENDOR_ID_VMWARE 0x15AD
^
In file included from /tmp/modconfig-5AxYzD/vmnet-only/netif.c:43:0:
/tmp/modconfig-5AxYzD/vmnet-only/netif.c: In function ‘VNetNetifStartXmit’:
/tmp/modconfig-5AxYzD/vmnet-only/compat_netdevice.h:343:46: error: ‘struct net_device’ has no member named ‘trans_start’
#define compat_netif_trans_update(d) do { (d)->trans_start = jiffies; } while (0)
^
/tmp/modconfig-5AxYzD/vmnet-only/netif.c:468:4: note: in expansion of macro ‘compat_netif_trans_update’
compat_netif_trans_update(dev);
^
make[2]: *** [/tmp/modconfig-5AxYzD/vmnet-only/netif.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /tmp/modconfig-5AxYzD/vmnet-only/net.h:38:0,
from /tmp/modconfig-5AxYzD/vmnet-only/vnetInt.h:26,
from /tmp/modconfig-5AxYzD/vmnet-only/bridge.c:52:
/tmp/modconfig-5AxYzD/vmnet-only/vm_device_version.h:56:0: warning: "PCI_VENDOR_ID_VMWARE" redefined [enabled by default]
#define PCI_VENDOR_ID_VMWARE 0x15AD
^
In file included from include/linux/pci.h:35:0,
from /tmp/modconfig-5AxYzD/vmnet-only/compat_netdevice.h:27,
from /tmp/modconfig-5AxYzD/vmnet-only/bridge.c:51:
include/linux/pci_ids.h:2251:0: note: this is the location of the previous definition
#define PCI_VENDOR_ID_VMWARE 0x15ad
^
make[1]: *** [_module_/tmp/modconfig-5AxYzD/vmnet-only] Error 2
make[1]: Leaving directory `/usr/src/kernels/3.10.0-693.2.2.el7.x86_64'
make: *** [vmnet.ko] Error 2
make: Leaving directory `/tmp/modconfig-5AxYzD/vmnet-only'
Unable to install all modules. See log for details.
问题出现在这个地方:
/tmp/modconfig-5AxYzD/vmnet-only/compat_netdevice.h:343:46: error: ‘struct net_device’ has no member named ‘trans_start’
#define compat_netif_trans_update(d) do { (d)->trans_start = jiffies; } while (0)
进入到首先/usr/lib/vmware/modules/source目录下,备份vmnet.tar和vmmon.tar,由于出现问题的在vmnet.tar里面,只需解压( tar -xf vmnet.tar)vmnet.tar即可。找到compat_netdevice.h文件的#define compat_netif_trans_update(d) do { (d)->trans_start = jiffies; } while (0) 这句,把他修改成#define compat_netif_trans_update(d) do { } while (0)即可,打包修(tar -uf vmnet.tar vmnet-only)改后的文件。再次运行vmware-modconfig --console --install-all,没有发现错误提示,运行结果如下:
[root@localhost tmp]# vmware-modconfig --console --install-all
Stopping vmware (via systemctl): [ OK ]
Using kernel build system.
make: Entering directory `/tmp/modconfig-w3lVM0/vmmon-only'
/usr/bin/make -C /lib/modules/3.10.0-693.2.2.el7.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-693.2.2.el7.x86_64'
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/linux/driverLog.o
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/linux/driver.o
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/linux/hostif.o
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/common/memtrack.o
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/common/apic.o
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/common/hashFunc.o
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/common/vmx86.o
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/common/cpuid.o
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/common/task.o
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/common/comport.o
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/common/phystrack.o
CC [M] /tmp/modconfig-w3lVM0/vmmon-only/vmcore/moduleloop.o
/tmp/modconfig-w3lVM0/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Free() falls through to next function PhysTrack_Add()
/tmp/modconfig-w3lVM0/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Add() falls through to next function PhysTrack_Remove()
/tmp/modconfig-w3lVM0/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Remove() falls through to next function PhysTrack_Test()
/tmp/modconfig-w3lVM0/vmmon-only/linux/driver.c:1291:1: warning: always_inline function might not be inlinable [-Wattributes]
LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
^
/tmp/modconfig-w3lVM0/vmmon-only/common/task.o: warning: objtool: .text: unexpected end of section
LD [M] /tmp/modconfig-w3lVM0/vmmon-only/vmmon.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/modconfig-w3lVM0/vmmon-only/vmmon.mod.o
LD [M] /tmp/modconfig-w3lVM0/vmmon-only/vmmon.ko
make[1]: Leaving directory `/usr/src/kernels/3.10.0-693.2.2.el7.x86_64'
/usr/bin/make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[1]: Entering directory `/tmp/modconfig-w3lVM0/vmmon-only'
make[1]: `postbuild' is up to date.
make[1]: Leaving directory `/tmp/modconfig-w3lVM0/vmmon-only'
cp -f vmmon.ko ./../vmmon.o
make: Leaving directory `/tmp/modconfig-w3lVM0/vmmon-only'
Using kernel build system.
make: Entering directory `/tmp/modconfig-w3lVM0/vmnet-only'
/usr/bin/make -C /lib/modules/3.10.0-693.2.2.el7.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-693.2.2.el7.x86_64'
CC [M] /tmp/modconfig-w3lVM0/vmnet-only/driver.o
CC [M] /tmp/modconfig-w3lVM0/vmnet-only/hub.o
CC [M] /tmp/modconfig-w3lVM0/vmnet-only/userif.o
CC [M] /tmp/modconfig-w3lVM0/vmnet-only/netif.o
CC [M] /tmp/modconfig-w3lVM0/vmnet-only/bridge.o
CC [M] /tmp/modconfig-w3lVM0/vmnet-only/procfs.o
CC [M] /tmp/modconfig-w3lVM0/vmnet-only/smac_compat.o
CC [M] /tmp/modconfig-w3lVM0/vmnet-only/smac.o
CC [M] /tmp/modconfig-w3lVM0/vmnet-only/vnetEvent.o
CC [M] /tmp/modconfig-w3lVM0/vmnet-only/vnetUserListener.o
In file included from include/linux/pci.h:35:0,
from /tmp/modconfig-w3lVM0/vmnet-only/compat_netdevice.h:27,
from /tmp/modconfig-w3lVM0/vmnet-only/netif.c:43:
include/linux/pci_ids.h:2251:0: warning: "PCI_VENDOR_ID_VMWARE" redefined [enabled by default]
#define PCI_VENDOR_ID_VMWARE 0x15ad
^
In file included from /tmp/modconfig-w3lVM0/vmnet-only/net.h:38:0,
from /tmp/modconfig-w3lVM0/vmnet-only/vnetInt.h:26,
from /tmp/modconfig-w3lVM0/vmnet-only/netif.c:42:
/tmp/modconfig-w3lVM0/vmnet-only/vm_device_version.h:56:0: note: this is the location of the previous definition
#define PCI_VENDOR_ID_VMWARE 0x15AD
^
In file included from /tmp/modconfig-w3lVM0/vmnet-only/net.h:38:0,
from /tmp/modconfig-w3lVM0/vmnet-only/vnetInt.h:26,
from /tmp/modconfig-w3lVM0/vmnet-only/bridge.c:52:
/tmp/modconfig-w3lVM0/vmnet-only/vm_device_version.h:56:0: warning: "PCI_VENDOR_ID_VMWARE" redefined [enabled by default]
#define PCI_VENDOR_ID_VMWARE 0x15AD
^
In file included from include/linux/pci.h:35:0,
from /tmp/modconfig-w3lVM0/vmnet-only/compat_netdevice.h:27,
from /tmp/modconfig-w3lVM0/vmnet-only/bridge.c:51:
include/linux/pci_ids.h:2251:0: note: this is the location of the previous definition
#define PCI_VENDOR_ID_VMWARE 0x15ad
^
LD [M] /tmp/modconfig-w3lVM0/vmnet-only/vmnet.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/modconfig-w3lVM0/vmnet-only/vmnet.mod.o
LD [M] /tmp/modconfig-w3lVM0/vmnet-only/vmnet.ko
make[1]: Leaving directory `/usr/src/kernels/3.10.0-693.2.2.el7.x86_64'
/usr/bin/make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[1]: Entering directory `/tmp/modconfig-w3lVM0/vmnet-only'
make[1]: `postbuild' is up to date.
make[1]: Leaving directory `/tmp/modconfig-w3lVM0/vmnet-only'
cp -f vmnet.ko ./../vmnet.o
make: Leaving directory `/tmp/modconfig-w3lVM0/vmnet-only'
Starting vmware (via systemctl): [ OK ]
再次打开vmware,熟悉的界面出现了。
参考:
http://www.kali.org.cn/thread-22052-1-1.html
http://blog.youkuaiyun.com/byb123/article/details/52094840