Chinaunix首页 | 论坛 | 博客
  • 博客访问: 635791
  • 博文数量: 356
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2287
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-08 17:08
文章分类

全部博文(356)

文章存档

2023年(3)

2022年(7)

2021年(33)

2020年(47)

2019年(36)

2018年(221)

2017年(1)

2015年(1)

2013年(7)

我的朋友

分类: LINUX

2018-07-12 09:23:54

VirtualBox下通过复制已存在的vdi文件可以快速创建新的虚拟机。

  1. 点击新建(ctrl + n);
  2. 设置虚拟电脑名称和系统类型;
  3. 分配内存大小;
  4. 选择使用已有的虚拟硬盘文件(vdi文件)

其中,已有的虚拟硬盘文件可以从别人主机中复制过来,也可以从自己主机中已有的vdi直接复制。前者选择后即设置完毕,可以直接使用;而直接时候后者,会提示虚拟电脑控制台-错误,如下图所示。

添加虚拟机文件错误

提示语句为:

打开硬盘文件F:\WinXP Lab\WinXP Lab1.vdi 失败.
Cannot register the hard disk ‘F:\WinXP Lab\WinXP Lab1.vdi’
{464a2753-9583-4ffb-b15a-7c2548ce5a6f}
because a hard disk ‘F:\WinXP Lab\WinXP Lab.vdi’
with UUID {464a2753-9583-4ffb-b15a-7c2548ce5a6f} already exists.

返回 代码: E_INVALIDARG (0x80070057)
组件: VirtualBox
界面: IVirtualBox {fafa4e17-1ee2-4905-a10e-fe7c18bf5554}
被召者 RC:VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)

本文主要讲解如何解决这一错误提示。只需解决问题的读者只需要看第四节,前三节留给关心背景知识的读者。其中,前两节的详细内容可参见VirtualBox的官方UserMaual。

一、关于UUID

UUID即Universally Unique Identifier,意为通用唯一识别码。VirtualBox中UUID是其用于调用虚拟机的内部唯一识别码。

二、VBoxManage

VBoxManage是VirtualBox的命令行界面,通过它可以用主机OS中的命令行来完全控制VirtualBox。VirtualBox支持但不限于VirtualBox中GUI中提供的所有功能,也就是说它还可以实现GUI中不能实现的功能。例如,本文就是使用VBoxManage来实现修改UUID的,而这一功能在GUI中是无法实现的。

VBoxManage的命令格式一般为:

VBoxManage + 子命令 + 虚拟机名/UUID

例如,开机的子命令为startvm,则令名为Windows XP的虚拟机开机的命令为(注意:若虚拟机名称包括空格,必须使用双引号):

VBoxManage startvm “Windows XP”

或者使用其UUID:

VBoxManage startvm 670e746d-abea-4ba6-ad02-2a3b043810a5

三、错误分析

根据错误提示可知,无法直接使用复制过来的vdi文件作为已有的虚拟硬盘文件原因是同一主机下两个vdi文件的UUID重复。因此修改其中一个vdi文件的UUID即可解决。我们通过VBoxManage + internalcommands sethduuid这一子命令加vdi文件所在路径来对拷贝后vdi文件的UUID进行修改。

四、操作步骤

方法一

1、win + r 运行 cmd, 输入:

cd /d “x:\…\virtualbox”

用来挂载VBoxManage所在路径,其中引号内为VirtualBox安装目录(引号可不保留)。例如,我的VirtualBox安装在D盘根目录下,则应为:

cd /d “d:\virtualbox”

如下图所示:
cd virtualbox

2、继续输入:

vboxmanage internalcommands sethduuid “x:\…\***.vdi”

其中,引号内为待修改UUID的vdi文件的绝对路径(注意引号要保留),例如:

vboxmanage internalcommands sethduuid “F:\WinXP Lab\WinXP Lab.vdi”

显示

UUID changed to: fa8d8029-f280-4565-90ee-86aae4af9352

表示UUID修改完成,如下图所示。

UUID finished


方法二

实质与方法一相同,使用批处理方式,避免了输入文件路径这一步。

新建文本文件,打开后将下述代码复制过去,

@ VBoxManage internalcommands sethduuid "x:\\...\\***.vdi" @ pause

将引号内路径改为你要修改的vdi文件的路径,保存后把后缀修改为.bat,将该文件放入VirtualBox安装路径下,即与VirtualBox.exe相同路径下,运行即可。如下图所示:
bat UUID finished

注:
Windows 版本:Windows 8.1 企业版
VirtualBox版本:4.3.26

本文永久更新链接地址

阅读(1909) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~