題 是否可以將虛擬機轉換為物理環境?


是否可以將.vdi文件轉換為.iso,可以將其刻錄到cd或dvd並使其像安裝程序一樣。或者是否可以將虛擬機轉換為物理環境?


74
2018-02-28 04:26


起源


AskUbuntu.com上的這個答案可能適用於Linux主機上運行的很多環境: askubuntu.com/a/32506/31592 - blong


答案:


是的,不。

能夠 使用。將VDI轉換為磁盤映像 VBoxManage 工具。這個命令 克隆已註冊的虛擬磁盤映像 到另一個圖像文件。如果要將虛擬磁盤轉換為其他格式,這是使用[*]的官方VirtualBox工具。

VBoxManage clonehd file.vdi output.img --format RAW
  • 如果您使用的是動態VDI,並且您擁有較舊版本的VirtualBox, clonehd 可能無法正常運作。 VBoxManage的 internalcommands 工具包括 converttoraw,可以將動態VDI轉換為原始磁盤映像(資源)[+]。

VBoxManage internalcommands converttoraw file.vdi output.img

...輸出IMG文件不是ISO映像,並且安裝的操作系統不會配置為從可引導CD / DVD運行。您可以將IMG“刻錄”(寫入)到硬盤驅動器上,它可以在裸硬件上啟動(例如,不在虛擬機中)。但它可能不會,因為安裝在該IMG上的操作系統希望看到VirtualBox提供的虛擬硬件,並且您在真正的硬件上啟動它並不是它所期望的。

某些版本的Windows無法很好地處理這種情況;一些Linux發行版。有時可以配置OS(事先或之後)將其從一個環境遷移到另一個環境,​​但具體步驟完全取決於要遷移的操作系統。


在Windows上,您可能需要指定程序的完整路徑:

"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" [...]

C:\ Program Files \ Sun \ VirtualBox 到你的PATH使用短版本。


[*] 我假設了 “ - 格式化RAW” 選項將轉換為標準磁盤映像,就像您使用了 DD 命令在物理硬盤上。但坦率地說,我還沒有找到任何支持這一點的文檔,因此請注意這可能不正確。

[+] 我剛剛在VirtualBox 3.1.2下測試了這兩個命令。兩個輸出文件都是相同的 的md5sum,但我還沒有完全測試輸出文件。

另見 “所有關於VDI” 教程 在VirtualBox論壇上。


60
2018-02-28 05:50



VDI的大小怎麼樣?那有關係嗎?假設VDI大小為20GB,實際硬盤大小為200GB ......會發生什麼? - Pwnna
第一種方法“clonehd”看起來非常緩慢。但第二個是一種享受。 - Matt H
另請注意,如果您設法啟動Windows操作系統,則必須在大多數情況下重新激活它。 - Kimmax
怎麼樣? sysprep /generalize 首先是虛擬安裝嗎?這肯定會使安裝準備安裝在新硬件上(或者在這種情況下是物理硬件) - Robula
@Pwnna你正在復制一個img的硬盤(不只是一個分區,而是一個帶分區的整個分區圖)。我過去做過這個,記得看到這個答案描述的內容,最後未使用/未分區的空間: serverfault.com/questions/268889/... - sudo


如果您的vdi文件包含分區,並且您只想提取其中一個分區,請使用以下命令:

首先,正如quack quixote之前所說,將vdi文件轉換為原始圖像文件:

# VBoxManage clonehd file.vdi file.raw --format RAW

然後為圖像設置循環設備:

# loopdev=$(losetup --show -r -f file.raw)

使用kpartx為原始文件中的每個分區創建設備:

# apt-get install kpartx
# kpartx -a $loopdev

查看我們現在擁有的設備。在這個例子中,只有一個設備,因為原始圖像中只有一個分區:

# ls /dev/mapper/loop*
/dev/mapper/loop0p1

現在安裝它以驗證一切正常:

# mkdir /mnt/part1
# mount /dev/mapper/loop0p1 /mnt/part1
# ls /mnt/part1
# umount /mnt/part1

使用dd將分區內容複製到另一個目標分區:

# dd if=/dev/mapper/loop0p1 of=/dev/sda2 bs=1M

完成後,再次刪除設備映射:

# kpartx -d file.raw

19
2017-09-26 19:57



這可能與Windows? - Ehsan


如果您的主機和客戶系統是Linux,答案肯定是肯定的。 它完成了包 qemu 和 TKLPatch。您可以使用VDI或VMDK文件。

閱讀更多:


12
2018-02-28 09:20



+1 “定” 警告 “......只要你的客人是linux”。他們的(你的?)解決方案依賴於一些TurnKey Linux工具。但程序看起來很合理。 (歡迎超級用戶!) - quack quixote


我試過了 VBoxManage clonehd file.vdi output.img --format RAW 從 接受的答案 但沒有太大的成功。

在Windows 7主機上使用Windows 8.1虛擬機對我有用的是:

  1. 在VirtualBox中製作Windows 8.1計算機,安裝和使用就像通常使用VM一樣。
  2. 將Virtual Box .vdi硬盤轉換為Windows VHD 同 VBoxManage clonehd source.vdi target.vhd --format vhd
  3. 將VHD掛載到主機Windows計算機中 作為驅動器(您可以在計算機管理中的磁盤管理器中安裝VHD。
  4. 將VHD(作為驅動器安裝)克隆到另一個新硬盤(在我的情況下是USB連接的筆記本電腦HD) DriveImage XML 或類似的磁盤克隆工具。你現在基本上已經將虛擬硬盤.vdi克隆到裸機。
  5. 在機器中安裝新硬盤。 (在我的情況下交換筆記本電腦硬盤)
  6. 插入Windows 8.1安裝USB / CD,從中啟動,選擇“高級選項”和“自動修復”。自動修復將使新硬盤可啟動。
  7. 使用克隆的Windows 8.1從新硬盤引導並運行Windows Update。這將下載計算機硬件的驅動程序,這些驅動程序在VirtualBox中運行Windows時不知道。如果有的話,您必須手動安裝缺少的驅動程序。
  8. 卸載VirtualBox Guest Additions。 (可選)安裝VirtualBox,以便您的裸機Windows 8.1可以是VirtualBox主機。

5
2017-09-07 08:44



來自@sum:你可以試試 BOOTICE 更換第6步並確保安裝正確的MBR。 - fixer1234
謝謝。 BootICE比Windows 8.1安裝更可靠嗎?我描述的步驟6可能會搞砸MBR嗎? - Jan H
這是作為新用戶的答案發布的(我相信 superuser.com/users/523958/sum)。它將被刪除,因為它沒有資格作為答案,所以我複制了帖子並將其保存為評論,因此它不會丟失。我個人並不熟悉它。 - fixer1234


我在Linux中只用兩行命令就能快速完成這個過程:

#VBoxManage內部命令converttoraw your_disk_virtual.vmdk your_disk_virtual.img

要么

#VBoxManage內部命令converttoraw your_disk_virtual.vdi your_disk_virtual.img

# mv your_disk_virtual.img your_disk_virtual.iso

我的全文: http://www.previsioni.com.br/jailsonjan/?p=389


3
2017-08-17 14:17



在這種情況下.img會是可引導的嗎? - Pumphouse
我想不是。我已經看到了來自0-rep用戶的類似答案,這似乎很簡單,然而,事實證明是無用的。 - T.Todua


使用以下命令轉換:

VBoxManage clonehd CactiEZ-disk1.vmdk output.iso --format VMDK

這是輸出:

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VMDK'. UUID: 7f297ac6-95eb-4814-9237-1acfd6be976c

0
2017-10-18 09:31