每次想把網上下載的 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
參考