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

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

我有几个由/ etc / fstab挂载的Virtualbox共享文件夹。 直到最近这个设置工作得很好,但是从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 bug-tracker的旧报告,它有相同的症状,但在这种情况下,用户更新了Virtualbox而没有更新其guest添加内容并解决了解决问题的方法; 这不是发生在这里,我肯定已经安装了4.3 guest添加。

我也碰到了这个问题。 我使用VBox共享文件夹function挂载/var/www ,所以这很烦人。

我找到的解决方案是在安装文件系统之前强制加载vboxsf模块。 只需在/etc/modules自行添加vboxsf

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

除了Richard Turner建议将vboxsf自己添加到/etc/modules ,我建议将_netdev挂载选项添加到/etc/fstab 。 我在Ubuntu 12.04 LTS上进行了测试,这似乎为mount增加了适当的延迟时间。

我的/etc/fstab条目:

dev /media/dev vboxsf defaults,_netdev 0 0

在最后一次更新后,Richard的修复程序停止了为我工作(VirtualBox 4.3.18,Ubuntu 14.04)。 幸运的是,通过使用内核加载vboxsf ,我能够修复它:

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

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

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

我只想说强迫vboxsf模块提前加载帮助我(如理查德特纳的答案),但fstab线仍然不适合我。

我最终做的是将mount命令(确实有效)放入/etc/rc.local 。 有点黑客但它有效。

使用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 

看起来vboxsf缺少fs-vboxsf别名(这是第一次挂载文件系统类型时内核模块自动加载的方式),因此在/etc/modprobe.d添加别名应该可以解决问题:

 $ echo "alias fs-vboxsf vboxsf" | sudo tee /etc/modprobe.d/vboxsf.conf 

我遇到了同样的问题,正在研究建议的解决方案,但没有成功。 Torben的解决方案冻结了靴子,所以不得不撤消它。 然后我想我应该使用sudo mount -a/etc/fstab进行故障排除。 我的条目的语法看起来很完美,但它仍然失败了。 我还能够在终端窗口中使用mount命令手动挂载filesysten。

我发现前两个参数(设备和挂载点)之间有空格。 我用一个标签替换它们,它的工作原理。 真?!!!!

我相信我已经找到了在Arch Wiki中处理这个问题的正确方法。 使用comment=systemd.automount选项。

上面的选项在/etc/fstab文件中包含其他选项。 例如:

 Fedora /var/ftp/pub/Fedora vboxsf uid=1001,gid=1001,comment=systemd.automount 0 0