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


41

我已经在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启动,然后在外壳中手动安装,一切正常:

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

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

这是fstab行,仅出于完整性考虑:

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

我可以从Ubuntu方面对此做些什么?还是有人从Virtualbox的角度碰巧对此有更多了解?

我在Virtualbox Bug跟踪器上发现了一个旧的报告,该报告具有相同的症状,但是在那种情况下,用户更新了Virtualbox却没有更新其来宾添加项并解决了该问题;这不是在这里发生,我肯定已经安装了4.3个来宾。

Answers:


46

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

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

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


1
太棒了!添加到/ etc / modules效果很好。谢谢理查德!
ThePosey 2014年

@ThePosey很高兴为您提供帮助!
理查德·特纳

这是我在Ubuntu Server 14.04 guest虚拟机上遇到的问题。这个答案(/ etc / modules解决方案)为我解决了。谢谢!顺便说一句,顺便说一句,顺便说一句,如果您偶然发现/解决问题,请在Virtualbox设置中启用“自动挂载”,然后再次禁用它;)
Reinis 2014年

2
@qodeninja正如我在第二段中说:“只需添加vboxsf上一条自己在/etc/modules
理查德·特纳

1
我必须将vboxguest和vboxsf添加到Ubuntu 14.04来宾系统上的/ etc / modules中,才能正常工作。
mattanja

21

除了增加的理查德·特纳的建议vboxsf对自己的行来/etc/modules,我建议增加_netdev安装选项/etc/fstab。我在Ubuntu 12.04 LTS上进行了测试,这似乎为安装成功添加了适当的延迟量。

我的/etc/fstab条目:

dev /media/dev vboxsf defaults,_netdev 0 0


4
即使不使用Turner的解决方案,这也对我有用。很有道理,因为fstab选项Ubuntu Community Help页面说:“ _netdev-这是一个网络设备,请在启动网络后将其挂载。” 我也没有要加载vboxsf/etc/modules,只是增加_netdev的工作!
Mark Mikofski '16

1
即使没有Turner的解决方案,这在Ubuntu 16.04上也对我有效。

5

在最近的更新(VirtualBox 4.3.18,Ubuntu 14.04)之后,Richard的修复程序对我停止了工作。幸运的是,我可以通过直接加载vboxsf内核来修复它:

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

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

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


我尝试了此解决方案以vboxsf较早地加载模块……它只是冻结了启动顺序,因此我不得不将其删除。
Rerito

是的,包括早期共享的模块,如果共享文件夹配置损坏,它可能会冻结启动过程。但是,我从来没有经历过使用正确配置进行的任何引导冻结……
Torben 2014年

我在答案中添加了警告,以使情况更清楚。
Torben 2014年

4

我只是想说,强迫vboxsf模块尽早加载对我有帮助(如Richard Turner的回答),但fstab行仍然对我不起作用。

我最后要做的是将mount命令(确实起作用)放入/etc/rc.local。有点破解,但它奏效了。


1
我不了解Richard Turner的建议如何“帮助了您”,但同时fstab行“仍然对您​​不起作用” ...?
j_random_hacker

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

这是使用VBox 5.0.16和Ubuntu 14.04的唯一适用于我的解决方案
TJ Compton

3

似乎vboxsf缺少fs-vboxsf别名(这是首次装入该文件系统类型时内核模块自动加载的方式),因此在其中添加别名/etc/modprobe.d应该可以解决问题:

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

我自己还没有尝试过,但是看起来很有希望。
j_random_hacker

2

我遇到了同样的问题,正在尝试建议的解决方案,但没有成功。Torben的解决方案冻结了启动程序,因此必须撤消启动程序。然后,我认为应该/etc/fstab使用进行故障排除sudo mount -a。我输入的语法看起来很完美,但是仍然失败。我还能够使用终端窗口中的mount命令来手动挂载filesysten。

我发现在前两个参数(设备和安装点)之间有空格。我用一个标签代替了它们,并且可以正常工作。真?!!!!


您确定它是两个空格字符(ASCII代码32)吗?因为其中一个或多个应与制表符一样好。有时我不小心输入不间断的空格字符,这是因为我早按Shift键或在按空格键时释放得太晚。它们看起来相同,但会使许多应用程序混乱。
大卫·佛斯特

我所知道的是,我在所有空白上都进行了退格,并插入了一个选项卡,然后它就起作用了。
svenyonson 2015年

切换标签的空间对我来说很有效。我现有的/ etc / fstab中有空格(据我所知),我精确地复制了它们。现有的生产线只有一个空间。但是用制表符重写我的东西可以正常工作。
jcaruso

这并没有为我工作,但下面的凯文·萨德勒的推荐使用的noauto拖延安装,然后添加mount <sharename>rc.local的伎俩。我没有尝试特纳的解决方案。
Mark Mikofski '16

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.