如何在VirtualBox中打开现有的虚拟机?
我最近买了一台新的工作站,我把我的VirtualBox和VMWare Player虚拟机从旧电脑移到新电脑上。
VMWare Player虚拟机很简单:你进入 “File -\ Open a Virtual Machine…",找到旧电脑上的.vmx文件,然后就可以了。它就可以运行了。所有需要的文件显然都在同一个文件夹里。
用VirtualBox似乎没有办法做到这一点。看来虚拟机是以某种神奇/不可见的方式与原主机联系在一起的,比如注册表项等。
我最近买了一台新的工作站,我把我的VirtualBox和VMWare Player虚拟机从旧电脑移到新电脑上。
VMWare Player虚拟机很简单:你进入 “File -\ Open a Virtual Machine…",找到旧电脑上的.vmx文件,然后就可以了。它就可以运行了。所有需要的文件显然都在同一个文件夹里。
用VirtualBox似乎没有办法做到这一点。看来虚拟机是以某种神奇/不可见的方式与原主机联系在一起的,比如注册表项等。
默认情况下,VirtualBox 从以下路径加载配置数据:
%HOMEDRIVE%%HOMEPATH%\.VirtualBox
;通常是 C:\Documents and Settings\Username\.VirtualBox
。$HOME/Library/VirtualBox
。$HOME/.VirtualBox
。这意味着机器是针对登录用户的。如果你需要在不同用户之间设置一个共同的地方来存储机器,你可以通过设置VBOX_USER_HOME
环境变量来覆盖默认的位置。VirtualBox将使用该变量中的路径作为其存储虚拟机配置数据的地方。
更多信息请参见VirtualBox帮助主题【VirtualBox配置数据】(http://www.virtualbox.org/manual/ch09.html#vboxconfigdata)。
如果你使用的是类似Unix的电脑,你可以这样做。
find /path/to/vms -name "*.vbox" -exec VBoxManage registervm {} \;
你只需要记住提供整个.vbox文件的路径. 如果你指定了一个相对路径,它将愚蠢地认为它是相对于你的home文件夹的。
例如,我在重建我的工作站后就这样做了。
$ find /store/vm -name "*.vbox" -exec VBoxManage registervm {} \;
它找到并重新注册了我所有的虚拟机。
上面的解决方案对我来说都不奏效,因为我试图将一个在VirtualBox 3.1.6下创建的VDI文件导入到另一台机器上运行的VirtualBox 4.32中。这是一个自带的文件,没有链接到另一个VDI。我一直收到错误信息。
Parent medium with UUID {a9dccef3-45f8-45ff-835e-a2b6e7279bac} of the medium
'c:\Disks\Windows.2003.R2.Enterprise.SQL.Express.192.168.56.222.Trusted.vdi'
is not found in the media registry
我甚至在VirtualBox 3.1.6下导入了相同的VDI,然后试着再次使用VBoxManage clonehd,看看是否能消除这个错误,但也没有用。
最后我只是手动编辑了.VirtualBox/VirtualBox.xml,添加了
<HardDisk uuid="{43ea34ba-6d72-413e-8b37-32f475927ace}" location="C:/Disks/Windows.2003.R2.Enterprise.SQL.Express.192.168.56.222.Trusted.vdi" format="VDI" type="Normal"/>
(uuid是在VirtualBox 3.1.6下使用VBoxManage showvhinfo获得的)
这下终于解决了问题,也就是说,我可以使用vdi创建一个新的VirtualBox会话了。
希望这篇笔记能帮助遇到同样问题的人。
关于这样的错误。
打不开硬盘 V:\ProgramData/VirtualPC/CleanTesting/XP sp1.vhd. 介质'V:ProgramData/VirtualPC/CleanTesting/XP sp1.vhd'的父介质UUID {199e419e-a076-d811-81ef-8eeb0865d5ed}在介质注册表(‘C:UsersClay/.VirtualBox/VirtualBox.xml’)中找不到。
VirtualBox似乎缓存了与虚拟磁盘文件名相关的UUID。它并不在消息所说的文件中;它必须存储在其他地方。显然VirtualBox 4不再支持取消注册/注册磁盘命令了。
最后,我发现如果我改变了VDI文件的名称,那么它不再与缓存的条目相匹配,VirtualBox也不会抱怨。
在Debian上,我编辑了~/.VirtualBox/VirtualBox.xml
,也编辑了我想导入的machine.xml
:~/VirtualBox VMs/$machine/$machine.xml
关闭VirtualBox,添加进VirtualBox.xml
:
<MachineRegistry>
<MachineEntry uuid="{$find-in-machine.xml}" src="/$fullpath-to-machine.xml"/>
</MachineRegistry>
重新启动VirtualBox,如果需要的话,添加只用于主机的网络,如果需要的话,导入ext pack https://www.virtualbox.org/wiki/Downloads ),如果需要的话,安装virtualbox添加:sudo apt-get install virtualbox-guest-additions-iso
。
启动您的虚拟机。