【Linux】vmware17.5.1 vmmon和 vmnet编译失败

1. 问题背景

$ uname -r
6.8.0-40-generic

$ vmplayer --version
VMware Player 17.5.1 build-23298084

2. 问题原因

linux内核升级 导致 vmmonvmnet 编译不成功

3. 问题解决

3.1 补丁寻找

根据搜索查询到了vmwre社区说过这个问题,具体的补丁github在https://github.com/mkubecek/vmware-host-modules/tags

下载了与我的电脑对应的版本的补丁。

3.2 补丁安装

关于补丁的安装,找到了两种途径,一种是经过make直接安装的,比较简单无脑。

$ make 
$ sudo make install 

另外一种是将相应的vmmonvmnet打包,使用vmware的配置工具安装

$ cd vmware-host-modules-17.5.1
$ tar -cf vmmon.tar vmmon-only
$ tar -cf vmnet.tar vmnet-only
$ sudo cp -v vmmon.tar vmnet.tar /usr/lib/vmware/modules/source/

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

无论是哪种途径,都导致以下的问题,导致无法编译。

   ...
   ...
/tmp/vmware-host-modules-w17.5.1/vmmon-only/common/task.c:548:1: warning: no previous prototype for ‘TaskGetFlatWriteableDataSegment’ [-Wmissing-prototypes]
  548 | TaskGetFlatWriteableDataSegment(void)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/vmware-host-modules-w17.5.1/vmmon-only/common/task.o: warning: objtool: .text: unexpected end of section
  CC [M]  /tmp/vmware-host-modules-w17.5.1/vmmon-only/common/vmx86.o
In file included from /tmp/vmware-host-modules-w17.5.1/vmmon-only/common/vmx86.c:52:
./arch/x86/include/asm/timex.h: In function ‘random_get_entropy’:
./arch/x86/include/asm/timex.h:12:24: error: implicit declaration of function ‘random_get_entropy_fallback’; did you mean ‘random_get_entropy’? [-Werror=implicit-function-declaration]
   12 |                 return random_get_entropy_fallback();
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                        random_get_entropy
   ...
   ...

3.3 修复版补丁安装

\(stackexchange\) 论坛上找到了关于17.5.1在linux内核6.8.0下补丁仍出现问题的帖子,给出了修复版补丁的github地址
https://github.com/mkubecek/vmware-host-modules/tree/workstation-17.5.1

通过这个补丁的下载,以及之前提到的编译方法,直接就可以安装

启动vmware 成功!

4. 补充

  1. [2024.09.25] 如果通过修复版补丁采用makemake install之后,启动vmware成功 但是报错
Install VMware : Could not open /dev/vmmon: No such file or directory. Please make sure that the kernel module `vmmon' is loaded 

请通过方法二,将指定文件移动然后通过vmware的配置工具进行安装,之后就可以成功启动虚拟机了

相关链接

  1. How to fix VMware unable to install all modules vmmon vmnet:https://dimitar.me/how-to-fix-vmware-unable-to-install-all-modules-vmmon-vmnet/
  2. Vmware Unable to install all modules,不能够编译安装vmmon和vmnet:https://blog.csdn.net/pannubi/article/details/107885466
  3. 如何将 VMware 工作站/播放器与最新的 Linux 内核一起使用:https://pyopyopyo.hatenablog.com/entry/2023/01/15/214027
  4. VMware vmmon & vmnet 17.5.1和Linux内核6.8.0无法编译:https://unix.stackexchange.com/questions/773558/vmware-vmmon-vmnet-17-5-1-and-linux-kernel-6-8-0-wont-compile
  5. 针对最新内核构建 VMware(Player 和 Workstation)主机模块所需的补丁:https://github.com/mkubecek/vmware-host-modules
posted @ 2024-08-26 14:12  TICSMC  阅读(1419)  评论(0)    收藏  举报