在18.10上安装VMware:构建vmmon失败。

尝试在Ubuntu-18.10上使用linux-5.0.1-050001-generic构建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’的先前定义在这里 static inline 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=implicit-function-declaration] 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 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= modules make[1]: 进入目录'/usr/src/linux-headers-5.0.1-050001-generic' Makefile:189: ================= WARNING ================ 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
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

我在Ubuntu 22.04上也遇到了同样的问题。对我来说,替代性的安装方法起了作用!https://github.com/mkubecek/vmware-host-modules/blob/master/INSTALL - Freude