Virtualbox 共享文件夹从 fstab 挂载失败;启动完成后即可工作

Virtualbox 共享文件夹从 fstab 挂载失败;启动完成后即可工作

我在 Virtualbox 4.3 中安装了 Ubuntu 13.10。主机是 Windows。

我有几个 Virtualbox 共享文件夹由 /etc/fstab 挂载。直到最近,这个设置都运行良好,但在从 Ubuntu 13.04 和 Virtualbox 4.2(基本上是同时)升级后,fstab 挂载停止工作。我在启动过程中收到以下错误:

An error occurred while mounting /home/benme/Documents.
keys:Press S to skip mounting or M for manual recovery

按 M 进行手动恢复,然后尝试手动挂载也失败:

root@benme-vb:~# cd /home/benme
root@benme-vb:/home/benme# mount Documents
/sbin/mount.vboxsf: mounting failed with the error: No such device

但是如果我在启动期间跳过挂载,等待 Unity 启动,然后在 shell 中手动挂载,一切都会正常工作:

benme-vb ~ % ls Documents
benme-vb ~ % sudo mount Documents
[sudo] password for benme: 
benme-vb ~ % ls Documents
    # actual file list omitted

请注意,当我手动挂载时,我让 mount 从 /etc/fstab 中获取所有选项,并且它可以正常工作。在我看来,这说明存在某种时间问题,Virtualbox 在启动过程中运行 /etc/fstab 挂载时尚未“准备好”提供共享文件挂载。

为了完整性,以下是 fstab 行:

Documents       /home/benme/Documents   vboxsf  uid=benme,gid=benme,dmode=774,fmode=664     0   0

我可以从 Ubuntu 方面对此做些什么吗?或者是否有人恰好从 Virtualbox 角度对此有更多了解?

我在 Virtualbox 错误跟踪器上发现了一份具有相同症状的旧报告,但在这种情况下,用户更新了 Virtualbox 而没有更新他们的客户机添加程序并解决了该问题;这不会发生在这里,我肯定安装了 4.3 客户机添加程序。

答案1

我也遇到过这个问题。我/var/www使用 VBox 共享文件夹功能进行挂载,所以这很烦人。

我发现的解决方案是强制vboxsf提前加载模块,在挂载文件系统之前。只需vboxsf在 中添加一行即可/etc/modules

另一个解决方案是设置 noauto/etc/fstab并手动装入驱动器/etc/rc.local,但这对我来说并不是一个很好的解决方案,因为到那时 Apache 已经启动并且无法找到任何东西/var/www

答案2

除了 Richard Turner 建议vboxsf在 中添加一行之外/etc/modules,我建议_netdev在 中添加挂载选项/etc/fstab。我在 Ubuntu 12.04 LTS 上进行了测试,这似乎为挂载成功添加了恰到好处的延迟。

我的/etc/fstab参赛作品:

dev /media/dev vboxsf defaults,_netdev 0 0

答案3

上次更新(VirtualBox 4.3.18,Ubuntu 14.04)后,Richard 的修复对我不起作用了。幸运的是,我能够通过vboxsf直接加载内核来修复它:

# echo "vboxsf" >> /etc/initramfs-tools/modules
# update-initramfs -u

第一个命令添加了一个参数来将模块加载到内核,第二个命令更新了 init 文件系统。重启后,我就可以再次使用我的 fstab-mounts 了 :)

警告:如果无法挂载共享文件夹,启动过程可能会冻结。因此,在将模块添加到 initramfs 之前,请先测试您的配置。如果您的系统仍然挂起,您可以在恢复模式下启动以解决问题。

答案4

使用 fstab 中列出的共享文件夹时,我发现当尝试使用 VirtualBox 5 和 Ubuntu 14.04 挂载它时,启动将挂起。解决方案似乎是延迟挂载,直到 GuestAddition 服务可用(Richard Turner 的/etc/modules解决方案对我来说似乎不够)。

为此,请确保您有noauto中的共享文件夹选项/etc/fstab。例如,对于名为 的共享文件夹vmshare

vmshare    /home/user/share    vboxsf    defaults,noauto    0    0

然后添加一行/etc/rc.local以便在启动后挂载共享:

mount vmshare

相关内容