场景
在Ubuntu 20
操作系统上面装置Vmware
执行开始运行,启动虚拟机发现报错
相似于上面这样的
Could not open /dev/vmmon: ?????????.Please make sure that the kernel module `vmmon' is loaded.
手动启动Vmware
模块,发现有两个模块启动失败
$ sudo /etc/init.d/vmware startStarting VMware services: Virtual machine monitor failed Virtual machine communication interface done VM communication interface socket family done Virtual ethernet failed VMware Authentication Daemon done
执行命令装置缺失的模块
$ sudo vmware-modconfig --console --install-all# 发现输入当中蕴含错误信息如下/tmp/modconfig-DPn7nL/vmmon-only/./include/vm_asm_x86.h:67:44: error: expression in static assertion is not constant 67 | ASSERT_ON_COMPILE(sizeof(Selector) == 2 && \ | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 | ((__builtin_constant_p(expr) && ((expr) >> 16) == 0) || \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 69 | sizeof(expr) <= 2)) | ~~~~~~~~~~~~~~~~~~ .....Unable to install all modules. See log for details.
解决方案
查看VMware
版本
通过安装包信息查看
在Ubuntu
零碎上面获取安装包的时候会下载一个*.bundle
文件,该文件的文件名称就蕴含了版本信息,比方VMware-Workstation-Full-16.2.3-19376536.x86_64.bundle
的版本就是16.2.3
如果Vmware
还能失常关上,能够查看Help
上面的About
信息查看
装置缺失模块
须要手动去编译缺失的vmmon
和vmnet
模块
依赖一个git
开源仓库,获取仓库
$ git clone https://github.com/mkubecek/vmware-host-modules
查看分支信息
$ cd vmware-host-modules$ git branch -a remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/player remotes/origin/player-12.5.2 ...... remotes/origin/player-15.5.6 remotes/origin/player-15.5.7 remotes/origin/workstation-14.1.3 remotes/origin/workstation-14.1.4 ...... remotes/origin/workstation-16.2.1 remotes/origin/workstation-16.2.3
根据之前获取的Vmware
版本信息指定分支,以workstation-*
和player-*
指定workstation
和player版本
$ git checkout workstation-16.2.3
开始编译和装置
$ sudo make$ sudo make install
查看本机内核版本
$ cat /proc/versionLinux version 5.15.0-43-generic (buildd@lcy02-amd64-026) (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #46~20.04.1-Ubuntu SMP Thu Jul 14 15:20:17 UTC 2022# 或者$ uname -r5.15.0-43-generic
能够晓得目前内核版本是5.15.0-43-generic
所以执行实现之后生成的模块会装置到/lib/modules/5.15.0-43-generic/misc
$ ll /lib/modules/5.15.0-43-generic/misc总用量 252K-rwxr-xr-x 1 root root 157K 八月 4 10:05 vmmon.ko-rwxr-xr-x 1 root root 92K 八月 4 10:05 vmnet.ko
最初从新加载所有vmware
模块服务
$ sudo /etc/init.d/vmware startStarting VMware services: Virtual machine monitor done Virtual machine communication interface done VM communication interface socket family done Virtual ethernet done VMware Authentication Daemon done Shared Memory Available done
内核版本升级导致的问题
当编译vmmon
和vmnet
模块装置之后,前面如果有内核版本升级的话须要从新编译装置
之前的内核版本是5.15.0-41-generic
,起初apt upgrade
降级了一下发现VMware
又不行了才发现有这个问题
执行重新安装发现报错
$ sudo make install Version mismatch: module vmmon-only/vmmon.ko 5.15.0-41-generic, kernel 5.15.0-43-genericVersion mismatch: module vmnet-only/vmnet.ko 5.15.0-41-generic, kernel 5.15.0-43-genericmake: *** [Makefile:35:install] 谬误 1
所以须要删除之前编译好的文件,从新开始编译和装置
$ sudo make clean$ sudo make $ sudo make install
参考浏览
vmware
模块报错讨论区