☰
Ubuntu 24.04 上安装 VMware Workstation 17.5.1 全攻略:内核模块与 Secure Boot 处理
2026/10/26 21:11:08 网站建设 项目流程

1. 为什么要在 Ubuntu 24.04 上折腾 VMware Workstation

1.1 这个组合到底解决什么问题

先把场景说清楚。你手头有一台跑着 Ubuntu 24.04 的物理机或者工作站,可能是开发机、测试机,也可能是家里那台装了双系统的台式机。你需要在这台机器上同时跑几个不同架构、不同发行版、不同配置的虚拟机,用来做环境隔离、软件兼容性验证、系统迁移演练,或者单纯就是想在一个窗口里同时开 Windows 和几个 Linux 发行版干活。这时候你面前通常有三条路:KVM/QEMU 方案、VirtualBox、VMware Workstation。

KVM 性能好、原生集成度高,但命令行门槛不低,图形化管理要靠 virt-manager,网络和共享目录的配置对新手不太友好。VirtualBox 免费开源、上手快,但在高负载场景下磁盘 I/O 和图形性能一直是短板,尤其是跑 Windows 客户机做图形相关工作时体验会明显打折。VMware Workstation 17.5.1 属于商业产品,个人使用有免费授权路径,它的优势在于快照管理成熟、共享文件夹稳定、3D 加速在同类产品里表现靠前,而且跨平台迁移虚拟机的兼容性好。对于需要长期维护多套虚拟机环境的人来说,这套组合的性价比是站得住的。

所以这个标题背后真正要解决的问题是:在一个较新的 Ubuntu LTS 发行版上,把一款商业虚拟机软件完整、稳定地装起来,并且让它和系统的内核模块、图形栈、网络安全策略和平共处。Ubuntu 24.04 换了新的内核版本、默认启用了更严格的 Secure Boot 策略、网络管理从 ifupdown 全面转向 Netplan 加 NetworkManager,这些变化都会直接影响 VMware 的安装和运行。适合阅读这篇内容的人包括:刚升级到 24.04 发现旧版 VMware 装不上的开发者、需要在一台机器上维护多套测试环境的运维人员、以及想搞清楚 Linux 下商业虚拟机软件安装逻辑的技术爱好者。

1.2 版本选择的门道:为什么是 17.5.1

VMware Workstation 的版本号不是随便挑的。17.x 系列对 Linux 内核的支持是逐版本推进的,17.5.1 这个版本对 6.8 系列内核的适配相对完整,而 Ubuntu 24.04 默认搭载的正是 6.8 内核。如果你拿 17.0.x 去装,大概率会在编译 vmmon 和 vmnet 这两个内核模块时卡住,因为旧版本的源码里没有针对新内核 API 的适配代码。

这里有个很多人忽略的点:VMware 的内核模块不是随软件包一起分发的二进制,而是在安装或首次运行时现场编译的。它依赖你当前运行内核的头文件,通过 DKMS 或者安装脚本调用编译工具链生成 .ko 文件。这意味着内核一升级,模块就得重新编译,版本匹配问题会反复出现。17.5.1 在这个环节上做了较多修补,社区反馈的编译失败案例明显少于早期 17.x 版本。

另外要提醒一句,网上流传的一些"一键安装脚本"会顺手帮你打补丁、改源码,这类脚本在 24.04 上不一定还适用,因为内核 API 又变了。我的建议是优先用官方安装包加官方或社区验证过的补丁方案,不要盲目套用旧教程里的脚本。

2. 安装前的环境准备与依赖梳理

2.1 系统状态检查清单

动手之前先花五分钟把系统状态摸清楚,能省掉后面一大半的排查时间。打开终端,逐条确认下面这些信息。

第一,确认发行版和内核版本。执行lsb_release -a看发行版代号是不是 noble,执行uname -r看内核是不是 6.8 开头。这两个信息决定了你后续要用的补丁版本和模块编译参数。

第二,确认 Secure Boot 状态。执行mokutil --sb-state,如果输出 Secure Boot enabled,那你在安装内核模块时会遇到签名验证问题。VMware 的模块默认没有经过系统信任链签名,需要你手动走一遍 MOK 注册流程,或者临时关闭 Secure Boot。这一步是 24.04 上最容易翻车的地方,很多人装完发现虚拟机起不来,报的就是模块加载失败。

