从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