在 18.10 上安装 VMware:无法构建 vmmon

在 18.10 上安装 VMware:无法构建 vmmon

尝试使用 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

相关内容