openEuler 24.03 在 vSphere 7 上安装与适配实践(含 VMware Tools 与模板化踩坑总结)

在国产操作系统逐步推广的背景下,越来越多环境开始尝试使用 openEuler。但在传统虚拟化平台(如 vSphere 7)上部署时,会遇到不少兼容性问题。本文基于实际落地经验,整理一套从安装到模板化的完整方案,并补充完整问题排查过程。


一、环境说明

  • 操作系统:openEuler 24.03 LTS
  • 虚拟化平台:VMware vSphere 7
  • 部署方式:离线 ISO 安装

二、安装与基础配置(略)

1. 创建虚拟机

建议参数:

项目推荐配置
Guest OSLinux → 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 vmtoolsd

2. 读取 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.so

4️⃣ 验证 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 机制

最后修改:2026 年 03 月 23 日
如果觉得我的文章对你有用,请随意赞赏