"vagrant up"失败:Vagrant虚拟机未能保持运行状态。

3
命令 vagrant up 失败了,我不知道原因。
$ egrep -v '^ *(#|$)' Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "precise32"
end
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'precise32'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
The VM failed to remain in the "running" state while attempting to boot.
This is normally caused by a misconfiguration or host system incompatibilities.
Please open the VirtualBox GUI and attempt to boot the virtual machine
manually to get a more informative error message.
$ vagrant status
Current machine states:

default                   poweroff (virtualbox)

The VM is powered off. To restart the VM, simply run `vagrant up`
$ VBoxManage list runningvms
$

这是VirtualBox日志文件VBoxSVC.log中的消息:
$ cat ~/.VirtualBox/VBoxSVC.log
VirtualBox XPCOM Server 4.2.16 r86992 linux.amd64 (Jul  4 2013 16:29:59) release log
00:00:00.000499 main     Log opened 2013-08-13T18:40:45.907580000Z
00:00:00.000508 main     OS Product: Linux
00:00:00.000509 main     OS Release: 3.6.11-4.fc16.x86_64
00:00:00.000510 main     OS Version: #1 SMP Tue Jan 8 20:57:42 UTC 2013
00:00:00.000537 main     DMI Product Name: X8DA3
00:00:00.000547 main     DMI Product Version: 1234567890
00:00:00.000647 main     Host RAM: 24103MB total, 17127MB available
00:00:00.000654 main     Executable: /usr/local/VirtualBox/VBoxSVC
00:00:00.000655 main     Process ID: 9417
00:00:00.000656 main     Package type: LINUX_64BITS_GENERIC
00:00:00.110125 nspr-2   Loading settings file "/opt/tomcat/.VirtualBox/VirtualBox.xml"     with version "1.12-linux"
00:00:00.110817 nspr-2   Failed to retrive disk info: getDiskName(/dev/md126p1) --> md126p1
00:00:00.264367 nspr-2   VDInit finished
00:00:00.275173 nspr-2   Loading settings file "/opt/tomcat/VirtualBox VMs/vagrant_getting_started_default_1376419129/vagrant_getting_started_default_1376419129.vbox" with version "1.12-linux"
00:00:05.288923 main     ERROR [COM]: aRC=VBOX_E_OBJECT_IN_USE (0x80bb000c) aIID={29989373-b111-4654-8493-2e1176cba890} aComponent={Medium} aText={Medium '/opt/tomcat/VirtualBox VMs/vagrant_getting_started_default_1376419129/box-disk1.vmdk' cannot be closed because it is still attached to 1 virtual machines}, preserve=false
00:00:05.290229 Watcher  ERROR [COM]: aRC=E_ACCESSDENIED (0x80070005) aIID={3b2f08eb-b810-4715-bee0-bb06b9880ad2} aComponent={VirtualBox} aText={The object is not ready}, preserve=false
$ 

任何建议都将不胜感激。

你尝试过按照建议从VirtualBox GUI手动启动虚拟机吗?从错误信息看,似乎无法访问磁盘映像。 - AlexD
我尝试了VirtualBox的图形用户界面,但它并没有提供更清晰的信息。 - Steve Emmerson
你尝试过通过 VAGRANT_LOG=info vagrant up 启用调试吗?这应该会输出一些有用的信息。顺便说一下:确保你使用的是最新版本的 Vagrant,目前是 1.2.7。 - Terry Wang
Terry,是的,我尝试了VAGRANT_LOG=info...问题不在于Vagrant,而在于VirtualBox。 - Steve Emmerson
5个回答

11

2

我通过重新安装VirtualBox并将自己加入vboxusers组来解决了问题。重新安装过程中会打印一条消息,指示VM用户必须是该组的成员。我不知道重新安装是否必要,或者仅添加到该组是否足够。


1
对我来说,重新启动就足够了,请参见下面的答案。 - joost

2

主机是32位的(Ubuntu),而客户机是64位的。我将客户机更改为32位后,问题得到了解决。


那正是我的问题。 - Jan Bouchner
那就是问题的根源。 - hailton

0

我的理解是vboxusers组与在虚拟机中访问USB设备有关。不确定为什么它会引起问题。通常情况下,作为vagrant基础盒子构建指南,音频和USB都被禁用。

根据VirtualBox手册 => vboxusers组

Linux安装程序在安装过程中创建系统用户组vboxusers。任何要从VirtualBox客户机使用USB设备的系统用户都必须是该组的成员。可以通过GUI用户/组管理或使用sudo usermod -a -G vboxusers username命令行将用户添加到vboxusers组。

请注意,将活动用户添加到该组将需要该用户注销并重新登录。在成功安装软件包后,应手动执行此操作。


0

我曾经遇到过同样的问题。这是因为我在提供程序部分的Vagrantfile上进行了错误的配置。我试图让我的虚拟机更加强大,使用了2个CPU,但实际上我的主机只有一个。 当你尝试给虚拟机添加更多硬件时,如果你的主机不符合最低要求,就会经常出现这种情况。


我配置了一个只有1个CPU的最小虚拟机。重新安装VirtualBox解决了问题。 - Steve Emmerson

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