我使用的是Oracle Virtual Box版本4.2.16 r86992。一切都很好,直到昨天关闭。今天,它显示无法访问并抛出以下错误:
Runtime error opening C:UsersxxxxxxVirtualBox VMsvBoxxxxXubuntu_BetavBoxxxxXubuntu_Beta.vbox for reading: -102 (File not found.).
D:tinderboxwin-4.2srcVBoxMainsrc-serverMachineImpl.cpp[725] (long __cdecl Machine::registeredInit(void)).
将其恢复到工作状态很好,这将节省大量时间并恢复配置设置和数据。感谢您的支持。
如果主机操作系统崩溃或拔下插头,导致.vbox文件未保存,则通常会发生这种情况。
在位置:
C:UsersxxxxxxxVirtualBox VMsvBoxxxxXubuntu_Beta
你应该找到两个文件:
vBoxxxxXubuntu_Beta.vbox-prev
vBoxxxxXubuntu_Beta.vbox-tmp
将vBoxxxxXubuntu_Beta.vbox-prev
复制到vBoxxxxXubuntu_Beta.vbox
。
选择vBoxxxxXubuntu_Beta.vbox
,在VBox管理器中,右键单击,然后左键单击刷新。
观察它现在显示Powered Off。
现在你可以走了。
根据我的经验,我在Windows7上运行Ubuntu 14.04作为虚拟机上的访客操作系统。
- 转到您的Virtualbox文件夹(在我的情况下):
C:UsersDev12VirtualBox VMsUbuntu
- 您将看到扩展名为
Ubuntu.vbox-tmp
或Ubuntu.vbox-prev
的文件 - 从文件名
Ubuntu.vbox-tmp
中删除-tmp
,使其读作Ubuntu.vbox
- 退出虚拟机并重新启动它
- 您现在应该看到错误消失了
扩展名为.vbox的虚拟机文件包含virtualbox系统管理程序解析来宾虚拟操作系统配置所需的元数据。
如果主.vbox文件已损坏(即报告为空),则使用备份.vbox prev文件恢复原始文件的内容。
将空.vbox文件重命名为临时名称(例如,将originalVM.vbox重命名为originalVM empty.vbox).
然后复制备份文件originalVM.vbox-prev,其中该副本将与原始文件同名,但会附加单词"copy">(即originalVM.vbox-prev重命名为originalVM(copy).vbox-previ)。
保留原始备份.vbox-prev文件非常重要,不应更改该文件或对其本身进行重命名
现在转到将新创建的.vbox prev文件的副本重命名为空.vbox文件的原始名称
这就是将originalVM(副本).vbox-prev重命名回originalVM.vbox。现在完成了这一操作,您可以将.vbox文件(来宾操作系统)添加回vbox系统管理程序
这将恢复"无法访问"的来宾虚拟机的状态和快照。现在删除原始的空.vbox文件。
我在安装在Windows 7中的VirtualBox 5.1上使用CentOs 6.8时遇到了同样的问题,AjayKumarBasuthkar的解决方案对我来说非常适用:
- 我去了C:\Users\\VirtualBox VMs\CentOS6.8
- 复制文件CentOS6.8.vbox-prev,并将其命名为CentOS6.8vbox
- 转到VirtualBox GUI,右键单击VM实例并点击刷新
- CentOS实例从"无法访问"状态变为"关闭电源">
VirtualBox 4.3发布了,可能是您更新了还是在更新时出现了一些问题?
在任何情况下,如果您无法打开Virtualbox,请记住备份VirutalBox VM文件夹,重新安装应该是最好的方法。
我遇到了同样的问题,当虚拟机关闭时,我在Ubuntu 14.04 LTS的Oracle虚拟机4.3.28中执行了以下操作,解决了这个问题。
-
将ubuntu.box删除到虚拟盒文件夹之外的另一个文件夹
-
已从文件ubuntu.box-prev 中删除-prev
-
启动oraclevirtualbox,它非常有效。
在Windows 7主机上,我发现Daemon Tools服务保留了该文件。
解决方案是卸载守护程序工具,但我怀疑如果你停止服务并删除文件关联,你会被排序。
另一个问题可能是,如果您的虚拟机位于外部硬盘驱动器上,则驱动器号可能已更改。如果是,请转到"计算机管理",选择硬盘驱动器,然后右键单击以更改驱动器号并保存(请注意,这适用于Windows)。
这听起来很愚蠢,但试着重新安装VB。它可能会起作用。
我在前面的精彩回答中添加了一条重要的评论。在从.vbox-prev文件复制内容之前,请确保原始.vbox文件已损坏且为空。如果不是这样,并且您发现它包含行和可读内容,则不要替换.vbox.的内容
在虚拟机变得不可访问之前直接对虚拟机所做的更改可能不会在.vbox prev备份文件中更新。在操作系统升级或系统更改导致无法解决的问题之前,这些更改无法与这些更改同步。
如果在操作系统升级或系统更改后发现您的虚拟机不可访问,请首先检查.vbox文件是否仍然可以被文本编辑器读取,并且它有行。然后,您只需要从VirtualBox管理器列表中删除VM(只需从列表中删除设备,而不删除文件)。然后重新打开.vbox文件,它应该可以正常工作。
如果使用文本编辑器打开原始.vbox文件时,该文件已损坏或为空,则只能从.vbox prev中复制内容,并按照突出显示的说明进行操作。
这是我的经验,我想与大家分享,以避免在操作系统升级或崩溃前丢失一些最后一分钟的更改。