当前位置: 首页>>技术教程>>正文


来自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不是”ready”来提供共享文件安装点/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加入客户端。

最佳解决方法

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

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

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

次佳解决方法

除了理查德特纳建议将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模块提前加载帮助我(如Richard Turner的回答),但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。

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2053.html,未经允许,请勿转载。