由于此错误,我在虚拟机中的VM无法启动,我不想销毁它并重新安装它,无论如何要恢复它?
执行VBoxManage
时出错,这是Vagrant用于控制VirtualBox的CLI。命令和stderr如下所示。
Command: ["modifyvm", "319fcce3-e8ff-4b6f-a641-3aee1df6543f", "--natpf1", "delete", "ssh"]
Stderr: VBoxManage: error: The machine 'centos64_c6402_1454036461345_59755' is already locked for a session (or being unlocked)
VBoxManage: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component MachineWrap, interface IMachine, callee nsISupports
VBoxManage: error: Context: "LockMachine(a->session, LockType_Write)" at line 493 of file VBoxManageModifyVM.cpp
在命令行上运行此操作可以解锁VM:
vboxmanage startvm <vm-uuid> --type emergencystop
其中<vm-uuid>
是错误消息中的数字:Command: ["modifyvm", "<vm-uuid>" [...]
。之后,我能够控制VM(启动,暂停等)。在Ubuntu上使用Virtualbox 4.1。
在我的情况下,明显的原因是挂起机器后已删除的USB以太网适配器。就我而言,
sudo pkill -9 VBox
没有帮助。相反,我收到了令人困惑的消息
vboxmanage startvm <vm-uuid> --type emergencystop
跑步揭示了真正的错误
VBoxManage: error: The machine 'xyzzy' is not locked by a session
哪个回来了
vboxmanage startvm <vm-uuid> --type gui
将网络配置更改为其他网络适配器解决了该问题。
遇到同样的问题我发现有一个进程实际上锁定了vm:
501 79419 79323 0 2:18PM ?? 0:39.75 /Applications/VirtualBox.app/Contents/MacOS/VBoxHeadless --comment default --startvm 1d438a2e-68d7-4ba2-bef9-4ea162913c1b --vrde config
确保您没有尝试启动虚拟机的进程:
ps -ef | grep -i "vbox"
对我来说,我不得不在任务管理器中杀死VboxHeadless.exe进程。我还必须确保在管理模式下打开CMD提示。
在Windows任务管理器中,我结束了与Virtual Box相关的任何任务(您可以看到它们以任务管理器中的V开头,如Vbox Headless.exe等)。一旦我这样做了,我就能得到这个错误消失(上面的'vboxmanage startvm ......等等......'这里的解决方案对我来说不起作用)。
我发现@Gonzalez的答案非常有趣
vboxmanage startvm <vm-uuid> --type emergencystop
它关闭我的VM的当前实例的唯一问题是,如果当前的vm正在运行,则可以使用modifyvm
而不是使用controlvm
。
例如:
VBoxManage modifyvm <vm_name> --natpf1 "guestssh,tcp,,22,,2222"
VBoxManage modifyvm <vm_name> --natpf1 delete "guestssh"
成为:
VBoxManage controlvm <vm_name> natpf1 "guestssh,tcp,,22,,2222"
VBoxManage controlvm <vm_name> natpf1 delete "guestssh"
完整文档在这里qazxsw poi
如果您在VirtualBox GUI中为该框打开了设置窗口,则可能会遇到此错误。只需关闭设置窗口,然后重试。
我今天遇到了同样的错误消息:
https://www.virtualbox.org/manual/ch08.html#vboxmanage-controlvm
Gergely的答案完美地解决了这个问题。事实证明,我在重新启动时设置了一个crontab来启动虚拟机,这启动了上面显示的三个VBox进程
>me@myhost:~$ ps -ef | grep -i "vbox"
me 3064 1 0 08:51 ? 00:00:00 /usr/lib/virtualbox/VBoxXPCOMIPCD
me 3089 1 0 08:51 ? 00:00:00 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
me 3126 3089 27 08:51 ? 00:00:39 /usr/lib/virtualbox/VBoxHeadless --comment RHEL5 64-bit desktop --startvm e5c598d8-1234-4003-a7c1-b9d8af15dfe7 --vrde config
me 3861 3415 0 08:53 pts/1 00:00:00 grep --color=auto -i vbox*
me@myhost:~$ crontab -l
@reboot me /usr/bin/vboxmanage startvm "RHEL5 64-bit desktop" --type headless
杀死与vbox相关的所有内容
对我有用的唯一选择是杀死所有匹配ps axl | grep -i vbox的进程。