前 言

window10电脑重新安装C盘。重装前正常使用的VirtualBox虚拟机,启动失败,先是启动报各种找不到{uuid.vmdk}文件的错误,使用原来的虚拟机配置文件虽然能正常启动,但是关闭虚拟机后,xxx.vbox配置文件的快照顺序又被自动清掉,导致又不能正常使用。 折腾了好久,特此记录一下。

恢复过程

1、备份文件:

  1. 备份C盘VirtualBox.xml全局配置文件,比如我的目录:C:\Users\HZL\.VirtualBox\VirtualBox.xml
  2. 备份虚拟机文件,比如我的: E:\Program Files (x86)\Oracle\VirtualBox VMs\HZL_default_1591694534017_91720\
  3. 如果使用vagrant up的方式启动的VirtualBox,则还需要备份C:\Users\HZL\.vagrant
    C:\Users\HZL\.vagrant.d
    C:\Users\HZL\.Vagrantfile vagrant 配置文件
    备份目录

备份的虚拟机文件目录

2、重新安装Virtualbox后,将 VirtualBox.xml文件拷贝覆盖原文件

C:\Users\HZL\.VirtualBox
C:\Users\HZL\.vagrant
C:\Users\HZL\.vagrant.d

3、Virtualbox界面,选择"管理——虚拟介质管理器",手动添加注册虚拟介质

注意: 有快照的话,需要按照层级先后顺序,依次注册。如果不记得顺序的话,顺序可以参考 “HZL_default_1591694534017_91720.vbox”配置文件或者

C盘的VirtualBox.xml全局配置文件,里面有写原来的介质顺序。

类似这样:

virtualBox.xml全局配置文件片段

按照顺序注册添加后,直接点击关闭(不要点“刷新”,否则白填),效果如下:

注册介质
注册时完成,示意图如下,状态显示“已关闭”,右侧注册的快照信息正常显示,代表成功。注册虚拟机
(我之前缺少了注册的这一步,导致我的虚拟机只能正常启动一次,等关闭了虚拟机后,我的“HZL_default_1591694534017_91720.vbox”配置文件快照顺序,就会被覆盖掉,丢失了快照绑定顺序就报错各种找不到{uuid.vmdk},导致启动不了。"xxx.vbox"配置文件注释也说明了,不要手动修改该文件,还是要以图形化界面管理来自动修改xxx.vbox配置文件比较好靠谱,所以这一步不能缺少。)

4、Virtualbox界面,选择"控制-注册”,注册虚拟机

如果你有提前打开VirtualBox.xml文件,注册完成之后,你就会发现此时C:\Users\HZL\.VirtualBox\VirtualBox.xml VirtualBox.xml全局配置文件也会随之修改更新。

5、Virtualbox界面,选择"设置——存储 & 系统启动顺序 "【缺少这步,启动虚拟机会报错FATAL:NO bootable medium found!System halted.

左侧选中某个虚拟机,点击“设置”,进入虚拟机设置图形化界面,存储——控制器——添加。

设置存储介质硬盘

选中,刚才注册添加的虚拟介质硬盘

添加注册虚拟介质硬盘
我这里添加绑定了2块虚拟硬盘
控制器添加虚拟硬盘,绑定关联

设置 ——系统 ,设置系统启动加载顺序。VirtualBox默认光盘、软盘启动优先,建议:设置为硬盘启动优先。

设置系统加载顺序

6、启动虚拟机成功

配置完成以上步骤以后,就算完成了,就算反复重启虚拟机,也能正常启动,关键还是图形化界面把快照和介质相关的信息固定到了
HZL_default_1591694534017_91720.vbox”和C:\Users\HZL\.VirtualBox\VirtualBox.xml 文件中。

7、恢复 vagrant up 方式启动虚拟机

  1. 安装 vagrant
  2. 拷贝并覆盖
    C:\Users\HZL\.vagrant
    C:\Users\HZL\.vagrant.d
    C:\Users\HZL\.Vagrantfile vagrant 配置文件

如果没有覆盖这些文件,你如果直接用vagrant up 命令在新的机器启动,你会发现启动的是新的虚拟机示例,而没有跟你原来的虚拟机绑定。这是因为每个虚拟机实例id都是唯一的,配置文件、免密登录的秘钥等配置就在这三个文件内。

# 启动默认的虚拟机
$ vagrant up 

# 启动指定虚拟机
$ vagrant up web1

# 关闭指定虚拟机
$ vagrant halt web1
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