共有フォルダのエラー - Vagrant
前提
Guest Additions
VirtualBoxのホストとゲストで、マウスをシームレスに動かしたり、クリップボードを共有できたりする拡張。
ただし、ホストとゲストの双方に同じバージョンのものをインストールする必要がある。違っても警告は出るものの大抵は動くが、たまに動かなくなる。
そのため、VirtualBoxを不用意にアップデートすると、今まで使えていた環境が起動時に急にエラーなど出してきて焦る。
- バージョンを合わせるには、vbguestというVagrantのプラグインを使うと便利
- 使う場合、GuestAdditionsの自動更新は無効にしておいた方がいいらしい
現象
要はこのページと同じだけど(情報感謝)
2017/04、VirtualBoxを5.1.2に更新してから今まで問題なく使っていたBoxを起動したところ、共有フォルダのマウント中にエラーが出た。
==> default: Setting hostname... ==> default: Configuring and enabling network interfaces... ==> default: Mounting shared folders... default: /var/www => (ホスト側の共有フォルダ) Vagrant was unable to mount VirtualBox shared folders. This is usually because the filesystem "vboxsf" is not available. This filesystem is made available via the VirtualBox Guest Additions and kernel module. Please verify that these guest additions are properly installed in the guest. This is not a bug in Vagrant and is usually caused by a faulty Vagrant box. For context, the command attempted was: mount -t vboxsf -o dmode=777,fmode=666,uid=1000,gid=1000 var_www /var/www The error output from the command was: mount: wrong fs type, bad option, bad superblock on vagrant, missing codepage or helper program, or other error ... In some cases useful info is found in syslog - try dmesg | tail or so.
原因
vboxsfのシンボリックリンクが、VirtualBoxとGuestAdditionsで整合が取れていないのが原因のようだ。なので、書き換えてやる。
sudo rm /sbin/mount.vboxsf && sudo ln -s /usr/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
その後、ホストから
vagrant reload
残念ながらこういう不整合バグが結構起こるので、VirtualBox、GuestAdditions、Vagrantなどのアップデートは、忙しいときには行わないようにする。
また、アップデート後になんかエラーが起こった場合、1~2つ前のバージョンを使う、というのが割と成功率の高い解決策。どうなんだそれ。
ちなみに
共有フォルダのエラーで、前半部分は似ているが、エラーメッセージが以下のようだった場合、別の原因。
The error output from the command was: mount: unknown filesystem type 'vboxsf'
GuestAdditionsではvboxsfという名前のファイルシステムで共有を行うが、それが定義されていない。
これは、上記のvbguestプラグインでの自動更新に失敗し、ゲストマシン側でGuestAdditionsが入っていない状態。(なので、Vagrantを使わずにインスタンスを立ち上げて、そこにGuestAdditionsを入れないまま共有フォルダをマウントしようとした場合も発生する)
検索すると、vbguestプラグインが原因でのGuestAdditionsの無効化は、カーネルを更新すれば行けるみたいな解決法が書かれているが、Ubuntuではdist-upgradeで更新しても共有フォルダエラーは改善しなかったし、そもそも不用意な大規模更新は避けたい。
どうにも解決法がよくわからなかったので、初期からあまりいじってなかったこともあり、Boxを一旦破棄して環境を再構築したが、それしか解決方法がわからないのも困る。
他にもエラーが出た場合、Vagrantで共有フォルダのマウントに失敗するときの対処方法 - Qiitaあたりを参照。