Contents

vagrant 啟動無法自動掛載解決方法

Vagrant 搭配 VirtualBox 時,很常把專案資料夾自動掛進虛擬機裡面。但如果 Guest Additions 狀態不對,vagrant up 雖然可能還能啟動 VM,掛載共享資料夾這一步卻會失敗,最後你會看到 /vagrant 沒有正常出現。

常見錯誤訊息

這類問題通常會看到類似:

1
2
Vagrant was unable to mount VirtualBox shared folders...
/sbin/mount.vboxsf: mounting failed with the error: No such device

這代表重點不是 Vagrant 不會開機,而是虛擬機內沒有可用的 vboxsf 模組,也就是 Guest Additions 沒有正確對上。

根因通常在哪

最常見的原因是:

  1. Guest Additions 沒裝好。
  2. VirtualBox 主機版本和客體版本不相容。
  3. VM 裡面 kernel 更新後,原本模組失效。

最省事的解法

我自己覺得最實用的方式,是直接裝 vagrant-vbguest

1
vagrant plugin install vagrant-vbguest

這個 plugin 會在啟動時幫你檢查 Guest Additions 狀態,必要時自動更新或重編,省掉很多手動處理步驟。

為什麼它有用

因為這類問題的麻煩點不在於你不知道 Guest Additions 很重要,而是版本不一致這件事很常發生,而且每次都手動修很煩。讓 plugin 幫忙對版本,通常是最符合開發效率的做法。

還要注意什麼

1. 第一次修復可能會比較久

因為它可能要下載或重新編譯元件,所以第一次跑不一定快。

2. 如果核心又更新,問題可能會重來

特別是在你常升級 box 或 guest kernel 的情況下,還是有可能再遇到一次。

小結

Vagrant 自動掛載失敗,很多時候根因都在 VirtualBox Guest Additions。與其每次手修,不如直接裝 vagrant-vbguest 來幫你管理版本,對日常開發環境來說通常是最省時間的解法。