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

Jas*_*ter 6 vmware compiling 18.10

尝试使用 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' 的先前定义在这里
 静态内联 unsigned long 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=隐式函数声明]
    do_gettimeofday(&tv);
    ^~~~~~~~~~~~~~~~
    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 个
    if (!access_ok(VERIFY_WRITE, p, size)) {
                                        ^
/tmp/modconfig-QBnnBd/vmmon-only/linux/hostif.c:3408:9: 错误: 'access_ok' 未声明(首次在此函数中使用)
    if (!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'
make: *** [Makefile:110: vmmon.ko] 错误 2
制作:离开目录'/tmp/modconfig-QBnnBd/vmmon-only'
制作:进入目录'/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: 'SUBDIRS' 将在 Linux 5.3 之后被删除
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 个
    if (!access_ok(VERIFY_WRITE, (void *)uAddr, size) ||
                                                    ^
/tmp/modconfig-QBnnBd/vmnet-only/userif.c:145:9: 错误: 'access_ok' 未声明(首次在此函数中使用)
    if (!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”重新定义
 #define 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:注意:这是之前定义的位置
 #define 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”重新定义
 #define 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:注意:这是之前定义的位置
 #define 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”重新定义
 #define 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:注意:这是之前定义的位置
 #define 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”重新定义
 #define 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:注意:这是之前定义的位置
 #define 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
制作:离开目录'/tmp/modconfig-QBnnBd/vmnet-only'
无法安装所有模块。有关详细信息,请参阅日志。

小智 6

使用github.com/mkubecek/vmware-host-modules上的补丁。

您需要知道您正在尝试安装 VMWare Workstation 还是 Player,以及哪个版本。

您可以使用以下命令获取您的 VMWare 版本:

$ vmware -v
Run Code Online (Sandbox Code Playgroud)

在下面的示例中,我假设 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
Run Code Online (Sandbox Code Playgroud)