VirtualBoxの共有フォルダのマウントに失敗する

vagrant 立ち上げ時に以下のようなエラーが起こるためVagrantfileの

```jsx
Vagrant.configure(2) do |config|
.
.
.
end
```

の中に以下の記述を追加したところ解消した

```jsx
if Vagrant.has_plugin?("vagrant-vbguest")
     config.vbguest.auto_update = false  
end
```

尚、実行環境は

```jsx
Host OS: mac OS 10.15.7 Catalina 
Vagrant: 2.2.16
VirtualBox: 6.1.22
Box: ubuntu/xenial64
```

である。

発生したエラーとその対処は以下の通り

## エラー１

Vagrant+VirtualBoxにおける仮想マシン(VM)立ち上げ時において、

```
$ vagrant up
```

を実行すると共有フォルダでマウントエラーが発生する。

```jsx
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'bento/centos-6.8' is up to date... 
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
        ・
        ・
        ・
    default: Warning: Connection reset. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default: 
    default: Guest Additions Version: 5.1.18
    default: VirtualBox Version: 5.2
==> default: Configuring and enabling network interfaces...
    　　・
    　　・
    　　・

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 uid=500,gid=500 vagrant /vagrant

The error output from the command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device
```

## 原因

- VirtualBoxには、**VirtualBox Guest Addition** がインストールされている。⇒ VirtualBox Guest Addition = ゲスト(Guest Additions)
- 自分の環境にあるホスト(VirtualBox)には、デフォルトの設定により仮想マシン(VM)起動時にバージョンが古ければ自動更新される。

そのため、起動時にホスト(VirtualBox)のみバージョン更新されるので、**ホスト(VirtualBox)のバージョン**とホスト(VirtualBox)にインストールされている**ゲスト(Guest Additions)のバージョン**間に差異が生じバージョン不一致によるマウントエラーが起きる。

## このエラーへの対処

**[vagrant-vbguest](https://github.com/dotless-de/vagrant-vbguest)**

というプラグインをインストールすることにより、

起動時

```
$ vagrant up
```

に自動的にホスト(VirtualBox)のバージョンに合わせて、ゲスト(Guest Additions)のバージョンを更新してくれるらしい。

```
$ vagrant plugin install vagrant-vbguest
```

ホスト(VirtualBox)とゲスト(Guest Additions)のバージョンが同等になり、このエラーは解決する

## エラー２

vagrant up時にエラー発生

```jsx
GuestAdditions seems to be installed (6.0.8) correctly, but not running.
```

## 原因

先ほどインストールした vagrant-vbguest の自動アップデート機能がオンになってるのが原因だと思われる。

## このエラーへの対処

Vagrantfileに以下の記述を追加

```jsx
if Vagrant.has_plugin?("vagrant-vbguest")
        config.vbguest.auto_update = false  
end
```

追加後、vagrant halt → vagrant upで動き出す

※これでもうまくいかない場合、一度VMを消去し、プラグインインストール→Vagrantfileに記述を追加をしなければならない。

## 参考

[https://qiita.com/chubura/items/4166585cf3f44e33271d](https://qiita.com/chubura/items/4166585cf3f44e33271d)
[https://github.com/dotless-de/vagrant-vbguest/issues/333](https://github.com/dotless-de/vagrant-vbguest/issues/333)