第三,确认磁盘空间。VMware Workstation 本体安装大约占 500MB 到 1GB,但你要预留至少 20GB 给虚拟机镜像和快照。用df -h看一下根分区和家目录所在分区的余量,别等到装到一半提示空间不足。

第四,确认图形环境。Workstation 是带图形界面的应用,需要 X11 或 Wayland 会话。24.04 默认是 Wayland,VMware 17.5.1 对 Wayland 的支持是"能用但有小毛病",比如窗口缩放、剪贴板同步偶尔抽风。如果你对图形体验要求高,可以在登录界面切到 Xorg 会话。

第五,确认网络管理方式。执行nmcli general status看 NetworkManager 是否在运行。VMware 安装时会创建 vmnet1 和 vmnet8 两个虚拟网卡,如果 NetworkManager 接管了这些接口,可能会和 VMware 自己的网络服务打架,导致桥接或 NAT 模式异常。

2.2 依赖包一次性装齐

Ubuntu 24.04 的最小安装镜像里缺不少编译和运行依赖,与其装到一半报错再补,不如一次性装齐。下面这条命令覆盖了编译工具链、内核头文件、图形库和网络工具:

sudo apt update sudo apt install -y build-essential linux-headers-$(uname -r) \ gcc make dkms libaio1t64 libglib2.0-0t64 libgtk-3-0t64 \ libncurses6 libnss3 libpango-1.0-0 libpng16-16 libsm6 \ libx11-6 libxext6 libxrender1 libxtst6 net-tools

这里有几个细节值得展开。linux-headers-$(uname -r)必须和当前运行内核严格对应,如果你装的是通用内核但实际启动的是低延迟内核,头文件就对不上,编译必然失败。libaio1t64和libglib2.0-0t64这类带 t64 后缀的包是 24.04 引入的 64 位时间兼容性重命名,老教程里写的libaio1在新系统上会提示找不到包,这是很多人卡住的第一道坎。

dkms的作用是让内核模块在每次内核升级后自动重新编译,省去手动干预。虽然 VMware 官方安装脚本不完全依赖 DKMS,但装上它没坏处,某些补丁方案会用到。

注意:不要用apt install vmware-workstation之类的命令去装仓库里的旧版本,Ubuntu 官方源里的 VMware 包版本往往滞后好几个小版本,对 6.8 内核的支持不完整,装完大概率跑不起来。

2.3 安装包的获取与校验

从官方渠道下载 Workstation 17.5.1 的 Linux 安装包,文件名形如VMware-Workstation-Full-17.5.1-xxxxxxxx.x86_64.bundle。下载完成后务必做一次完整性校验,用官方公布的 SHA256 值比对:

sha256sum VMware-Workstation-Full-17.5.1-*.bundle

校验通过再往下走。安装包是 .bundle 格式,本质是一个自带运行环境的自解压脚本,需要给它可执行权限:

chmod +x VMware-Workstation-Full-17.5.1-*.bundle

这里插一句经验:把安装包放在家目录下的一个临时目录里,不要放在挂载的 NTFS 分区或者网络盘上,因为 .bundle 解压时需要执行权限和符号链接支持,FAT/NTFS 文件系统会出问题。

3. 安装过程的核心环节与内核模块处理

3.1 图形化安装流程拆解

执行安装命令:

sudo ./VMware-Workstation-Full-17.5.1-*.bundle

安装器会先解压再拉起一个图形向导。如果你在纯命令行环境或者 SSH 会话里操作,可以加--console参数走文本模式,但图形模式更直观,建议在本地桌面环境执行。

向导里的几个选项值得说明。安装路径默认是/usr/bin和/usr/lib/vmware,保持默认即可,改路径会导致后续补丁脚本找不到目标文件。是否加入系统 PATH、是否创建桌面快捷方式,按需勾选。到了"是否安装内核模块"这一步,安装器会尝试编译 vmmon 和 vmnet,这一步在 24.04 上大概率会失败,因为官方 17.5.1 的源码对 6.8 内核的部分 API 变更没有完全适配。

失败的表现通常是终端里刷出一堆编译错误,核心报错集中在vmmon目录下的vm_asm.c或vmnet目录下的userif.c,提示某个函数签名不匹配或者某个头文件找不到。这时候不要慌,安装器会问你是否继续,选择继续,先把主程序装完,模块的问题单独处理。

