尝试使用 linux-5.0.1-050001-generic 在 Ubuntu-18.10 上构建 VMware 模块
vmware-modconfig --console --install-all
以下是整个输出: https://pastebin.com/d61HGWJR
在 /tmp/modconfig-QBnnBd/vmmon-only/linux/hostif.c:42 中包含的文件中: ./include/linux/mm.h:52:29: 注意:'totalram_pages' 的先前定义在这里 静态内联无符号长整型totalram_pages(void) ^~~~~~~~~~~~~~~~ /tmp/modconfig-QBnnBd/vmmon-only/linux/hostif.c: 在函数“HostIFReadUptimeWork”中: /tmp/modconfig-QBnnBd/vmmon-only/linux/hostif.c:1787:4:错误:函数“do_gettimeofday”的隐式声明;您的意思是“do_settimeofday64”吗?[-Werror=implicit-function-declaration] 执行_获取时间(&电视); ^~~~~~~~~~~~~~~~~ do_settimeofday64 /tmp/modconfig-QBnnBd/vmmon-only/linux/hostif.c: 在函数“HostIF_MapUserMem”中: /tmp/modconfig-QBnnBd/vmmon-only/linux/hostif.c:3408:40:错误:宏“access_ok”传递了 3 个参数,但只接受 2 个 如果 (!access_ok(VERIFY_WRITE, p, size)) { ^ /tmp/modconfig-QBnnBd/vmmon-only/linux/hostif.c:3408:9: 错误:‘access_ok’未声明(在此函数中首次使用) 如果 (!access_ok(VERIFY_WRITE, p, size)) { ^~~~~~~~~~ /tmp/modconfig-QBnnBd/vmmon-only/linux/hostif.c:3408:9: 注意:每个未声明的标识符在其出现的每个函数中仅报告一次 cc1:一些警告被视为错误 make[2]: *** [scripts/Makefile.build:277: /tmp/modconfig-QBnnBd/vmmon-only/linux/hostif.o] 错误 1 make[2]: *** 等待未完成的作业.... /tmp/modconfig-QBnnBd/vmmon-only/common/task.o: 警告:objtool:Task_Switch()+0x4db:在 RETPOLINE 构建中发现间接调用 /tmp/modconfig-QBnnBd/vmmon-only/common/task.o: 警告:objtool:.text:意外的部分结束 make[1]:*** [Makefile:1553:_module_/tmp/modconfig-QBnnBd/vmmon-only] 错误 2 make[1]: 离开目录 '/usr/src/linux-headers-5.0.1-050001-generic' 制作:*** [Makefile:110:vmmon.ko] 错误 2 make:离开目录‘/tmp/modconfig-QBnnBd/vmmon-only’ make:进入目录“/tmp/modconfig-QBnnBd/vmnet-only” 使用内核构建系统。 /usr/bin/make -C /lib/modules/5.0.1-050001-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/.\ MODULEBUILDDIR= 模块 make[1]: 进入目录 '/usr/src/linux-headers-5.0.1-050001-generic' Makefile:189: ================= 警告 ================ Makefile:190:Linux 5.3 之后将删除“SUBDIRS” Makefile:191:请改用“M=”或“KBUILD_EXTMOD” Makefile:192: ============================================== CC [M] /tmp/modconfig-QBnnBd/vmnet-only/driver.o CC [M] /tmp/modconfig-QBnnBd/vmnet-only/hub.o CC [M] /tmp/modconfig-QBnnBd/vmnet-only/userif.o CC [M] /tmp/modconfig-QBnnBd/vmnet-only/netif.o CC [M] /tmp/modconfig-QBnnBd/vmnet-only/bridge.o CC [M] /tmp/modconfig-QBnnBd/vmnet-only/procfs.o CC [M] /tmp/modconfig-QBnnBd/vmnet-only/smac_compat.o CC [M] /tmp/modconfig-QBnnBd/vmnet-only/smac.o /tmp/modconfig-QBnnBd/vmnet-only/userif.c: 在函数“VNetUserIfMapPtr”中: /tmp/modconfig-QBnnBd/vmnet-only/userif.c:145:52:错误:宏“access_ok”传递了 3 个参数,但只接受 2 个 如果 (!access_ok(VERIFY_WRITE,(void *)uAddr,size) || ^ /tmp/modconfig-QBnnBd/vmnet-only/userif.c:145:9: 错误:‘access_ok’未声明(在此函数中首次使用) 如果 (!access_ok(VERIFY_WRITE,(void *)uAddr,size) || ^~~~~~~~~~ /tmp/modconfig-QBnnBd/vmnet-only/userif.c:145:9: 注意:每个未声明的标识符在其出现的每个函数中仅报告一次 在从 ./include/linux/pci.h:37 包含的文件中, 来自 /tmp/modconfig-QBnnBd/vmnet-only/compat_netdevice.h:27, 来自 /tmp/modconfig-QBnnBd/vmnet-only/netif.c:43: ./include/linux/pci_ids.h:2278:警告:“PCI_VENDOR_ID_VMWARE”已重新定义 #定义 PCI_VENDOR_ID_VMWARE 0x15ad 在 /tmp/modconfig-QBnnBd/vmnet-only/net.h:38 包含的文件中, 来自 /tmp/modconfig-QBnnBd/vmnet-only/vnetInt.h:26, 来自 /tmp/modconfig-QBnnBd/vmnet-only/netif.c:42: /tmp/modconfig-QBnnBd/vmnet-only/vm_device_version.h:56:注意:这是先前定义的位置 #定义 PCI_VENDOR_ID_VMWARE 0x15AD 在从 ./include/linux/pci.h:37 包含的文件中, 来自 /tmp/modconfig-QBnnBd/vmnet-only/compat_netdevice.h:27, 来自 /tmp/modconfig-QBnnBd/vmnet-only/netif.c:43: ./include/linux/pci_ids.h:2279:警告:“PCI_DEVICE_ID_VMWARE_VMXNET3”已重新定义 #定义 PCI_DEVICE_ID_VMWARE_VMXNET3 0x07b0 在 /tmp/modconfig-QBnnBd/vmnet-only/net.h:38 包含的文件中, 来自 /tmp/modconfig-QBnnBd/vmnet-only/vnetInt.h:26, 来自 /tmp/modconfig-QBnnBd/vmnet-only/netif.c:42: /tmp/modconfig-QBnnBd/vmnet-only/vm_device_version.h:73:注意:这是先前定义的位置 #定义 PCI_DEVICE_ID_VMWARE_VMXNET3 0x07B0 CC [M] /tmp/modconfig-QBnnBd/vmnet-only/vnetEvent.o make[2]:*** [scripts/Makefile.build:277:/tmp/modconfig-QBnnBd/vmnet-only/userif.o] 错误 1 make[2]: *** 等待未完成的作业.... 在 /tmp/modconfig-QBnnBd/vmnet-only/net.h:38 包含的文件中, 来自 /tmp/modconfig-QBnnBd/vmnet-only/vnetInt.h:26, 来自 /tmp/modconfig-QBnnBd/vmnet-only/bridge.c:53: /tmp/modconfig-QBnnBd/vmnet-only/vm_device_version.h:56:警告:“PCI_VENDOR_ID_VMWARE”重新定义 #定义 PCI_VENDOR_ID_VMWARE 0x15AD 在从 ./include/linux/pci.h:37 包含的文件中, 来自 /tmp/modconfig-QBnnBd/vmnet-only/compat_netdevice.h:27, 来自 /tmp/modconfig-QBnnBd/vmnet-only/bridge.c:52: ./include/linux/pci_ids.h:2278:注意:这是先前定义的位置 #定义 PCI_VENDOR_ID_VMWARE 0x15ad 在 /tmp/modconfig-QBnnBd/vmnet-only/net.h:38 包含的文件中, 来自 /tmp/modconfig-QBnnBd/vmnet-only/vnetInt.h:26, 来自 /tmp/modconfig-QBnnBd/vmnet-only/bridge.c:53: /tmp/modconfig-QBnnBd/vmnet-only/vm_device_version.h:73:警告:“PCI_DEVICE_ID_VMWARE_VMXNET3”重新定义 #定义 PCI_DEVICE_ID_VMWARE_VMXNET3 0x07B0 在从 ./include/linux/pci.h:37 包含的文件中, 来自 /tmp/modconfig-QBnnBd/vmnet-only/compat_netdevice.h:27, 来自 /tmp/modconfig-QBnnBd/vmnet-only/bridge.c:52: ./include/linux/pci_ids.h:2279: 注意:这是先前定义的位置 #定义 PCI_DEVICE_ID_VMWARE_VMXNET3 0x07b0 make[1]:*** [Makefile:1553:_module_/tmp/modconfig-QBnnBd/vmnet-only] 错误 2 make[1]: 离开目录 '/usr/src/linux-headers-5.0.1-050001-generic' make:*** [Makefile:110:vmnet.ko] 错误 2 make:离开目录‘/tmp/modconfig-QBnnBd/vmnet-only’ 无法安装所有模块。请参阅日志了解详细信息。
答案1
使用以下补丁github.com/mkubecek/vmware-host-modules。
您需要知道您是否尝试安装 VMWare Workstation 或 Player,以及安装哪个版本。
您可以使用以下命令获取您的 VMWare 版本:
$ vmware -v
在下面的例子中,我假设 VMWare Workstation 15.0.1:
$ git clone https://github.com/mkubecek/vmware-host-modules
$ cd vmware-host-modules
$ git checkout workstation-15.0.1
$ make
$ sudo make install