vmware打开linux转圈,linux :vmware kernel update导致vmware无法打开,解决(示例代码)

kernel 4.7 and VMWare Workstation 12.1.# cd /usr/lib/vmware/modules/source

# tar xf vmnet.tar

# mv vmnet.tar vmnet.old.tar

# sed -i -e ‘s/dev->trans_start = jiffies/netif_trans_update\(dev\)/g‘ vmnet-only/netif.c

# tar cf vmnet.tar vmnet-only

# vmware-modconfig --console --install-all

3.13 kernel vmnet fails to build$ curl http://pastie.org/pastes/8672356/download -o /tmp/vmware-netfilter.patch

$ cd /usr/lib/vmware/modules/source

# tar -xvf vmnet.tar

# patch -p0 -i /tmp/vmware-netfilter.patch

# tar -cf vmnet.tar vmnet-only

# rm -r vmnet-only

# vmware-modconfig --console --install-all

3.17 kernel vmnet fails to build# - as root user

$ cd /usr/lib/vmware/modules/source

$ tar -xvf vmnet.tar

# - edit the file vmnet-only/netif.c and replace the line that looks like

dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);

to

dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_UNKNOWN, VNetNetIfSetup);

$ tar -cvf vmnet.tar vmnet-only/

$ rm -rf vmnet-only/

$ vmware-modconfig --console --install-all

Kernel – 4.9-rc3

编辑vmnet-only/userif.c,修改下面内容:#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)    retval = get_user_pages(addr, 1, 1, 0, &page, NULL);#else    retval = get_user_pages(current, current->mm, addr,                1, 1, 0, &page, NULL);#endif

改为:

#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)     retval = get_user_pages(addr, 1, 0, &page, NULL);#else#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)     retval = get_user_pages(addr, 1, 1, 0, &page, NULL);#else     retval = get_user_pages(current, current->mm, addr,                 1, 1, 0, &page, NULL);#endif#endif

编辑vmmon-only/linux/hostif.c,修改以下内容:

#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)   retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL);#else   retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,                           numPages, 0, 0, ppages, NULL);#endif

改为:

#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)   retval = get_user_pages((unsigned long)uvAddr, numPages, 0, ppages, NULL);#else#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)   retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL);#else   retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,                           numPages, 0, 0, ppages, NULL);#endif#endif

重新打包文件tar cf vmnet.tar vmnet-only

tar cf vmmon.tar vmmon-only

执行命令:vmware-modconfig --console --install-all

执行结果:[[email protected] source]# vmware-modconfig --console --install-all

Stopping vmware (via systemctl):                           [  OK  ]

make: Entering directory ‘/tmp/modconfig-vbVNzr/vmmon-only‘

Using kernel build system.

/bin/make -C /lib/modules/4.9.5-200.fc25.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/.   MODULEBUILDDIR= modules

make[1]: Entering directory ‘/usr/src/kernels/4.9.5-200.fc25.x86_64‘

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/linux/driverLog.o

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/linux/driver.o

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/linux/hostif.o

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/common/memtrack.o

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/common/apic.o

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/common/vmx86.o

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/common/cpuid.o

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/common/task.o

/tmp/modconfig-vbVNzr/vmmon-only/linux/driver.c:1283:1: warning: always_inline function might not be inlinable [-Wattributes]

LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min

^~~~~~~~~~~~~~~~~~~~~~~

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/common/hashFunc.o

/tmp/modconfig-vbVNzr/vmmon-only/common/task.o: warning: objtool: .text: unexpected end of section

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/common/comport.o

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/common/phystrack.o

CC [M]  /tmp/modconfig-vbVNzr/vmmon-only/vmcore/moduleloop.o

/tmp/modconfig-vbVNzr/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Free() falls through to next function PhysTrack_Add()

/tmp/modconfig-vbVNzr/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Add() falls through to next function PhysTrack_Remove()

/tmp/modconfig-vbVNzr/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Remove() falls through to next function PhysTrack_Test()

LD [M]  /tmp/modconfig-vbVNzr/vmmon-only/vmmon.o

Building modules, stage 2.

MODPOST 1 modules

CC      /tmp/modconfig-vbVNzr/vmmon-only/vmmon.mod.o

LD [M]  /tmp/modconfig-vbVNzr/vmmon-only/vmmon.ko

make[1]: Leaving directory ‘/usr/src/kernels/4.9.5-200.fc25.x86_64‘

