VMLite 与 VirtualBox实际上是一样的
今天,想起来运行一下以前安装的 VMLite 的虚拟机,但是,却无法启动。想修复一下,却说,已经安装了 VirtualBox,我好像没有安装过。
不过,既然说我装,干脆就把 VMLite 卸载了,装 VirtualBox。
装了以后,但是,却不能导入原来由 VMLite 创建的虚拟机。
VMLite 的配置文件的扩展名是 xml,而VirtualBox 的扩展名为 vbox。
不过,打开一看,原来格式是一样的。
于是,把 xml 改成vbox,就可以导入了。
但是,有两个问题:
1、就是要重新激活了。
2、原来的共享空间的网络名称不同了:
\\.host\sfs\ 改成 \\vboxsvr\
一、配置文件
VMLite 的配置文件在%USERPROFILE%\VMLite\ VirtualBox.xml
VirtualBox的配置文件在%USERPROFILE%\. VirtualBox\ VirtualBox.xml
如果要手工修改VMLite 的配置文件,必须中止两个进程:VMLite 和 VBoxSvc,实际上,是要中止第二个进程就可以了。只要运行过 VMLite 运行过,这两个进程就会常驻,且第一个进程,每运行一次,会增加一个,因此,也就顺便中止好了。如果不中止这两个进程,手工修改的配置无效,即,一启动 VMLite 所有的配置全都恢复了。刚开始,我注意到这是进程没有中止的问题。所以,为了这个,我到处寻找,是否在其他地方还有配置文件。当然是没有。
第二,配置文件分成两部分,一是前面说的,即,全局的配置文件,其中,主要描述了每个虚拟机、虚拟硬盘、快照等的位置。另一个是具体的虚拟机的配置文件,保存在每个虚拟机的目录下,文件名,即虚拟机的名字,扩展名也是 .xml。
第三,VMLite 没有打开虚拟机的功能,也就是说,一旦主配置文件丢失,会有很大的麻烦。但是,新版本的VirtualBox 就有打开的功能,比较方便。
二、让 VMLite 与VirtualBox 共存
分别建两个批处理文件:
1、VMLite
d:
cd"D:\Program Files\VMLite\VMLite Workstation"
start /waittaskkill /f /im vboxsvc.exe
start /waittaskkill /f /im vmlite.exe
start /waittaskkill /f /im virtualbox.exe
regsvr32 /svboxc.dll
start vboxsvc
vmlite
2、VirtualBox
d:
cd"D:\Program Files\Oracle\VirtualBox"
start /waittaskkill /f /im vboxsvc.exe
start /waittaskkill /f /im vmlite.exe
start /waittaskkill /f /im virtualbox.exe
regsvr32 /s /uvboxc.dll
regsvr32 /svboxc.dll
start vboxsvc
virtualbox
上面加了 start 的原因,一是为了结束不能正常退出的进程;二是为了不等 vboxsvc 退出就执行下一条启动虚拟机的命令。因为,如果退出了,VirtualBox 就启动不了。
三、利用高版本的 VBoxManage 进行管理
1、修改磁盘的 uuid
用 internalcommans sethduuid
老版本的命令只能重新 uuid,但不能指定 uuid。
由于在摸索 VMLite 的过程中,没有注册已有虚拟机的功能,用了从磁盘新建虚拟机的方法,导致重新产生了磁盘的 uuid,与配置文件中已有的描述不一致。当然,如果磁盘没有快照的话,改一下配置中的 uuid,也就好了。但是,如果磁盘有快照,它不仅有 uuid,还有一个叫 parentuuid,指向父磁盘。这时候,如果不重设父磁盘的 uuid 的话,快照就没有办法访问了。
2、修改磁盘的 parentuuid
用 internalcommanssethdparentuuid
但是,没有成功。虽然命令没有出错,好像没有效果。
3、打算修改一下默认配置文件的位置。
暂时没有找到。
四、相互启动对方的虚拟机。
先说容易的。高版本的 VirtualBox想启动低版本的 VMLite 的虚拟机,相当容易。只需:单击控制菜单,再单击注册,选择虚拟机的配置文件,即可导入VMLite 的虚拟机。后面的事就不用说了。
低版本的 VMLite 想启动高版本的VirtualBox 的虚拟机,就不那么容易了。需要手工修改配置文件。
1、 主配置文件。
加入一行虚拟机的入口信息,也就是我们想改变虚拟机位置,要修改的信息。如:
<MachineEntryuuid="{9eb08035-4fd4-4c4e-a6d0-9442630b9ef2}"src="D:\VMLites\win7\win7.xml"/>
Uuid 从虚拟机的配置文件中可以找到。
2、 用虚拟介质管理菜单,注册虚拟机用到的虚拟硬盘。
3、 虚拟机配置文件。
删除有 HDA 的一行。
也不算太难。