修改 VirtualBox 硬盘镜像的 UUID

2011年12月04日   系统专区   0条评论   4770人围观过  
  为什么要修改 VirtualBox 镜像的 UUID?这个问题是我个人经常遇到的问题。正在使用一个虚拟机,突然运行某个重要软件出错了,而我又没有办法解决,唯一的办法就是重新安装 Linux 了。

  但是,重新在虚拟机里安装 Linux 时间耗时又费力的事情,于是乎我第一次刚安装完一个虚拟的 Linux,就把其硬盘镜像文件拷贝一份保存着,下次虚拟机里的 Linux 出错后,只要删除出错的那个镜像文件,将之前备份能用的覆盖进去,然后重启虚拟机里的 Linux,一切就轻松搞定,这个原理有点想 Windows 下的 Ghost 技术。

  虽然看上去是解决问题了,但是还有个问题,就是原虚拟机里的数据怎么办?你得拷贝到新虚拟机里,否则将失去意义。

  按照常理,你在虚拟机里重装了另一个新的 Linux 系统,只要将原来的那个镜像文件挂载进去,相当于给这台新虚拟机挂载了两个硬盘,一个是新的,另一个是旧的,当使用新虚拟机启动后,在里面找到老的虚拟机镜像,打开文件夹,将其拷贝到新镜像里就可以了。

  新的问题又出现了。在虚拟机里,新建一个硬盘镜像,虚拟机软件是靠一个叫做 GUID 值来区分的,这个值是唯一的。刚才如果是做复制出去做备份的系统镜像,那么你可能已经想到了,对,这两个硬盘镜像的 GUID 值是一样的。在 VirtualBox 里面,这个值不叫 GUID,叫 UUID 值。实际上是一样的。类似 “f50f4be5-9121-4f72-b900-7ad04fe8aafe” 的一串数字。

  在 VirtualBox 里面,UUID 值相同的两个镜像是不允许同时挂载在一起的,包括作为一个单独的虚拟机来存在。例如你建立的这个新的镜像,被复制了一份,一个用来安装 XP,另一个用来安装了 Linux,这两个主机是不允许同时出现在一台电脑上的。另一台电脑没有测试过,不在本文讨论范围。

  所以,最终的方法,你只有修改这个镜像的 UUID 值,然后才能同时挂载,才能将你的数据拷贝回来。

  首先访问一些在线生成 GUID 值的网站,例如:www.guidgenerator.com,随意生成一个 GUID 值。然后将你要修改的镜像文件,一般是扩展名为 vdi 的文件,拷贝到 VirtualBox 的安装目录里。进入命令行提示符窗口,进到 VirtualBox 的安装目录路径,然后输入:

VBoxManage internalcommands sethduuid mysystem.vdi f50f4be5-9121-4f72-b900-7ad04fe8aafe


  然后回车,你的名为 mysystem.vdi 的镜像就被修改了 UUID 值为 f50f4be5-9121-4f72-b900-7ad04fe8aafe,此时就可以同时挂载新旧硬盘镜像了。

  以上命令基于 VBoxManage v4.0.12 版,不同版本号命令可能会不同。
关键字: UUID,VirtualBox,修改,镜像
  •  lordson
     发布于 2011-12-17 04:40:36  回复该评论
  • 可不可以弄个转载连接,好文章想转载到qq空间,却也不想复制粘贴转码麻烦。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。