环境信息
| 项目 | 版本 |
|---|---|
| 操作系统 | Ubuntu 24.04.3 LTS (Noble Numbat) |
| 内核版本 | 6.17.0-29-generic |
| VMware Workstation | 26.0.0 (Build 25388281) |
| CPU | 13th Gen Intel Core i7-1360P |
| Secure Boot | 已启用 |
问题现象
-
安装完成后首次启动 ,弹出 "VMware Kernel Module Updater" 窗口,提示 GCC 13.3.0 未找到
-
安装 GCC 和内核头文件后,模块编译仍失败,日志显示:
No matching PBM set was found for kernel "6.17.0-29-generic" Virtual machine monitor failed Virtual ethernet failed -
根本原因:VMware 26.0.0 原生不支持 Linux 6.17 内核,需要打兼容性补丁
解决步骤
1. 安装基础依赖
bash
sudo apt update
sudo apt install -y gcc-13 g++-13 build-essential \
linux-headers-$(uname -r) git dkms
2. 下载自动补丁工具
bash
cd ~/下载
git clone https://github.com/Hyphaed/vmware-vmmon-vmnet-linux-6.17.x.git vmware-patcher
cd vmware-patcher
3. 运行自动补丁脚本
bash
sudo python3 vmware_module_builder.py
- 选择编译模式:2) Optimized(针对 CPU 优化)
- 脚本自动完成:
- 备份原始 VMware 源码
- 应用 6.17 内核兼容性补丁(objtool、netif_napi_add、do_gettimeofday 等)
- 编译
vmmon和vmnet模块 - 安装模块并创建开机自启服务
4. 处理 Secure Boot 模块签名
由于 Secure Boot 已启用,编译后的未签名模块被拒绝加载:
modprobe: ERROR: could not insert 'vmmon': Key was rejected by service
4.1 创建 MOK 密钥
bash
# 创建密钥对
sudo mkdir -p /var/lib/shim-signed/mok
cd /var/lib/shim-signed/mok
sudo openssl req -new -x509 -newkey rsa:2048 \
-keyout MOK.priv -outform DER -out MOK.der \
-days 36500 -nodes \
-subj "/CN=VMware Module Signing Key/"
# 导入 Secure Boot(设置密码后重启注册)
sudo mokutil --import MOK.der
sudo reboot
重启后在蓝色 MOK 界面:Enroll MOK → Continue → Yes → 输入密码 → Reboot
4.2 签名模块
bash
sudo /usr/src/linux-headers-6.17.0-29-generic/scripts/sign-file sha256 \
/var/lib/shim-signed/mok/MOK.priv \
/var/lib/shim-signed/mok/MOK.der \
/lib/modules/6.17.0-29-generic/misc/vmmon.ko
sudo /usr/src/linux-headers-6.17.0-29-generic/scripts/sign-file sha256 \
/var/lib/shim-signed/mok/MOK.priv \
/var/lib/shim-signed/mok/MOK.der \
/lib/modules/6.17.0-29-generic/misc/vmnet.ko
5. 启动服务
bash
sudo modprobe vmmon
sudo modprobe vmnet
sudo systemctl restart vmware.service
验证结果
bash
$ lsmod | grep -E "vmmon|vmnet|vmw_vmci"
vmnet 77824 13
vmmon 188416 0
vmw_vmci 106496 1 vmw_vsock_vmci_transport
bash
$ sudo systemctl status vmware.service
● vmware.service - VMware Workstation Services
Active: active (running)
VMware Workstation 正常运行,虚拟机可以启动。
后续维护
| 场景 | 操作 |
|---|---|
| 内核/VMware 更新后模块失效 | 重新运行补丁脚本 + 用已有 MOK 密钥重新签名 |
| 不想每次签名 | 进 BIOS 禁用 Secure Boot |
| 模块已签名 + MOK 已注册 | 重启后自动加载,无需额外操作 |
关键要点
| 要点 | 说明 |
|---|---|
| GCC 只是第一步 | 安装 GCC 后,VMware 26.0.0 对 6.17 内核的原生不支持才是核心问题 |
| 社区补丁工具很关键 | vmware_module_builder.py 自动处理了所有 6.17 兼容性补丁 |
| Secure Boot 是最后障碍 | 模块编译成功后,签名是加载的必要条件 |
| MOK 注册只需一次 | 密钥注册到 Secure Boot 后,后续只需重新签名模块,无需重复注册 |