每次想把网上下载的 img 镜像转换成 [[ESXi]] 使用的 vmdk 格式总是要另外开 [[Windows]] 电脑用 StarWind 软件进行转换,特别麻烦,因此问 [[ChatGPT]] 找了一个无需借助 Windows 的方式。
准备#
- 先通过 [[brew]] 安装 qemu:
# 安装完成后是使用 qemu-img 调用
brew install qemu
- 开启 ESXi [[ssh]] 服务:
- 登录 ESXi
- 选择「管理」
- 选择「服务」
- 找到「TSM-SSH」并启用
使用#
先把 img 镜像转换成 vmdk 格式:
qemu-img convert -f raw arpl.img -O vmdk arpl.vmdk
然后把转换后的文件通过 [[scp]] 上传到 ESXi 中:
scp arpl.vmdk root@esxi.immwind.com:/vmfs/volumes/SSD/mirrors/
如果现在把刚刚上传的 vmdk 镜像添加到虚拟机作为系统盘启动, ESXi 会出现报错:
无法打开虚拟机 DSM 的电源。“sata0:0” 的磁盘类型 2 不受支持或无效。请确保磁盘已导入。
当你以为是磁盘问题把磁盘类型改成 IDE 时,发现前面的报错消失,能正常启动了,先不要高兴,惊喜在后面:
kernel is not a valid elf file
因为还需要再转换一次,ESXi 才能正常识别。让我们先通过 SSH 连接 ESXi: ssh root@esxi.immwind.com
,然后执行:
# 进入之前镜像上传的位置
cd /vmfs/volumes/SSD/mirrors
# 执行转换
vmkfstools -i arpl.vmdk synoboot.vmdk
默认情况下使用 vmkfstools 转换后的硬盘类型是:厚置备,延迟置零,如果想改成 精简置备,可以加上 -d thin
参数:
vmkfstools -i arpl.vmdk synoboot.vmdk -d thin
待转换完成后,使用 ls 命令查看会发现除了 synoboot.vmdk 之外还多了一个 synoboot-flat.vmdk,不要误删了,这个才是真正存放数据的文件。不过可以把之前上传的 arpl.vmdk 文件可以删除,以免后续维护时造成混淆:
rm arpl.vmdk
现在可以把 synoboot.vmdk 加到虚拟机中作为系统盘启动,和通过 StarWind V2V Image Converter 转换的效果一样。
信息#
环境
- HPE-ESXi-6.7.0-Update3
- System: macOS 13.4.1
参考