如何删除处于GURU_MEDITATION错误状态的virtualbox计算机?


69

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

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

看起来像:

Virtualbox Guru Meditation屏幕截图

请注意,没有电源关闭,甚至“ remove”也变灰了。我相信这与删除目录之前的外观完全相同。

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

vboxmanage controlvm wmf-vagrant_1354733432关机0%... 10%... 20%...

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

VBoxManage取消注册vmwmf-vagrant_1354733432-删除VBoxManage:错误:锁定时无法注销计算机'wmf-vagrant_1354733432'VBoxManage:错误:详细信息:代码VBOX_E_INVALID_OBJECT_STATE(0x80bb0007),组件计算机,接口IMachine,被调用者nsIUnRegister fDelete?(CleanupMode_T)CleanupMode_DetachAllReturnHardDisksOnly:(CleanupMode_T)CleanupMode_DetachAllReturnNone,ComSafeArrayAsOutParam(aMedia))“位于文件VBoxManageMisc.cpp的第160行


如果要移动它,请指定SuperUser。
马修·弗拉申

1
但是,我认为这与编程有关,因为我将它与vagrant(专门用于开发人员的工具)一起使用。
马修·弗拉申

1
好吧,看来我很误会。您可以访问命令行吗?你可以试试VBoxManage controlvm <vm> poweroff吗?VBoxManage list vms提供您现有虚拟机的列表。
Edu 2012年

请重新打开。如果要迁移,请迁移到超级用户。
马修·弗拉申

10
通过杀死VBoxHeadless进程(在OSX上),我能够vagrant destroy成功运行并摆脱此锁定。我曾经ps aux | grep -i virtualbox找到它。
Stephen Emslie

Answers:


140

杀死VBoxHeadless进程并运行“ vagrant destroy

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

killall -9 VBoxHeadless && vagrant destroy


1
+1使用API​​或VBoxManage经常会因锁定异常等原因而失败。(不幸的是)这是我发现终止VBox VM的唯一100%可靠的方法。
史蒂夫·库克2014年

3
如果您正在运行多台计算机,则只需杀死与要销毁的计算机关联的一个进程。
Andrew Miner 2014年

如何杀死它?它在哪个端口上运行?
andilabs

10
要在OS X上将其杀死:ps aux | grep -i virtualbox然后kill -9 <PID>及之后运行vagrant destroy
andilabs 2014年

2
在OSXkillall -9 VBoxHeadlessvagrant destroy工作很好地为我
electblake

13

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

vboxmanage controlvm NAMEOFVM poweroff

NAMEOFVMvboxmanage list vms命令名称更改。

然后注销并删除虚拟机:

vboxmanage unregistervm NAMEOFVM --delete

或手动将其删除:

rm -fr ~/"VirtualBox VMs/NAMEOFVM"

2
(+1)在Linux上,您也拥有vboxmanage(小写字母),因此,我使用:( vboxmanage unregistervm --delete <vm-name>一点点化妆品)
azbarcea

10

我遇到了这个问题。我读过的所有内容都建议您始终应该通过Virtual Box管理Box,而不是直接访问文件。但是,当我有一个无效的框时,unregistervm命令拒绝将其删除,并且无用的破坏操作不起作用。最后,以下过程成功了。

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

然后,我运行此命令以确认包装箱已消失。

VBoxManage list vms

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


3

我的VM处于类似状态

$ 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,我运行并找到了具有相同虚拟机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

终止该进程可以解决问题,并且虚拟机在运行后可以正确启动 vagrant up


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/* 

1

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

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

可能采用的破坏性较小(例如,仅删除这些目录的一部分)。就我而言,幸运的是我当时仅使用一个VM。


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

0

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

希望能帮助到你...


0

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

因此,总而言之,如果您收到超时错误或Vagrant抱怨它无法提供或与Virtual Box相关的任何其他类型的问题,请尝试:

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

祝好运!


0

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

在此处输入图片说明


-1

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

vagrant destroy

并使用以下命令创建VM并重新启动-

vagrant up
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.