目次

共有フォルダのエラー - Vagrant

前提

Guest Additions

VirtualBoxのホストとゲストで、マウスをシームレスに動かしたり、クリップボードを共有できたりする拡張。

ただし、ホストとゲストの双方に同じバージョンのものをインストールする必要がある。違っても警告は出るものの大抵は動くが、たまに動かなくなる。

そのため、VirtualBoxを不用意にアップデートすると、今まで使えていた環境が起動時に急にエラーなど出してきて焦る。

現象

要はこのページと同じだけど(情報感謝)

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あたりを参照。