3.2 内核模块编译失败的根因分析

要理解为什么编译失败,得知道这两个模块干什么。vmmon是虚拟机监控器模块,负责 CPU 虚拟化指令的拦截和转发,直接和内核的 KVM 子系统、调度器打交道。vmnet是虚拟网络模块,负责创建虚拟网卡、处理 NAT 和桥接流量,和内核的网络栈深度耦合。6.8 内核在网络子系统和内存管理上做了若干调整,比如某些函数从导出符号列表里移除、结构体成员重命名,旧源码自然编不过。

解决思路有两条。第一条是等官方更新,但 17.5.1 之后的新版本对个人用户授权政策有变化,不是所有人都愿意升级。第二条是打社区补丁,把适配新内核的代码合入源码再编译。社区里流传的补丁通常以 patch 文件形式提供,针对vmmon-only和vmnet-only两个目录分别修改。

具体操作上,先定位模块源码位置。安装完成后源码会被放在/usr/lib/vmware/modules/source/下,里面有vmmon.tar和vmnet.tar两个压缩包。把补丁应用到解压后的源码,再重新打包,然后调用vmware-modconfig --console --install-all触发重新编译。这个流程听起来绕,但它是官方机制允许的标准做法,比直接改二进制安全得多。

提示:打补丁前先备份原始的 tar 包,命令是sudo cp vmmon.tar vmmon.tar.bak,出问题能快速回滚。

3.3 Secure Boot 下的模块签名处理

如果你前面查到 Secure Boot 是开启状态,那么即使模块编译成功,加载时也会被内核拒绝,报错类似module verification failed: signature and/or required key missing。这不是 VMware 的锅,是 Secure Boot 的安全机制在起作用。

处理方式有两种。第一种是临时关闭 Secure Boot,进 BIOS 把安全启动选项关掉,重启后模块就能正常加载。这种方式简单直接,但降低了系统的启动安全级别,适合测试环境,不适合长期使用。

第二种是走 MOK 注册流程,给模块签名。步骤是:先用 openssl 生成一对密钥,用sign-file工具给编译好的 .ko 文件签名,再用mokutil --import把公钥导入 MOK 列表,重启时在蓝色的 MOK 管理界面里确认导入。这套流程稍微繁琐,但一次配置好之后,后续内核升级重新编译的模块也能复用同一套密钥签名,长期看更省事。

签名命令的核心参数是密钥路径和模块路径,形如:

sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file \ sha256 mok.key mok.crt /lib/modules/$(uname -r)/misc/vmmon.ko

vmnet.ko同理。签完用modinfo vmmon | grep signer确认签名信息已经写入。

3.4 首次启动的配置向导

模块搞定之后,从应用菜单启动 VMware Workstation。首次启动会弹许可协议,接受后进入主界面。这时候建议先做三件事:检查虚拟网络编辑器、确认共享文件夹服务、测试一台最小虚拟机。

虚拟网络编辑器在"编辑"菜单下,打开后看 vmnet0(桥接)、vmnet1(仅主机)、vmnet8(NAT)三个网络是否正常生成。如果提示需要 root 权限,输入密码即可。有时候 vmnet8 的 NAT 服务没起来,表现是虚拟机拿不到 IP,这时候在编辑器里点"还原默认设置"能解决大部分问题。

共享文件夹依赖vmhgfs模块,这个模块在 17.5.1 里通常能正常编译,但如果你的客户机是较新的 Linux 发行版,可能需要额外装 open-vm-tools。宿主机这边只要在虚拟机设置里启用共享文件夹并指定路径就行。

测试虚拟机建议用一个小体积的 Linux Live 镜像,分配 1GB 内存、单核、20GB 磁盘,启动看能不能进桌面、网络通不通、快照能不能打。这一套走通,说明整个安装链路是健康的。

4. 常见故障排查与实操避坑指南

4.1 典型问题速查表

下面这张表是我在实际操作中反复遇到、也帮别人排查过的问题汇总,按现象归类,方便对照。

