几个月来,我在Ubuntu 16 guest虚拟机的Windows 10主机上成功使用了VirtualBox 5.xx.xx和Vagrant 2.xx(不记得其他版本号)。在过去的六个星期的某个时刻,在vagrant up
上,Guest Additions开始被报告为主机和来宾的不同版本,并且我对来自Windows端的同步文件所做的更改并不总是在Ubuntu上实现。为了尝试解决这个问题,我将Vagrant升级到最新版本,然后尝试将VirtualBox从5.0.18(在vagrant up
上生成错误)升级并降级到最新版本(6.0.4)。尝试5.2.24和5.2.26在Vagrant启动时产生消息,说明主机上的Guest Additions报告为5.0.18,但客人报告为5.2.24(或.26)。然后最后一条启动消息表明,Virtualbox版本为5.2,Guest Additions版本为5.1.30 - 所以有时我总共报告了三种不同版本的Guest Additions。我安装了vagrant-vbguest插件。我为VBox版本下载了匹配的Guest Additions ISO版本,并将Guest Additions ISO加载到VirtualBox中的虚拟光驱中(以及我的Vagrantfile中指定的config.vbguest.iso_path = "VBoxGuestAdditions_5.x.x.iso"
)。
我的Vagrant / VirtualBox设置可能在最后一年都运行良好,我从来不想“升级”,因为我在“升级”到新版本之前已经经历过这个烂摊子。从网上搜索太长时间,我很确定这个问题是由于我对Ubuntu(我经常这样做)的升级造成的,因为我很长一段时间没有在Vagrant / VBox设置中做任何改变。我希望升级到最新的VirtualBox(6)可以解决这个问题,但遗憾的是,这个版本更糟糕 - Ubuntu在启动过程中慢慢摇晃,而且它已经花了很长时间,我甚至没有让它完成经过多次尝试。
很高兴看到这个最新的VirtualBox 6是否可以解决问题,所以也许有人知道为什么会这么慢(我有一个8核16Gb机器,我已经分配了4个核心和足够的RAM到VBox - 它在5.2.xx下启动很好。
vagrant up
输出:
SSH用户名:vagrant
SSH身份验证方法:私钥
警告:连接重置。重试...
默认:机器启动并准备就绪!得到关于已安装的GuestAdditions版本的不同报告:主机上的Virtualbox声明:5.0.18 vm声明中的VBoxService:5.2.26继续,假设VBoxService正确...
GuestAdditions似乎正确安装(5.2.26),但没有运行。有关已安装的GuestAdditions版本的不同报告:主机声明中的Virtualbox:5.0.18 vm声明中的VBoxService:5.2.26
继续,假设VBoxService正确...
vboxadd-service.service的作业失败,因为控制进程退出并显示错误代码。有关详细信息,请参阅“systemctl status vboxadd-service.service”和“journalctl -xe”。
得到关于已安装的GuestAdditions版本的不同报告:主机上的Virtualbox声明:5.0.18 vm声明中的VBoxService:5.2.26继续,假设VBoxService正确... bash:第4行:setup:命令未找到
检查VM中的guest虚拟机添加内容...
此VM上的guest虚拟机添加内容与VirtualBox的已安装版本不匹配!在大多数情况下,这很好,但在极少数情况下,它可以防止共享文件夹等工作正常工作。如果您看到共享文件夹错误,请确保虚拟机中的guest虚拟机添加项与您在主机上安装的VirtualBox版本匹配,然后重新加载VM。
Guest Additions版本:5.1.30
VirtualBox版本:5.2以下SSH命令以非零退出状态响应。 Vagrant认为这意味着命令失败了!
经过几个小时的搜索和尝试不同的建议,以下是解决问题的方法:
config.vbguest.iso_path = "https://www.virtualbox.org/download/testcase/VBoxGuestAdditions_5.2.27-129578.iso"
vagrant up
Ubuntu启动正常,但在主机端Vagrant显示的错误信息如下:
无法在Linux guest虚拟机中装入文件夹。这通常是因为“vboxsf”文件系统不可用。
接下来,在启动的Ubuntu客户端上:
sudo apt autoremove
清理Linux头文件然后:
vagrant vbguest
vbguest然后经历了卸载现有Guest Additions并从config.vbguest.iso_path
安装VBoxGuestAdditions_5.2.27的过程。
要验证是否正确安装了Guest Additions,请运行vagrant vbguest --status
(或再次运行vagrant vbguest
)。两个命令都返回:
[默认] GuestAdditions 5.2.27正在运行---好的。
上述操作导致名为VBoxGuestAdditions-5.2.27
的文件夹放在/opt
文件夹中。这个VBoxGuestAdditions-5.2.27
文件夹有七个子文件夹,两个文件(uninstall.sh和routines.sh)和一个LICENSE文件。我找不到关于vagrant-vbguest将已安装的项目放入/opt
文件夹的文档,但我确实找到了一个小提及here。
我怀疑这个过程适用于任何5.2.xx版本(可用的here),但我已经安装了5.2.27,所以继续这样做。
在将laravel / homestead box更新为v7.2.1后,我遇到了同样的问题。 This blog post帮助我解决了这个问题。
总之,这是你必须做的:
Vagrantfile
的目录并运行vagrant plugin install vagrant-vbguest
我第一次执行命令时,它禁用了我的WiFi适配器,安装失败。如果发生这种情况,请重新激活它并重新运行该命令。
vagrant up
启动虚拟机。它将更新Guest Additions