在VirtualBox的快速修復界面裏,可以隨時生成當前狀態的備份。當生成了備份之後,會在Snapshots目錄下創建一個新的VDI文件,之後對當前狀態所做的一切操作都將針對最新的VDI文件,而VDI目錄下的初始VDI文件就不會再改變了。
我一般在裝好Guest OS並做完打補丁、安裝常用軟件等操作後就創建一個備份,如果Guest OS發生了問題可以隨時恢復到乾淨的系統。但是有時需要在不同的軟件環境下做不同的事情,開始時我希望能用一個VDI文件生成兩個不同的備份並分別配置成不同的環境,但是發現VirtualBox的備份是線性的,也就是說只能針對當前狀態做一個備份,而恢復備份時也只能恢復到上一個備份的狀態,不能同時存在兩個不同的當前狀態。
沒有辦法,只能把初始的VDI文件複製出來一份用於另外的環境。但是很快發現,複製出來的VDI文件無法在虛擬介質管理器中註冊,因爲每個VDI文件都有一個唯一的uuid,而VirtualBox不允許註冊重複的uuid。
看了幫助文件後,發現VBoxManage有一個clonevdi方法可以克隆VDI文件,並賦予它一個新的uuid。具體用法是在命令行裏執行:
VBoxManage clonevdi 原始VDI文件名 新的VDI文件名
直接寫VDI文件名即可,不用指明VDI文件所在路徑,新的文件會在全局設定中指定的VDI目錄下創建。如果VDI文件名裏帶有空格,應該在兩端加上雙引號。VBoxManage命令位於VirtualBox安裝目錄下,缺省路徑是C:\Program Files\Sun\xVM VirtualBox。
用這個方法創建了新的VDI文件後,就可以正常註冊並在另一個虛擬機中使用了。
--------------------------------------------------------------------
個人使用以上辦法在Virtual Box4.2沒有work,又通過使用
VBoxManage.exe internalcommands sethduuid hd-file 的方式修改後才生效。
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands sethduuid D:\ temp\junsos-1\Olive11.1R1.14.vmdk UUID changed to: 9bf464d8-22d0-48f3-bb2b-524c5b39a1c