openEuler 24.03 在 vSphere 7 上安装与适配实践(含 VMware Tools 与模板化踩坑总结)
在国产操作系统逐步推广的背景下,越来越多环境开始尝试使用 openEuler。但在传统虚拟化平台(如 vSphere 7)上部署时,会遇到不少兼容性问题。本文基于实际落地经验,整理一套从安装到模板化的完整方案,并补充完整问题排查过程。
一、环境说明
- 操作系统:openEuler 24.03 LTS
- 虚拟化平台:VMware vSphere 7
- 部署方式:离线 ISO 安装
二、安装与基础配置(略)
1. 创建虚拟机
建议参数:
| 项目 | 推荐配置 |
|---|---|
| Guest OS | Linux → Other 3.x or later Linux (64-bit) |
| CPU | ≥2核 |
| 内存 | ≥4GB |
| 磁盘 | ≥40GB |
| 网卡 | VMXNET3 |
2. 挂载 ISO 并安装
步骤与常规 Linux 一致:
- 选择语言
- 分区(建议 LVM)
- 设置 root 密码
- 开启 SSH(建议勾选)
3. 系统初始化
uname -r确认内核版本(通常为 6.x)
vmware7以及7以下的版本没有适配24.03的vmwaretools
转换成模板进行自定义部署的时候会报错

三、安装 VMware Tools(开源版本)
刷新缓存:
dnf clean all
dnf makecache安装开源vmtools
dnf install -y open-vm-tools
systemctl enable vmtoolsd
systemctl start vmtoolsd验证:
vmtoolsd -v
systemctl status vmtoolsd四、关键问题:自定义规范无法执行
我们先来看下自定义的部署流程,虚拟机自定义规范的完整执行链路如下:
vCenter → ESXi → 虚拟机 → VMware Tools → deploypkg → 系统配置vCenter 流程
1. 创建虚拟机自定义规范
路径:
菜单 → 策略和配置文件 → 虚拟机自定义规范配置内容包括:
- 主机名
- IP 地址
- 子网掩码
- 网关
- DNS
- root 密码
2. 克隆虚拟机
右键虚拟机 → 克隆 → 克隆到虚拟机关键步骤(必须勾选):
自定义操作系统ESXi 层动作
vCenter 会将 customization 数据写入虚拟机参数:
guestinfo.ovfEnv
guestinfo.hostname
guestinfo.ip
guestinfo.dns虚拟机内部执行流程
1. VMware Tools 启动
systemctl start vmtoolsd2. 读取 customization 数据
vmtoolsd --cmd "info-get guestinfo.ovfEnv"3. 调用 deploypkg
关键组件:
libdeployPkgPlugin.so
libDeployPkg.so路径示例:
/usr/lib64/open-vm-tools/plugins/vmsvc/
/usr/lib64/4. 执行系统配置
常见操作:
- 设置主机名
- 配置网络
- 设置 DNS
- 修改密码
命令示例:
hostnamectl
nmcli根据此流程,可以判断vcenter未正确下发参数给虚拟机,我们需要先确认vmwaretools状态自定义部署模块是否存在,再检查下guestinfo字段是否可以成功读取,最后就可以确认问题。
五、完整问题排查过程(重点)
本问题排查过程如下:
1️⃣ 确认 VMware Tools 状态
systemctl status vmtoolsd
vmtoolsd -v确认:
- 服务正常运行
- 版本正常
2️⃣ 确认 deploypkg 相关组件
rpm -ql open-vm-tools | grep deploy输出:
/usr/lib64/open-vm-tools/plugins/vmsvc/libdeployPkgPlugin.so
/usr/lib64/libDeployPkg.so.0
/usr/lib64/libDeployPkg.so.0.0.0👉 结论:
- ✔ 插件存在
- ✔ 核心库存在
- ❌ 但 customization 仍不生效
3️⃣ 检查 so 库完整性(关键)
确认是否有软链接:
ls -l /usr/lib64/libDeployPkg.so*必要时补充:
ln -s /usr/lib64/libDeployPkg.so.0 /usr/lib64/libDeployPkg.so4️⃣ 验证 vmtools 是否能读取 guestinfo
关闭虚拟机,然后在 vCenter 中给虚拟机高级选项里面添加参数:
guestinfo.test=hello打开虚拟机,然后在虚拟机执行:
vmtoolsd --cmd "info-get guestinfo.test"输出:
hello👉 关键结论:
- ✔ vmtools 通信正常
- ✔ guestinfo 通道正常
- ❌ customization 未触发
5️⃣ 验证 ovfEnv
vmtoolsd --cmd "info-get guestinfo.ovfEnv"结果:
(无输出)👉 说明:
- vCenter 没有下发自定义数据
六、最终定位结论
通过以上排查可以确认:
vmtools 正常
deploypkg 存在
guestinfo 通道正常
但 vCenter 未下发 自定义数据👉 最终定位:
openEuler 24.03 不在 vSphere 7 支持列表中
➡️ 导致:
- customization spec 不执行
- ovfEnv 不生成
七、推荐解决方案
✔ 方案1:guestinfo + 脚本(推荐)
完全绕过 customization:
#!/bin/bash
IP=$(vmtoolsd --cmd "info-get guestinfo.ip")
HOST=$(vmtoolsd --cmd "info-get guestinfo.hostname")
hostnamectl set-hostname $HOST
nmcli con mod eth0 ipv4.addresses $IP/24
nmcli con up eth0✔ 方案2:升级平台
- vSphere 8(支持 cloud-init)
✔ 方案3:更换系统
- openEuler 22.03
- Rocky Linux 8
八、总结
👉 本问题不是配置问题,而是:
系统与虚拟化平台的兼容性问题
最终一句话
👉 能读到 guestinfo=hello,就说明:
问题已经不在 Linux,而在 vSphere customization 机制