Oracle虚拟机无法访问。

63

我正在使用Oracle Virtual Box版本4.2.16 r86992。一切都很好,直到昨天关机后。 今天,它显示无法访问并抛出此错误:

Runtime error opening C:\Users\xxxxxx\VirtualBox VMs\vBoxxxxXubuntu_Beta\vBoxxxxXubuntu_Beta.vbox for reading: -102 (File not found.).  
D:\tinderbox\win-4.2\src\VBox\Main\src-server\MachineImpl.cpp[725] (long __cdecl Machine::registeredInit(void)).

把它修复工作是很好的,这将节省大量时间并恢复配置设置和数据。感谢您的支持。

10个回答

213

如果主机操作系统崩溃或您拔掉电源,未保存的.vbox文件通常会出现此问题。

在以下位置:

C:\Users\xxxxxxx\VirtualBox VMs\vBoxxxxXubuntu_Beta\  

你需要找到两个文件:

  1. vBoxxxxXubuntu_Beta.vbox-prev
  2. vBoxxxxXubuntu_Beta.vbox-tmp

vBoxxxxXubuntu_Beta.vbox-prev 复制到 vBoxxxxXubuntu_Beta.vbox

在 VBox 管理器中选择 vBoxxxxXubuntu_Beta.vbox,右键单击,然后左键单击“刷新”选项。

观察现在它显示为“已关闭”。

现在您可以开始使用了。


6
你救了我,谢谢。(顺便说一下,没有"-tmp"文件。我不得不把它复制到我的vBoxxxxXubuntu_Beta.vbox中,这个文件大小是0字节。) - Bashir
1
我可以确认,这也修复了与 Vagrant 相关的问题 - 它再次能够识别它。 - nickdbush
是的,这个救了我。我不知道-tmp和-prev文件可以更改为.vbox,只因为它们的大小大约11KB...但最后:我查看了-tmp和-prev时间戳;我的-tmp是最新的,所以我将其切换为.vbox。从那里开始它就正常工作了!谢谢。 - Shawn_Fan
这一开始没有成功。我不得不从VM管理器中删除VM,然后双击重命名的.vbox文件,它才开始运行。感谢您的答案。 - Senthil A Kumar

29

根据我的经验,我在Windows 7上运行Virtual Machine,并作为客户机运行Ubuntu 14.04。

  1. 进入VirtualBox文件夹 (在我的情况下):C:\Users\Dev12\VirtualBox VMs\Ubuntu
  2. 你会看到文件的扩展名:Ubuntu.vbox-tmp或者Ubuntu.vbox-prev
  3. 从文件名Ubuntu.vbox-tmp中删除-tmp,使其变成Ubuntu.vbox
  4. 退出Virtual Machine并重新启动
  5. 你应该现在看到错误已经消失了。

这对我有用,我尝试复制并创建一个新文件,但有效的方法是重命名tmp文件。 - roxdurazo
谢谢,那对我有用,我认为这应该被接受为答案。 - Chandra Shekhar

5

带有.vbox扩展名的虚拟机文件包含虚拟机监视器需要解析客户操作系统配置所需的元数据。

如果主要的.vbox文件已损坏(即报告为空),则使用备份的.vbox-prev文件来恢复原始文件的内容。

方法是将空的.vbox文件重命名为临时名称(例如,将originalVM.vbox重命名为originalVM-empty.vbox)

然后复制backup文件originalVM.vbox-prev,副本将具有相同的名称,但附加了单词“copy” (即将originalVM.vbox-prev重命名为originalVM(copy).vbox-prev)。

保留原始备份的.vbox-prev文件非常重要,不应更改或自行重命名。

现在去将新创建的.vbox-prev文件的副本originalVM(copy).vbox-prev重命名为空的.vbox文件的原始名称,并注意将其扩展名从.vbox-prev更改回.vbox。

也就是将originalVM(copy).vbox-prev重新命名为originalVM.vbox。这样做后,您可以将.vbox文件(客户操作系统)添加回VBOX监视器中
这将恢复“无法访问”的客户VM的状态和快照。现在删除原始空的.vbox文件。


2

我曾在Windows 7上安装VirtualBox 5.1的CentOs 6.8中遇到同样的问题,AjayKumarBasuthkar的解决方案对我非常有效:

  1. 进入C:\Users\\VirtualBox VMs\CentOS6.8
  2. 复制文件CentOS6.8.vbox-prev并将其重命名为CentOS6.8.vbox
  3. 进入VirtualBox GUI,右键单击VM实例并点击刷新
  4. CentOS实例从“不可访问”状态变为“已关闭”状态

1

我遇到了同样的问题,在Oracle VirtualBox 4.3.28和Ubuntu 14.04 LTS中,当VirtualBox虚拟机关闭时,我通过以下方式解决了这个问题:

  1. 将ubuntu.vbox文件移到virtual box文件夹之外的另一个文件夹中

  2. 删除ubuntu.vbox-prev文件名中的“-prev”

  3. 启动Oracle VirtualBox,它运行得非常好。


1
VirtualBox 4.3已发布,您是否已经更新或在更新过程中遇到了一些问题?
无论如何,如果您无法启动Virtualbox,请记得备份VirutalBox VMs文件夹,并进行全新安装可能是最好的解决方法。

1
在Windows 7主机上,我发现Daemon Tools服务占用了该文件。
解决方案是卸载Daemon Tools,但我怀疑如果停止服务并删除文件关联,问题也可以得到解决。

0

这听起来很蠢,但尝试重新安装 VB。这可能会起作用。


0
另一个问题可能是如果你的虚拟机在外部硬盘上,那么它的驱动器号可能会变化。如果是这样,在电脑管理中选择该硬盘并右键单击更改驱动器号并保存(请注意,这仅适用于Windows操作系统)。

0

我在之前的优秀回答中添加了一条关键且重要的评论。在从.vbox-prev文件复制内容之前,请确保原始的.vbox文件已经损坏并为空。如果不是这种情况,而是发现它有行和可读内容,请勿替换.vbox的内容

在虚拟机变得无法访问之前直接对虚拟机进行的更改可能不会更新到.vbox-prev备份文件中。在操作系统升级或导致无法访问问题的系统更改之前,这些更改可能无法与那些更改同步。

如果您在操作系统升级或系统更改后发现虚拟机无法访问,请首先检查.vbox文件是否仍然可以被文本编辑器读取,并且它具有行。然后,您只需要从VirtualBox管理器列表中删除虚拟机(仅删除列表中的应用程序,不要删除文件)。然后重新打开.vbox文件,它应该可以完美地工作。

如果在使用文本编辑器打开原始的.vbox文件时发现其已损坏或为空,则只有在这种情况下,您才可以从.vbox-prev中复制内容并按照突出显示的说明进行操作。

这是我的经验,我想与您分享,以避免在操作系统升级或崩溃之前丢失一些最后一刻的更改。


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