Vagrant 卡在“等待 VM 启动”
Posted
技术标签:
【中文标题】Vagrant 卡在“等待 VM 启动”【英文标题】:Vagrant stuck in "Waiting for VM to Boot" 【发布时间】:2014-09-22 04:19:28 【问题描述】:我想先提到这个问题,我确实已经查看了大多数(如果不是全部)流浪的“等待 VM 启动”故障排除线程:
我尝试过的方法包括:
vagrant failed to connect VM
https://superuser.com/questions/342473/vagrant-ssh-fails-with-virtualbox
https://github.com/mitchellh/vagrant/issues/410
http://vagrant.wikia.com/wiki/Usage
http://scotch.io/tutorials/get-vagrant-up-and-running-in-no-time
还有更多。
这是我设置我的 Vagrant 的方法:
注意:我们正在使用 Vagrant 1.2.2,因为我们目前没有时间将配置更改为新版本。我也在使用 VirtualBox 4.2.26。
-
我的办公室有一个
/official/
文件夹,其中包含诸如Vagrantfile
之类的内容。在我的Vagrantfile
中有这些自定义设置:
config.vm.box = "my_box" config.ssh.private_key_path = "~/.ssh/github_rsa" config.ssh.forward_agent = true config.ssh.forward_x11 = true config.ssh.max_tries = 300 config.vm.provision :shell, :inline => "/etc/init.d/networking restart"
我通过vagrant box add my_box absolute_path/package.box
安装了我们的自定义盒子(称为package.box
),运行顺利。
运行vagrant up
,我会查看VirtualBox 的“预览”,它只会卡在登录页面。我的终端也只会说:Waiting for VM to boot. This can take a few minutes.
据我所知,这是一个 SSH 问题。或者我的私钥问题,尽管在我的Vagrantfile
中我明确指出了我的私钥位置。
有趣的笔记:
在 VirtualBox GUI 中运行 dhclient
,它说找不到命令。运行sudo dhclient eth0
是建议的修复方法之一。
此修复:https://superuser.com/a/343775/298915 的“修改 /etc/rc.local
文件以在 exit 0
之前包含行 sh /etc/init.d/networking restart
。”没有解决问题。
结论:
尝试重新安装所有东西,以为我搞砸了文件,但似乎并没有改善问题。我无法解决这个问题。有人能给我一些见解吗?
【问题讨论】:
【参考方案1】:因此,经过大约 12 个小时的沮丧故障排除后,我能够(最终)启动虚拟机。
Setup your private/public keys 使用提供的链接。我的盒子是Debian Linux 3.2.0-4-amd64
,所以你必须使用/home/vagrant/.ssh/id_rsa.pub
(以及私钥的相应id_rsa
路径)而不是/root/.ssh/id_rsa.pub
。
注意:确保您的文件具有正确的权限。使用ls -l path
进行检查,使用chmod
进行更改。你的机器可能没有/home/vagrant/.ssh/authorized_keys
,所以用touch /home/vagrant/.ssh/authorized_keys
生成那个文件。
使用 VirtualBox GUI 启动 VM(通过 Vagrantfile
boot-GUI 命令,或使用 VirtualBox 启动 VM)。出现提示时使用vagrant
和vagrant
登录。
在 GUI 中,使用 sudo dhclient eth0 -v
手动启动 dhclient。 为什么默认关闭?我不知道。我在上面的教程中尝试wget
私钥/公钥时发现它已关闭,但无法。
转到本地计算机的命令行并使用 vagrant reload
重新加载 vagrant。它应该启动,并且不再挂在“等待 VM 启动”。
这对我有用。尽管对于其他机器可能会有所不同,但无论出于何种原因 Vagrant 喜欢破坏。
建议:可以把这个保存为脚本,这样我们就不需要每次都手动执行了吗?
编辑:更新到最新版本的 Vagrant,您将永远不会再看到此问题。是时候了吧?
【讨论】:
感谢分享解决方案。只是为我节省了很多时间。在我的情况下需要注意的一件事:我第一次运行vagrant reload
时仍然在第一步被挂断。我在 VirtualBox GUI 中手动关闭了 VM,然后vagrant reload
工作了。不知道为什么。以上是关于Vagrant 卡在“等待 VM 启动”的主要内容,如果未能解决你的问题,请参考以下文章
vagrant系列教程:vagrant的配置文件vagrantfile详解(转)