VirtualBox 升级毁了我的虚拟机

6

我之前使用Virtual Box 3.2很好地模拟了32位的Windows XP在64位的Windows 7主机上。然后我升级到了VirtualBox 4.0.4,似乎一切正常(在我安装了一些东西——USB2.0支持和Guest Additions之后)。
然后我恢复了一个在3.2版本下创建的快照,现在我失去了一切。我收到了错误消息:

The selected virtual machine is *inaccessible*. Please inspect the error message shown
below and press the **Refresh** button if you want to repeat the accessibility check:

Could not find an open hard disk with UUID {b0e666ef-1041-415a-8329-876b337e1958}.
Result Code: 
VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)
Component: 
VirtualBox
Interface: 
IVirtualBox {d2de270c-1d4b-4c9e-843f-bbb9b47269ff}

我试图从vdi文件创建一个新的虚拟机,但是在加载WINDOWS\System32\DRIVERS\lfsfilt.sys时它卡住了。我尝试重新安装3.2版本,但是仍然存在完全相同的问题。

我的.VirtualBox目录中有一个VirtualBox.xml文件,以及.VirtualBox\Machines\Virtual Dell中的各种文件(如Virtual Dell.xml、Virtual Dell.xml-prev等)。

请帮忙!该怎么办才能恢复我的虚拟机?


这个问题可能应该发布在高级用户网站上? - DuckMaestro
4
好的,我会尽力进行翻译。以下是需要翻译的内容:Belongs on http://superuser.com - Paul R
这个问题对于 Stack Overflow 来说不太适合,我不想迁移它,因为它已经有了被接受和赞同的答案。 - Tim Post
@Tim Post:你不能关闭这篇帖子而不给Terseus我欠他的500分!这对Terseus来说真的很不公平。 - TonyK
3个回答

19

最近我遇到了一个bug(我认为这是VirtualBox的bug),使用v4中的快照。

我通过打开VirtualBox.xml文件来解决它:

  1. 搜索缺失驱动器的UUID(在本例中为b0e666ef-1041-415a-8329-876b337e1958),通常是一个带有“/>”的标签。
  2. 删除生成错误的标签。
  3. 现在,如果有问题的HardDisk标签在另一个HardDisk标签内(其中一个带有开放和关闭标签),则将此最后一个标签重新转换为没有关闭标签的标签。

抱歉,我的英语不够好让我做出好的解释,让我举个例子:

非工作的原始XML部分:

<HardDisks>
    <HardDisk uuid="{ac511969-288a-44b4-b7ac-df5808c1a4ca}" 
        location="/home/me/.VirtualBox/HardDisks/machine_name.vdi" 
        format="VDI" type="Normal">
        <HardDisk uuid="{e4e44e9d-aad0-4e2f-8ef8-d3d4d64f997f}" 
            location="/home/me/.VirtualBox/Machines/machine_name/Snapshots/{e4e44e9d-aad0-4e2f-8ef8-d3d4d64f997f}.vdi" 
            format="VDI"/>  <!-- 有问题的快照 -->
    </HardDisk>
</HardDisks>

修复后的XML部分:

<HardDisks>
    <HardDisk uuid="{ac511969-288a-44b4-b7ac-df5808c1a4ca}" 
        location="/home/me/.VirtualBox/HardDisks/machine_name.vdi" 
        format="VDI" type="Normal" /> <!-- 注意,我们已更改此标记并删除其结束标记,因为它不再需要 -->
</HardDisks>

对我而言,这至少有效,虽然快照丢失了,但是可以恢复虚拟机。

希望这能帮到你。


我试过了,看起来不错!给我24小时,如果一切仍然正常,我会接受你的答案。谢谢! - TonyK
1
@Terseus:我欠你500分,但是管理员在你得到它们之前关闭了问题。我会跟进此事。 - TonyK
是的,我看到在赏金结束前一个小时关闭它,正如你所说,这并不是很公平,但不用担心,这不是你的错,毕竟我已经从这个答案中获得了一些积分 ^_^ - Terseus
@Terseus:我终于搞定了它 :-) - TonyK
@TonyK 哇,当我看到我的声望时,你让我从椅子上跳了起来 :) 非常感谢你,我再也不期望它了。 - Terseus
显示剩余2条评论

2
在虚拟媒体管理器中,XP VDI硬盘是否已挂载到虚拟机上?如果没有,请打开虚拟机设置,在存储选项卡中添加VDI。

我找不到一个存储选项卡(我现在回到了Virtual Box 4.0.4)。 如果我点击“文件|虚拟媒体管理器”,我会得到一个对话框,其中有“硬盘”、“CD/DVD镜像”和“软盘镜像”选项卡。 在“硬盘”选项卡中,我可以看到我的VDI文件。 底部的状态信息显示:“位置:C:\MyDir\MyDisk.vdi;类型(格式):常规(VDI);已连接到:未连接”。 如果我展开此下的子树,我会得到一个列表,形式为“{0994df17-8874-4c85-8476-2757a829353c}.vdi”的项目; 这些项目都很小,其中有两个带有警告三角形图标。 没有一个是原始错误消息中的UUID。 - TonyK
好的,在你的虚拟机设置中,你在 "存储" 选项卡下的 IDE\SATA 控制器下有任何 VDI 吗? - yolo
原始虚拟机无法运行到那一步。我认为也许我应该集中精力在新的虚拟机上:问题在于当加载“lfsfilt.sys”驱动程序时它会锁死。这也会发生在“带命令提示符的安全模式”启动期间,因此我无法进入删除它。哦,而且我无法从模拟软盘启动,因为整个磁盘都使用TrueCrypt加密了。 - TonyK
如果删除lfsfilt.sys可以解决问题,我会这么做:创建一个新的WinXP虚拟机并附加两个硬盘 - 新的安装VDI和旧的XP VDI。然后,我会启动新的安装并从旧VDI的硬盘中删除.sys文件。 - yolo
然后我会在boot.ini中添加一个条目,以便能够从旧的XP VDI引导,并查看它是否成功引导。(毕竟,你想访问磁盘来删除.sys文件吗?) - yolo

1

另一个选择是插入Hiren's BootCD的ISO文件,并使用其中一个浏览器/文件管理器来访问磁盘

BootCD还包含Windows 98和XP的迷你版本


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接