更新
在 VirtualBox 5.1.22 中修复。
(https://www.virtualbox.org/ticket/16670)
原始答案
在我的情况下,VM 内的符号链接是错误的。登录到虚拟机:
$ vagrant ssh
然后:
$ ls -lh /sbin/mount.vboxsf
lrwxrwxrwx 1 root root 49 Apr 19 14:05 /sbin/mount.vboxsf -> /opt/VBoxGuestAdditions-5.1.20/other/mount.vboxsf
此链接已损坏。当您查看 /opt/VBoxGuestAdditions-5.1.20/ 内部时,您会看到子文件夹“other”不存在。此行修复了:
$ sudo ln -sf /opt/VBoxGuestAdditions-*/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
现在注销VM:
$ exit
并检查它是否适合您:
$ vagrant reload
但我无法修复链接,因为 /sbin/mount.vboxsf 在我的盒子里不存在!
如果链接 /sbin/mount.vboxsf 首先不存在,则无法安装 VBoxGuestAdditions。如果您在更新 VirtualBox 后没有下载匹配的 VirtualBox 扩展包(v5.2.18 及更高版本应在 Virtualbox 更新期间自动下载),则可能会发生这种情况。您现在可以这样做:
- 停止所有正在运行的虚拟机。
- 打开 VirtualBox 程序。
- 开始下载 VirtualBox Extension Pack 并安装它。
- 如果没有询问您是否要下载 VirtualBox 扩展包,请打开 -> 文件 -> 检查更新,以触发下载对话框。
如果 VirtualBox Extension 没有更新,则可能无法安装 VBoxGuestAdditions,因为安装程序会显示一条消息,并且 vagrant 插件 vbguest 无法提示答案(这在 vbguest v0.15.0 中已“修复”)。您可以在“vagrant up”的输出中看到这一点。应该有一行与此类似:
Do you wish to continue? [yes or no]
如果是这种情况,您可以手动运行安装程序。为此,请启动该框:
$ vagrant up
然后触发 vbguest 再次尝试安装,但之后安装 VBoxGuestAdditions ISO:
$ vagrant vbguest --do install --no-cleanup
登录框:
$ vagrant ssh
手动运行安装程序:
$ sudo /mnt/VBoxLinuxAdditions.run
最后的希望:DIY!
如果上述方法均无效,请尝试手动安装来宾添加:
cd /opt
sudo wget -c http://download.virtualbox.org/virtualbox/5.1.28/VBoxGuestAdditions_5.1.28.iso -O VBoxGuestAdditions_5.1.28.iso
sudo mount VBoxGuestAdditions_5.1.28.iso -o loop /mnt
sudo sh /mnt/VBoxLinuxAdditions.run