/bin/make -C $PWD SRCROOT=$PWD/.   MODULEBUILDDIR= postbuild

make[1]: Entering directory ‘/tmp/modconfig-vbVNzr/vmmon-only‘

make[1]: ‘postbuild‘ is up to date.

make[1]: Leaving directory ‘/tmp/modconfig-vbVNzr/vmmon-only‘

cp -f vmmon.ko ./../vmmon.o

make: Leaving directory ‘/tmp/modconfig-vbVNzr/vmmon-only‘

make: Entering directory ‘/tmp/modconfig-vbVNzr/vmnet-only‘

Using kernel build system.

/bin/make -C /lib/modules/4.9.5-200.fc25.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/.   MODULEBUILDDIR= modules

make[1]: Entering directory ‘/usr/src/kernels/4.9.5-200.fc25.x86_64‘

CC [M]  /tmp/modconfig-vbVNzr/vmnet-only/driver.o

CC [M]  /tmp/modconfig-vbVNzr/vmnet-only/hub.o

CC [M]  /tmp/modconfig-vbVNzr/vmnet-only/userif.o

CC [M]  /tmp/modconfig-vbVNzr/vmnet-only/netif.o

In file included from ./include/linux/pci.h:35:0,

from /tmp/modconfig-vbVNzr/vmnet-only/compat_netdevice.h:27,

from /tmp/modconfig-vbVNzr/vmnet-only/netif.c:43:

./include/linux/pci_ids.h:2253:0: warning: "PCI_VENDOR_ID_VMWARE" redefined

#define PCI_VENDOR_ID_VMWARE  0x15ad

In file included from /tmp/modconfig-vbVNzr/vmnet-only/net.h:38:0,

from /tmp/modconfig-vbVNzr/vmnet-only/vnetInt.h:26,

from /tmp/modconfig-vbVNzr/vmnet-only/netif.c:42:

/tmp/modconfig-vbVNzr/vmnet-only/vm_device_version.h:56:0: note: this is the location of the previous definition

#define PCI_VENDOR_ID_VMWARE                    0x15AD

CC [M]  /tmp/modconfig-vbVNzr/vmnet-only/bridge.o

CC [M]  /tmp/modconfig-vbVNzr/vmnet-only/procfs.o

CC [M]  /tmp/modconfig-vbVNzr/vmnet-only/smac_compat.o

CC [M]  /tmp/modconfig-vbVNzr/vmnet-only/smac.o

CC [M]  /tmp/modconfig-vbVNzr/vmnet-only/vnetEvent.o

CC [M]  /tmp/modconfig-vbVNzr/vmnet-only/vnetUserListener.o

In file included from /tmp/modconfig-vbVNzr/vmnet-only/net.h:38:0,

from /tmp/modconfig-vbVNzr/vmnet-only/vnetInt.h:26,

from /tmp/modconfig-vbVNzr/vmnet-only/bridge.c:52:

/tmp/modconfig-vbVNzr/vmnet-only/vm_device_version.h:56:0: warning: "PCI_VENDOR_ID_VMWARE" redefined

#define PCI_VENDOR_ID_VMWARE                    0x15AD

In file included from ./include/linux/pci.h:35:0,

from /tmp/modconfig-vbVNzr/vmnet-only/compat_netdevice.h:27,

from /tmp/modconfig-vbVNzr/vmnet-only/bridge.c:51:

./include/linux/pci_ids.h:2253:0: note: this is the location of the previous definition

#define PCI_VENDOR_ID_VMWARE  0x15ad

LD [M]  /tmp/modconfig-vbVNzr/vmnet-only/vmnet.o

Building modules, stage 2.

MODPOST 1 modules

CC      /tmp/modconfig-vbVNzr/vmnet-only/vmnet.mod.o

LD [M]  /tmp/modconfig-vbVNzr/vmnet-only/vmnet.ko

make[1]: Leaving directory ‘/usr/src/kernels/4.9.5-200.fc25.x86_64‘

/bin/make -C $PWD SRCROOT=$PWD/.   MODULEBUILDDIR= postbuild

make[1]: Entering directory ‘/tmp/modconfig-vbVNzr/vmnet-only‘

make[1]: ‘postbuild‘ is up to date.

make[1]: Leaving directory ‘/tmp/modconfig-vbVNzr/vmnet-only‘

cp -f vmnet.ko ./../vmnet.o

make: Leaving directory ‘/tmp/modconfig-vbVNzr/vmnet-only‘

Starting vmware (via systemctl):                           [  OK  ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值