YM886
首页最新关于联系
首页开发工具Ubuntu 24.04 安装 VMware Workstation Pro 17.6.4 并适配 Linux 7.0 内核

Ubuntu 24.04 安装 VMware Workstation Pro 17.6.4 并适配 Linux 7.0 内核

涂
涂山墨墨
•更新时间 2026年10月17日阅读 0
Ubuntu 24.04 安装 VMware Workstation Pro 17.6.4 并适配 Linux 7.0 内核

一、背景

把笔记本的系统从windows11切换到了Ubuntu24,但是又有些软件只提供windows系统的版本,不得已只能寻找虚拟机方案来运行这类应用程序。

要是在以往,我是不敢贸然从windows系统切换到Ubuntu系统的,只是恰好现在AI发展的比较智能了、我也恰好比较空闲。想着有问题就请教请教以下各大AI嘛,实在是缺什么功能还能让AI来写一个,就大胆的去做系统的切换了。

官网下载这个 VMware 安装也挺麻烦的,应该很多友友找不到下载的地方,有机会再写一篇文章说说怎么找到下载的页面。

我的系统环境:

  • 操作系统:Ubuntu 24.04 LTS

  • 桌面环境:GNOME + Wayland

  • CPU:AMD Ryzen™ AI 9 H 365 w/ Radeon™ 880M × 20

  • 当前内核:7.0.0-28-generic

  • VMware版本:Mware Workstation 17.6.4 build-24832109

  • 官网下载得到的文件:VMware-Workstation-Full-17.6.4-24832109.x86_64.bundle


二、遇到的问题

bundle 安装程序启动后,成功生成安装图标。点击 VMware 安装程序后报错。

截图发给AI后,AI已经推测出可能是我的 7.0.0-28-generic 内核版本的问题,说 Ubuntu 24 通常是 6.8.0-28-generic 这个内核版本,可能是软件还没有对较新的内核版本进行适配 。

其实AI这里的判断已经完全正确了。

我使用的是清华大学镜像站下载的 Ubuntu 24 安装镜像装的系统,装好就是这个内核版本。

于是AI推荐我使用命令行的方式执行安装,这样能方便看报错信息分析问题:

# 确认内核版本
uname -r
# 安装编译环境和内核头文件
sudo apt install build-essential linux-headers-$(uname -r)
# 编译 VMware 模块
sudo vmware-modconfig --console --install-all

编译 VMware 模块时,出现一长串的错误信息,里面主要的错误是:

fatal error: driver-config.h: 没有那个文件或目录
fatal error: vm_basic_types.h: 没有那个文件或目录 
fatal error: includeCheck.h: 没有那个文件或目录

三、问题分析

VMware Linux 版依赖两个核心内核模块:

下载的 bundle 文件里,执行后释放出来的安装程序是包含有源码的,错误是编译源码时出的。

释放出来的源码在这个位置:

/usr/lib/vmware/modules/source/

包含 vmmon.tar 和 vmnet.tar 这两个源码包。

难道官方安装包自带的源码就是齐全不完整的吗?通过 tar tf 命令看以下这个 vmmon.tar 源码包里都有些什么。

可以发现,在这一长串的文件清单里,是有 vmmon-only/include/driver-config.h 这么个文件的。这个安装编译是报错,报找不到的文件,明明是存在的。


四、尝试过程

尝试从官方 Github 源码编译

拉取官方github仓库的源码看看:

发现官方仓库里的版本只到 17.5.1 的 VMware ,后续版本的没能找到源码。

于是放弃直接从官方github仓库的源码进行编译。

尝试降低 VMware 版本

既然官方仓库的源码是 17.5.1 的,那么我改用这个版本的不就行了吗?当时我是这么想的,于是我和AI提出切换到安装 17.5.1 版本,毕竟这个版本官方github有源码。

这时候还以为是源码的缺失,没有认定是内核版本差异问题。

但是官网的下载列表,最低也只提供到 17.5.2 版本的安装包下载。这又把我卡住了,一通搜索后,发现原来是因为从 VMware Workstation Pro 17.5.2 这个版本后才开始对个人用户免费的。

估计也是这个原因官网才没有提供 17.5.2 之前版本的下载吧。

于是放弃 VMware 版本的降级。

尝试切换 Ubuntu 内核

既然 Ubuntu 官方内核版本是 6.8.0-136-generic ,而 VMware 也是针对这个内核版本进行开发测试的,那么我把电脑上的系统内核切换成 6.8.0-136-generic 岂不是万事大吉了?

使用命令安装完整通用内核包

sudo apt install linux-generic

然后重启电脑,在开机时的 GRUB 界面,选择 Advanced options for Ubuntu ,然后选择 Ubuntu, with Linux 6.8.0-136-generic 以 6.8.0 内核版本来启动系统。