现象可能原因排查与解决
安装时模块编译报错内核版本与源码不匹配应用对应内核版本的社区补丁后重新编译
启动虚拟机提示模块加载失败Secure Boot 拦截未签名模块关闭 Secure Boot 或走 MOK 签名流程
虚拟机无法联网vmnet8 NAT 服务未启动虚拟网络编辑器里还原默认设置
共享文件夹在客户机看不到客户机缺 open-vm-tools客户机内安装 open-vm-tools 和 desktop 包
界面缩放异常、字体模糊Wayland 会话兼容性问题登录时切换到 Xorg 会话
内核升级后虚拟机起不来模块未随新内核重编译手动执行 vmware-modconfig 重新编译
桥接模式拿不到 IPNetworkManager 接管了 vmnet 接口将 vmnet 接口设为 unmanaged
安装器卡在解压阶段安装包放在不支持执行权限的分区移到 ext4 家目录重新执行

4.2 内核升级后的模块重编译

这是长期使用中最频繁遇到的问题。Ubuntu 24.04 的内核更新比较勤,每次更新后重启,VMware 的模块就可能失效。表现是启动虚拟机时报Could not open /dev/vmmon或者VMware Kernel Module Updater弹窗。

标准处理流程是:先确认新内核的头文件已安装,执行sudo apt install linux-headers-$(uname -r),然后运行sudo vmware-modconfig --console --install-all。如果编译成功,模块会自动加载。如果失败,说明新内核又引入了不兼容变更,需要找对应版本的补丁。

有个省事的做法是装一个 systemd 服务或者用 DKMS 托管,让内核升级时自动触发重编译。不过 VMware 官方安装脚本不注册 DKMS 配置,需要手动写一个 dkms.conf,把 vmmon 和 vmnet 的源码路径、模块名、版本号填进去。这个方案适合有一定动手能力的人,配置一次能省很多事。

注意:不要在模块编译失败的情况下强行启动虚拟机,反复失败可能导致/dev/vmmon设备节点状态异常,必要时重启系统清理。

4.3 网络模式的取舍经验

VMware 提供桥接、NAT、仅主机三种主要网络模式,选哪种取决于你的使用场景。桥接模式下虚拟机和宿主机在同一网段,局域网内其他设备能直接访问虚拟机,适合做服务测试。但桥接依赖宿主机的物理网卡,如果宿主机用的是无线网卡,桥接偶尔会不稳定,尤其是网卡驱动对混杂模式支持不好的时候。

NAT 模式最省心,虚拟机通过宿主机做地址转换访问外网,不需要局域网其他设备访问虚拟机的场景优先选它。缺点是外部主动连接虚拟机需要配端口转发,稍微麻烦一点。

仅主机模式完全隔离,适合做安全测试或者纯本地环境验证。三种模式可以在虚拟机设置里随时切换,但切换后客户机的网络配置可能需要重新获取地址。

我个人的习惯是:日常开发用 NAT,需要模拟真实网络拓扑时用桥接,做破坏性测试时用仅主机。这个组合覆盖了绝大多数需求。

4.4 快照管理的实操心得

快照是 VMware 相对其他方案的一大优势,但用不好也会踩坑。快照的本质是记录磁盘状态差异,快照链越长,磁盘 I/O 性能下降越明显,恢复速度也越慢。我的经验是单个虚拟机的快照链不要超过三层,做完阶段性验证就合并掉旧快照。

另一个坑是快照和共享文件夹的交互。如果虚拟机挂了共享文件夹,打快照时共享目录里的内容不会被记录,恢复快照后共享目录还是当前状态,容易造成数据不一致的错觉。重要数据要么放在虚拟磁盘里,要么在打快照前手动备份。

还有一点,快照文件默认和虚拟磁盘放在同一目录,如果磁盘空间紧张,可以把快照重定向到另一个分区,在虚拟机设置的选项里能改。这个细节很少有人提,但磁盘告警的时候能救急。

4.5 图形性能与 3D 加速的取舍

Workstation 17.5.1 支持给客户机开 3D 加速,但这项功能在 Linux 宿主机上的表现取决于显卡驱动。如果你用的是开源驱动(比如 Intel 核显或 AMD 的 amdgpu),3D 加速基本可用,跑一些轻量图形应用没问题。如果是 NVIDIA 独显加闭源驱动,兼容性反而可能出问题,表现是客户机花屏或者直接崩溃。

