如何將 VirtualBox 虛擬機器複製/移動到另一台電腦?

如何將 VirtualBox 虛擬機器複製/移動到另一台電腦?

我透過備份更新到 Windows 10一切從舊的舊Windows,然後以乾淨的格式安裝;一切都很新鮮。

我的Virtual Box裡有一個Debian 8.1,也保存完整;不僅僅是磁碟映像。

我安裝 VirtualBox 並再次啟動該機器,令人驚訝的是,Debian 抱怨無法找到根分割區(不存在具有該 UUID 的分割區),落入一個小 shell 並拒絕啟動。

我懷疑 中的條目fstab不再正確,因此我啟動了一個即時發行版並檢查它...blkid報告與它們中的相同的 UUIDfstab

所以,有什麼問題嗎?

在VMware中我做不是遇到這個問題,如果我複製/移動機器,重新安裝VMware等,它會詢問是否複製或移動,並且從來沒有遇到過這樣的問題。

PS請不要將此問題標記為欺騙,我確實讀過“將 VirtualBox 虛擬機器移至另一台電腦的建議方法是什麼?”並嘗試過這個問題的選項2我複製了所有文件,並將它們放在正確的位置。再次在該虛擬機器中啟動即時 Linux,我會看到具有正確 UUID 的硬碟。

答案1

好吧,我想說你最好.ova在清除主機系統之前將虛擬機器匯出(到容器),然後再導入——VirtualBox 可以從它的 GUI 中做到這一點。

但好吧,回到你的問題...我記得 VirtualBox 對於你的虛擬機器使用的所有媒體都有單獨的「註冊表」。 IIRC,它儲存在目前使用者設定檔下某處的 XML 檔案中。

因此,我首先從 VBox GUI 打開媒體管理窗口,並確保 Debian 的磁碟確實存在並且為 VBox 媒體管理器所知。

之後要檢查的下一件事情是存取虛擬機器的屬性並確保代表虛擬機器硬碟的媒體可用並且具有「正常」狀態。

如果此後啟動虛擬機器失敗,請執行以下操作:在早期啟動(BIOS 後)期間出現 GRUB(Debian 的啟動載入程式)視窗時,按e(或任何它建議的內容 — 我不記得了)來編輯啟動您的系統的入口- 您將看到引導程式傳遞到核心的命令行,它包含名為“root”的參數(意味著根檔案系統)。如今,root 的參數包含一些 UUID 編碼的裝置名稱,因此整件事情看起來像

/boot/vmlinuz-3.2.0-4-amd64 root=UUID=2cb5a97c-75ab-4c8b-afd9-19297e3553bd ro single

您應該將該UUID=blah...部分替換為,/dev/sda1使其讀起來類似於

/boot/vmlinuz-3.2.0-4-amd64 root=/dev/sda1 ro single

它很可能會正常啟動。

(請注意,內核文件的路徑/boot/vmlinuz-3.2.0-4-amd64來自我的系統;在您的系統上可能有所不同 - 不要弄亂它,您應該只觸及參數root=)。

請注意,這/dev/sda1意味著第一個 (SATA/SCSI) 硬碟上的第一個主分割區。如果你的根分區在其他地方,你必須弄清楚這一點。如果您不知道這是什麼意思,請嘗試等等23直到它起作用為止。

系統啟動後,運行

# dpkg-reconfigure grub-pc

重新配置 GRUB,以便它可以為根檔案系統使用正確的設備名稱。

/etc/fstab如果裝置的 UUID 確實已更改,您可能還需要修復該檔案。為此,請運行

# blkid /dev/sda1

並將對應 fstab 條目中的 UUID 值替換為該值blkid中報告的值UUID

其中的數字/dev/sdN顯然應該與適合您的root=核心參數相符。

答案2

如果您在移動虛擬機器並嘗試啟動它後收到以下訊息:

無法開啟硬碟。

無法註冊硬碟,因為 UUID 的硬碟已存在。

然後進入你的虛擬機器目錄;當然,更改實際路徑以符合您要進入的實際路徑:

cd /full/path/to/virtualbox/virtualmachine/Sandbox

並執行以下命令為磁碟分配新的 UUID:

VBoxManage internalcommands sethduuid Sandbox.vdi

相關內容