71

如何删除处于 GURU_MEDITATION 错误状态的 VirtualBox 机器?仅在 VirtualBox 未运行时删除目录就足够了吗?

编辑:发布后,我删除了“在文件管理器中显示”导航到的整个目录。

看起来像:

Virtualbox Guru Meditation 截图

注意没有断电,连remove都是灰色的。我相信这与删除目录之前的外观完全相同。

编辑2:我在删除文件后尝试了命令行关机。它挂起:

vboxmanage controlvm wmf-vagrant_1354733432 poweroff 0%...10%...20%...

编辑 3:它也无法从命令行注销它:

VBoxManage unregistervm wmf-vagrant_1354733432 --delete VBoxManage:错误:无法注销机器'wmf-vagrant_1354733432',而它被锁定VBoxManage:错误:详细信息:代码VBOX_E_INVALID_OBJECT_STATE(0x80bb0007),组件机器,接口IMachine,被调用者nsISupports上下文:“取消注册( fDelete ? (CleanupMode_T)CleanupMode_DetachAllReturnHardDisksOnly : (CleanupMode_T)CleanupMode_DetachAllReturnNone, ComSafeArrayAsOutParam(aMedia))" 在文件 VBoxManageMisc.cpp 的第 160 行

4

11 回答 11

144

杀死 VBoxHeadless 进程并运行“ vagrant destroy

使用“killall”命令销毁 vagrant 并发送 kill 信号如下所示:

killall -9 VBoxHeadless && vagrant destroy

于 2013-03-02T14:36:56.957 回答
14

如果您无法从 VirtualBox GUI 关闭机器,请尝试从命令行使用vboxmanage命令(VBoxManage在 OS X 上),例如:

vboxmanage controlvm NAMEOFVM poweroff

NAMEOFVM使用命令中的名称进行更改vboxmanage list vms

然后注销并删除虚拟机:

vboxmanage unregistervm NAMEOFVM --delete

或者手动删除:

rm -fr ~/"VirtualBox VMs/NAMEOFVM"
于 2016-03-17T15:24:41.740 回答
10

我遇到了这个问题。我阅读的所有内容都建议您始终通过 Virtual Box 管理这些盒子,而不是直接访问文件。但是当我有一个无效的盒子时, unregistervm 命令拒绝删除它并且 vagrant destroy 不起作用。最后,以下过程奏效了。

  1. 杀死所有正在运行的 VBox* 进程
  2. 从文件夹“VirtualBox VMs”中删除文件夹“boxname”
  3. 编辑文件“VirtualBox.xml”,去掉无效框对应的标签。

然后我运行这个命令来验证盒子已经消失了。

VBoxManage list vms

之后,我能够创建一个具有相同名称的新虚拟机。

于 2014-09-26T00:48:39.160 回答
4

我有一个处于类似状态的虚拟机

$ vagrant up

Bringing machine 'tempu' up with 'virtualbox' provider...
==> mms: Checking if box 'hashicorp/precise64' is up to date...
==> mms: Resuming suspended VM...
==> mms: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "9fcf2203-d4b3-47a1-a307-61bfa580bd28", "--type", "headless"]

Stderr: VBoxManage: error: The machine 'temp-ubuntu' is already locked by a session (or being locked or unlocked)
VBoxManage: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component Machine, interface IMachine, callee nsISupports
VBoxManage: error: Context: "LaunchVMProcess(a->session, sessionType.raw(), env.raw(), progress.asOutParam())" at line 592 of file VBoxManageMisc.cpp

我寻找了一个名为 的进程VBoxHeadless,但它没有运行。

然后我运行ps并发现这个进程具有相同的 vm id:

$ ps aux | grep -i virtualbox
user      63466   0.0  0.1  2523608   8396   ??  S     9:36am   0:02.67 /Applications/VirtualBox.app/Contents/MacOS/VBoxManage showvminfo 9fcf2203-d4b3-47a1-a307-61bfa580bd28 --machinereadable

杀死该进程解决了问题,并且VM在运行后正确启动vagrant up

于 2015-03-16T16:38:30.280 回答
3

这是我绝望时使用的脚本。它会尽可能多地从机器上擦除任何 VM 的痕迹:

VBoxManage list runningvms | awk '{print $2}'  | xargs --no-run-if-empty -t -n1 -IXXX VBoxManage controlvm XXX poweroff                                                           
VBoxManage list vms | awk '{print $2}'  | xargs --no-run-if-empty -t -n1 VBoxManage unregistervm                                                                                  
killall -9 VBoxHeadless                                                                                                                                                           
rm -rf ~/Virtualbox\ VMs/* 
于 2016-11-01T08:38:02.053 回答
1

我在 64 位多处理器主机上使用 Debian Wheezy。我最终能够通过删除所有 VirtualBox 数据来解决它(尽管您不需要删除 Vagrant 基础框):

  1. 如果正在运行,请关闭 Virtualbox
  2. sudo apt-get remove --purge virtualbox
  3. 移动或删除 ~/.VirtualBox 和 ~/VirtualBox\ VMs/。如果您不确定,请将它们备份到安全的地方。
  4. 重新开始。
  5. 重新安装虚拟机。
  6. 像往常一样使用 virtualbox/vagrant。

可能有一种破坏性较小的方式(例如,仅删除这些目录的一部分)。就我而言,幸运的是当时我只使用了一个虚拟机。

于 2012-12-08T23:04:54.480 回答
1

就我而言,我想通过命令行删除我系统上当前拥有的所有 Vagrant 框,我这样做了:

$ vagrant box list | cut -f 1 -d ' ' | xargs -L 1 vagrant box remove -f --all

当然,在确保不再附加进一步的过程之后:

killall -9 VBoxHeadless && vagrant destroy
No matching processes belonging to you were found
于 2018-10-23T11:52:32.197 回答
0

我一直在努力解决之前使用 Vagrant 创建的冻结 Virtual Box 实例。幸运的是找到了类似票证中提到的解决方案

因此,回顾一下,如果您收到超时错误或 Vagrant 抱怨它无法提供或任何其他与 Virtual Box 相关的问题,请尝试:

  1. 首先列出虚拟盒子实例:VmboxManage list vms
  2. 使用前一个命令的 id|names 停止虚拟盒实例:VBoxManage startvm VMNAME/id --type emergencystop
  3. 列出 vagrant 框vagrant box list
  4. 删除一个或多个导致问题的 vagrant 框:vagrant remove box ${box-name}
  5. 之后,再试vagrant up一次,希望你能恢复正常。

祝你好运!

于 2020-10-13T09:34:47.690 回答
0

在 Windows 10 上,我解决了设置默认防火墙配置的问题。

希望能帮助到你...

于 2016-02-16T23:45:52.357 回答
0

打开任务管理器或系统监视器并将鼠标悬停在 VBoxHeadless 上以查看 VM 的名称并终止进程。现在您可以使用 VirtualBox Manager GUI 删除 VM。

在此处输入图像描述

于 2020-10-22T13:02:42.303 回答
-1

您可以使用以下命令从虚拟框中删除 VM-

vagrant destroy

并使用以下命令创建虚拟机并重新启动 -

vagrant up
于 2016-01-20T18:33:45.547 回答