结果:

好家伙,直接给我卡在开机界面了,进不去系统了。还好原本的 7.0 内核没有删除,我强制关机再开机把就能使用回 7.0 内核版本了。

与AI讨论一通,判断是我的CPU太新了,AMD Ryzen™ AI 9 H 365 。这个 6.8 的内核还没做这款 CPU 的支持,需要 7.0 的内核才能支持到我的CPU。

于是放弃 Ubuntu 内核版本的降级。


五、最终解决方案

和AI来来回回的讨论和尝试后,还是觉得应当相信官方安装包提供的源码。

决定直接把源码包里的文件解压出来看看,看看是怎么个回事。

最终,也是靠官方安装包里的源码解决了安装问题。

解包 VMware 官方源码

创建并前往临时目录:

mkdir /tmp/test-vmmon
cd /tmp/test-vmmon

把两个源码包解压到这个临时目录:

tar xf /usr/lib/vmware/modules/source/vmmon.tar
tar xf /usr/lib/vmware/modules/source/vmnet.tar

修改 Makefile.kernel

文件:vmmon-only/Makefile.kernel

由于 Linux 7.0 新的 Kbuild 已经逐渐淘汰 EXTRA_CFLAGS 这种方式,所以将其修改掉。

# 旧的方式
EXTRA_CFLAGS := ...
# 新的方式
ccflags-y := ...

修改 driver.c

修改 Makefile.kernel 后编译后出现新的错误信息:

implicit declaration of function ‘del_timer_sync’

这是因为 Linux 7.0 不再自动包含 timer 定义。

打开文件:vmmon-only/linux/driver.c,增加一个头文件 \ 的引入。

修改前:

#include 
#include 
#include 

修改后:

#include 
#include 
#include 
#include 

添加正确的头文件后,仍然报错:implicit declaration of function ‘del_timer_sync’

这是因为 Linux 7.0 已经删除了 del_timer_sync 这个 API。

继续修改这个 driver.c 文件。

# 旧的 API
del_timer_sync(&tscTimer);
# 替换成新的 API
timer_delete_sync(&tscTimer);

修改 hostif.c

del_timer_sync 这个函数还有一个地方使用到, 就是同目录下的 hostif.c 文件,把里面的 del_timer_sync 也替换成新的 timer_delete_sync 。

这个 hostif.c 还有一处 API 的变更问题,就是 rdmsrl_safe 这个函数,这个在 7.0 也被改名了。

# 旧的 API
del_timer_sync(&tscTimer);
rdmsrl_safe(msr, &v);
# 替换成新的 API
rdmsrq_safe(msr, &v);
timer_delete_sync(&tscTimer);

重新编译模块

编译 vmmon

进入:

cd vmmon-only

执行:

make

成功:

LD [M] vmmon.ko
cp -f vmmon.ko ../vmmon.o

编译 vmnet

进入:

cd vmnet-only

执行:

make

成功:

LD [M] vmnet.ko
cp -f vmnet.ko ../vmnet.o

替换 VMware 自带源码包

稳健一手,先对原本的代码进行备份:

sudo cp /usr/lib/vmware/modules/source/vmmon.tar ~/vmmon.tar.backup
sudo cp /usr/lib/vmware/modules/source/vmnet.tar ~/vmnet.tar.backup

然后回到我们创建的临时目录进行打包:

cd /tmp/test-vmmon
sudo tar cf /usr/lib/vmware/modules/source/vmmon.tar vmmon-only
sudo tar cf /usr/lib/vmware/modules/source/vmnet.tar vmnet-only

此时,已经用我们修改后的源码包替换掉了原本的,我们可以执行编译安装指令:

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

看到信息里面是这样的:

Stopping VMware services:
   VMware Authentication Daemon done
   Virtual machine monitor done

Building module:
...
Using kernel build system
...

就是安装成功了。

从系统的应用列表里也能看到多了三个图标。

验证

执行指令:

lsmod | grep vm

看到输出信息:

vmnet
vmmon
vmw_vsock_vmci_transport
vmw_vmci

这样就是完成了,VMware 核心模块加载成功、网络模块正常、虚拟机可以启动。

六、最终结论

Ubuntu 24.04 + Linux 7.0 + VMware Workstation Pro 17.6.4 完全可用。

这次折腾实际上完成了一次 VMware Linux 内核模块移植适配。

如果是在windows下的话,我会选择使用最新版本的软件。

这个习惯在 Ubuntu 下其实是不适应的,因为新的意味着这适配还没有完善,意味着更多的问题。

我会调整自己的使用习惯,从使用较新版本改为使用较稳定版本。

无

你可能也喜欢

无

YM886

© 2026 ym886.com. Built for ACG creators, curators, and explorers.

友情链接:涂山墨墨
Twitter / X