cd /root # 或你存放bundle的目录
chmod +x VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle
sudo ./VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle --console --required --eulas-agreed
参数说明:
-
--console:纯文本模式安装(服务器必用) -
--required:只回答必要问题 -
--eulas-agreed:自动同意许可协议
2.2 安装过程交互
安装过程中命令行会提示几个问题:
| 提示 | 推荐回答 |
|---|---|
Do you agree? [yes/no]: |
输入 yes |
Would you like to check for product updates on startup? [yes]: |
输入 no(离线环境) |
Join the VMware Customer Experience Improvement Program? [yes]: |
输入 no |
Enter license key (optional): |
直接按回车(试用30天) |
之后安装程序会自动解压并复制文件,看到 Installation was successful 即表示安装完成。
⚙️ 第三步:安装后配置
3.1 编译内核模块
bash
# 自动编译
vmware-modconfig --console --install-all
# 验证模块是否存在
lsmod | grep vm
如果提示vmmon或vmnet加载失败,可以手动编译:
bash
cd /usr/lib/vmware/modules/source
tar -xf vmmon.tar && tar -xf vmnet.tar
cd vmmon-only && make && cp vmmon.ko /lib/modules/$(uname -r)/misc/
cd ../vmnet-only && make && cp vmnet.ko /lib/modules/$(uname -r)/misc/
depmod -a
modprobe vmmon vmnet
3.2 启动VMware服务
bash
systemctl restart vmware
systemctl status vmware # 应显示 active (running)
✅ 第四步:验证安装
bash
# 运行VMware(如果有图形界面)
vmware
# 或查看版本
vmware -v
预期输出 :VMware Workstation 17.5.2 build-23775571
🚨 离线安装常见错误及解决
| 错误 | 原因 | 解决方法 |
|---|---|---|
Kernel headers not found |
缺少linux-headers | 从ISO或同版本机器安装kernel-devel包 |
gcc: command not found |
缺少编译器 | 安装gcc、make包 |
Operation not permitted |
Kysec拦截 | 执行setstatus softmode -p |
bundle: cannot execute binary file |
bundle损坏或架构不对 | 重新下载,检查file命令输出 |
vmmon.ko: invalid module format |
内核版本不匹配 | 升级VMware版本或降级内核头文件 |
📌 成功标志
-
✅
vmware -v显示版本号 -
✅
systemctl status vmware显示active (running) -
✅
lsmod | grep vm能看到vmmon和vmnet
如果以上都正常,说明离线安装成功。遇到任何报错,请把完整的终端输出发给我,我帮你精准定位问题。
getstatus | grep kysec_status 没有任何输出
好的,getstatus | grep kysec_status 没有输出,说明这个系统里 getstatus 命令的输出格式可能不同,或者 Kysec 的状态信息不在那一行。
我们换几种方式来确认一下。
🔍 确认当前 Kysec 状态
方法一:直接运行 getstatus(不加 grep)
bash
getstatus
这会显示完整的 Kysec 状态,你之前截图里那种 kysec_status=0 的格式应该会出现。请把输出发给我看看。
方法二:查看 Kysec 内核参数
bash
cat /proc/sys/kernel/kysec/enforce
输出含义:
-
0= Kysec 关闭 -
1= Kysec 开启(强制模式) -
2= Kysec 开启(警告模式,只告警不拦截)
方法三:查看 Kysec 配置文件
bash
cat /etc/sysconfig/kysec | grep -i mode
方法四:检查麒麟安全服务状态
bash
systemctl status kysec
📌 根据你的情况判断
从你之前的截图来看,kysec_status=0 和 selinux=0 都显示是关闭状态。如果你现在不确定,可以执行上面任意一个命令确认。
如果 Kysec 确实是关闭的 (kysec_status=0 或 /proc/.../enforce 为 0),那么之前 virt-manager 报 Operation not permitted 的问题就不是 Kysec 导致的,可能是其他原因(比如文件权限、SELinux 或者系统文件损坏)。
如果 Kysec 是开启的,安装 VMware 之前需要先关闭:
bash
echo 0 > /proc/sys/kernel/kysec/enforce
✅ 建议的操作顺序
-
运行
getstatus或cat /proc/sys/kernel/kysec/enforce确认状态。 -
把输出结果发给我,我帮你判断是否需要关闭 Kysec。
-
确认后,再开始 VMware 的离线安装。
请把命令的输出贴出来,我们继续推进。
kylin-v10-sp3_x86 系统桌面离线如何安装VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle
好,在麒麟 V10 SP3 桌面版(x86_64)离线环境下安装 VMware Workstation,相比服务器版会简单一些,因为桌面版通常自带图形界面,可以用图形化安装向导。
但离线环境下,最大的挑战依然是依赖包和内核头文件。下面是完整步骤:
📦 第一步:离线安装前的准备工作
1.1 确认系统信息
bash
uname -m # 必须是 x86_64
uname -r # 记录内核版本,例如 5.4.18-53.ky10.x86_64
cat /etc/os-release # 确认是麒麟 V10 SP3
1.2 准备依赖包(需要在有网络的机器上提前下载)
在另一台同版本麒麟 V10 SP3(x86_64)且有网络的机器上执行:
bash
# 创建工作目录
mkdir -p /tmp/vmware-offline-deps
cd /tmp/vmware-offline-deps
# 下载所有需要的依赖包(含子依赖)
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances build-essential | grep "^\w" | sort -u)
# 下载内核头文件(必须与离线机器内核版本完全一致)
# 假设离线机器内核是 5.4.18-53.ky10.x86_64,则执行:
apt-get download linux-headers-5.4.18-53.ky10.x86_64
# 下载其他必要依赖
apt-get download libelf-dev dpkg-dev
将 /tmp/vmware-offline-deps 目录下所有的 .deb 文件拷贝到 U 盘。
1.3 在离线机器上安装依赖
bash
# 挂载U盘并复制文件
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb # 根据实际设备名调整
cp -r /mnt/usb/vmware-offline-deps /root/
# 安装所有依赖
cd /root/vmware-offline-deps
dpkg -i *.deb 2>/dev/null
# 如果报依赖顺序错误,执行:
apt-get install -f -y --no-download --ignore-missing
🖥️ 第二步:关闭麒麟安全机制(Kysec)
桌面版麒麟默认开启 Kysec,会拦截未授权程序运行,必须先关闭:
bash
# 临时关闭(重启后恢复)
setstatus softmode -p
# 验证
cat /proc/sys/kernel/kysec/enforce
# 输出 0 表示已关闭
🚀 第三步:安装 VMware Workstation
方案一:图形界面安装(推荐,最直观)
bash
cd /root # 或你存放 bundle 的目录
chmod +x VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle
sudo ./VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle
此时会弹出图形安装向导:
-
Welcome → 点击
Next -
License Agreement → 勾选
I accept...,点击Next -
Install Path → 保持默认
/usr/bin/vmware,点击Next -
Product License Key → 输入密钥或勾选
Try VMware Workstation for 30 days,点击Next -
点击
Install,等待进度条完成 -
点击
Finish完成
方案二:命令行安装(无图形界面时使用)
bash
sudo ./VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle --console --required --eulas-agreed
交互提问时:
| 提示 | 回答 |
|---|---|
Do you agree? [yes/no]: |
yes |
Check for updates? [yes]: |
no |
Join CEIP? [yes]: |
no |
Enter license key: |
直接回车 |
⚙️ 第四步:安装后配置
4.1 编译内核模块
bash
# 自动编译
sudo vmware-modconfig --console --install-all
# 如果自动编译失败,尝试手动编译
cd /usr/lib/vmware/modules/source
tar -xf vmmon.tar
tar -xf vmnet.tar
cd vmmon-only && make && sudo make install
cd ../vmnet-only && make && sudo make install
depmod -a
modprobe vmmon vmnet
4.2 启动服务
bash
sudo systemctl restart vmware
sudo systemctl status vmware # 应显示 active (running)
✅ 第五步:验证安装
bash
# 打开 VMware Workstation 图形界面
vmware
如果能成功打开主界面,说明安装成功。
🚨 离线安装常见问题
| 问题 | 原因 | 解决方法 |
|---|---|---|
./bundle: cannot execute binary file |
bundle损坏或架构不对 | 检查file命令输出,确认是x86_64 |
Operation not permitted |
Kysec拦截 | setstatus softmode -p |
Kernel headers not found |
头文件版本不匹配 | 精确匹配内核版本,uname -r查看 |
vmware-modconfig: command not found |
VMware未安装成功 | 检查/var/log/vmware-installer.log |
vmware: command not found |
环境变量未刷新 | hash -r 或重新打开终端 |
📌 成功标志
-
✅
vmware -v显示VMware Workstation 17.5.2 build-23775571 -
✅
systemctl status vmware显示active (running) -
✅
lsmod | grep vm能看到vmmon和vmnet
如果安装过程中遇到任何错误,请把完整的报错信息贴出来,我帮你精准排查。
本回答由 AI 生成,内容仅供参考,请仔细甄别。
/tmp/modconfig-ejrPF9/vmnet-only/userif.c: 在函数'VNetCsumCopyDatagram'中: 执行 vmware-modconfig --console --install-all 直接报错/tmp/modconfig-ejrPF9/vmnet-only/userif.c:87:39: 错误:'skb_frag_t {或称 const struct bio_vec}' has no member named 'page_offset'; did you mean 'bv_offset'? # define skb_frag_off(frag) (frag)->page_offset ^ /tmp/modconfig-ejrPF9/vmnet-only/userif.c:622:50: 附注:in expansion of macro 'skb_frag_off' tmpCsum = VNetCsumAndCopyToUser(vaddr + skb_frag_off(frag), ^~~~~~~~~~~~ make2: *** scripts/Makefile.build:303:/tmp/modconfig-ejrPF9/vmnet-only/userif.o 错误 1 make2: *** 正在等待未完成的任务.... make1: *** Makefile:1667:_module_/tmp/modconfig-ejrPF9/vmnet-only 错误 2 make1: 离开目录"/usr/src/kernels/4.19.90-89.11.v2401.ky10.x86_64" make: *** Makefile:117:vmnet.ko 错误 2 make: 离开目录"/tmp/modconfig-ejrPF9/vmnet-only" Unable to install all modules. See log for details.
这个报错非常典型,是 VMware 17.5.2 与 Linux 内核 4.19.x 的 API 不兼容导致的。
具体来说,Linux 内核在 4.19 版本中对 skb_frag_t 结构体的成员进行了重命名(page_offset → bv_offset),但 VMware 17.5.2 的 vmnet 模块源码仍然使用了旧的 page_offset,导致编译失败。
方案一:打补丁修复 vmnet 源码(推荐,快速)
手动修改 vmnet 模块源码,将 page_offset 替换为 bv_offset。
bash
# 1. 进入 vmnet 模块源码目录
cd /usr/lib/vmware/modules/source
# 2. 解压 vmnet.tar
tar -xf vmnet.tar
# 3. 修改 userif.c 文件
cd vmnet-only
vi userif.c
找到以下两行(大约在第 85-87 行附近):
c
#ifndef skb_frag_off
# define skb_frag_off(frag) (frag)->page_offset
#endif
将其修改为:
c
#ifndef skb_frag_off
# define skb_frag_off(frag) (frag)->bv_offset
#endif
保存退出后,重新打包并安装:
bash
# 4. 重新打包
cd ..
rm -f vmnet.tar
tar -cf vmnet.tar vmnet-only
# 5. 重新执行编译
vmware-modconfig --console --install-all
验证修复结果
执行完方案一或方案二后,运行:
bash
# 重新编译
vmware-modconfig --console --install-all
# 检查模块是否加载
lsmod | grep vm
# 应看到 vmmon 和 vmnet
# 启动服务
systemctl restart vmware
systemctl status vmware
为什么会有这个错误?
| 组件 | 原因 |
|---|---|
| Linux 内核 4.19.90-89.11.v2401.ky10.x86_64 | 麒麟 V10 SP3 使用的内核版本较旧(4.19 LTS) |
| VMware 17.5.2 | 主要适配较新的内核(5.x+),对 4.19 内核的 API 兼容性有遗漏 |
page_offset → bv_offset |
Linux 内核 4.19 已将此成员改名,但 VMware 源码未同步更新 |
💡 建议
-
先尝试方案一(修改一行代码),2 分钟即可搞定。
-
如果后续还遇到其他模块编译错误,可能是同样的 API 不兼容问题,可以继续用类似方式修改。
-
如果未来需要长期稳定使用,建议在麒麟系统上改用 KVM(原生支持,无编译兼容问题)。
执行完方案一后,把终端输出发给我,我帮你确认是否还有其他错误。