當前位置: 首頁>>技術教程>>正文


來自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/zh-tw/article/2053.html,未經允許,請勿轉載。