排查思路是先关掉 3D 加速,确认虚拟机基础功能正常,再逐项打开测试。客户机里也要装对应的显卡驱动,Windows 客户机装 VMware Tools 自带的 SVGA 驱动,Linux 客户机装 open-vm-tools 加 mesa 相关包。

对于纯命令行或者轻量桌面用途,关掉 3D 加速反而更稳,省下的显存和 CPU 开销可以留给其他虚拟机。这个取舍没有标准答案,看你的实际负载。

5. 安装完成后的收尾与长期维护建议

5.1 系统集成项的逐项确认

装完不等于配好,还有几项系统集成需要确认。第一是文件关联,双击 .vmx 文件能不能直接拉起 Workstation,这个在安装时勾选了就行,没勾选可以手动在文件管理器里设置默认程序。第二是命令行工具,vmrun和vmware这两个命令是否在 PATH 里,vmrun用来做脚本化的虚拟机启停和快照管理,批量操作时很有用。

第三是日志位置,出问题时日志是第一手资料。Workstation 的日志在~/.vmware/和/var/log/vmware/下,虚拟机自身的日志在虚拟机目录的.log文件里。养成出问题先看日志的习惯,比盲目搜索效率高得多。

第四是卸载方式。万一哪天要重装或者换方案,用sudo vmware-installer -u vmware-workstation走标准卸载流程,不要手动删目录,残留的模块和配置文件会干扰后续安装。

5.2 备份与迁移的注意事项

虚拟机用久了,迁移和备份是绕不开的话题。Workstation 的虚拟机本质是一组文件:.vmx 配置文件、.vmdk 磁盘文件、.nvram 固件状态、快照文件。迁移时把这组文件整体拷走,在新机器上用 Workstation 打开 .vmx 即可。但要注意两点:一是硬件版本兼容性,高版本 Workstation 创建的虚拟机在低版本上可能打不开,迁移前确认目标机器的软件版本;二是绝对路径,.vmx 里如果写了共享文件夹的绝对路径,换机器后要手动改。

备份策略上,我习惯用"关机后整目录打包"的方式做冷备份,配合快照做热备份。冷备份体积大但恢复简单,快照恢复快但依赖快照链完整。两者结合,重要环境双保险。

5.3 资源分配的平衡术

一台物理机上跑多台虚拟机,资源分配要有全局观。CPU 核心数不要把所有物理核心都分给虚拟机,宿主机本身要留至少两个核心处理系统任务和 VMware 自身的开销。内存同理,宿主机留 4GB 到 8GB 余量,剩下的再分给虚拟机。磁盘 I/O 是最容易被忽视的瓶颈,多台虚拟机同时做大量读写时,机械硬盘会明显拖后腿,条件允许的话把虚拟机放在 SSD 上。

还有个小技巧:给虚拟机分配内存时优先用"预留全部内存"选项,避免宿主机内存紧张时虚拟机被换页到磁盘,性能断崖式下跌。代价是宿主机可用内存减少,这个取舍要根据实际负载来定。

5.4 我踩过的几个坑

说几个只有实际装过才会知道的细节。第一个坑是安装包下载后直接双击运行,结果因为文件在下载目录里没有执行权限,提示"权限不足",其实加个 chmod 就好,但第一次遇到容易懵。第二个坑是装完发现系统托盘里没有 VMware 图标,以为没装好,其实是 GNOME 的扩展没加载,注销重登就出来了。

第三个坑最隐蔽:某次内核升级后模块编译一直失败,查了半天发现是之前手动改过源码目录里的文件,补丁打重复了导致冲突。从那以后我养成了每次打补丁前先git diff或者对比原始 tar 包的习惯,确认源码是干净状态再动手。

第四个坑和网络有关。有次桥接模式下虚拟机死活拿不到 IP,排查半天发现宿主机的防火墙规则把 vmnet0 的流量拦了。Ubuntu 24.04 默认的 ufw 策略比较严格,需要放行虚拟网段的流量,或者干脆在测试环境临时关掉防火墙验证。

这些坑单看都不复杂,但组合在一起就是几个小时的排查时间。写出来是希望后来的人能少走点弯路。装虚拟机软件这件事,本质上是在和内核、安全策略、网络栈三方打交道,任何一方不配合都会卡住,所以每一步都留个心眼,比事后救火划算得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询