🙌

vagrant upをすると、GuestAdditionsが原因で失敗する

2021/07/04に公開

vagrant upでエラーが発生

vagrantでVirtualBox環境を構築中、以下のエラーに遭遇

[default] GuestAdditions versions on your host (6.1.22) and guest (5.2.22) do not match.
Loaded plugins: fastestmirror
Setting up Install Process
Determining fastest mirrors
Error: Cannot find a valid baseurl for repo: base
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
Unmounting Virtualbox Guest Additions ISO from: /mnt
umount: /mnt: not mounted
==> 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.2.22
    default: VirtualBox Version: 6.1
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
umount /mnt
Stdout from the command:
Stderr from the command:
umount: /mnt: not mounted

よく読むと、いろんな種類のエラーが記載されているが
まずは以下のエラーに着手。

[default] GuestAdditions versions on your host (6.1.22) and guest (5.2.22) do not match.

訳すと、
あなたのホストOSのゲストアディションのバージョンと、ゲストOSのゲストアディションのバージョンが一致してません。
という感じでしょうか。

仮想環境なのでホストOSとゲストOSがありますが、GuestAdditions(ゲストアディション)について知らなかったので調べました。
仮想環境についての詳しい説明はこちらの記事がわかりやすかったです。

GuestAdditionsとは

GuestAdditionsとは、VirtualBoxの拡張ツールの一つで、ゲストOSをより使いやすくするためのものです。

Guest Additions. This refers to special software packages which are shipped with Oracle VM VirtualBox but designed to be installed inside a VM to improve performance of the guest OS and to add extra features.

具体的には以下のような機能が利用できるようになります。

  • シームレスなマウス操作
  • 共有フォルダー
  • デスクップ解像度の変更
  • シームレスなウィンドウサイズの変更
  • ホストとの時刻の同期
  • クリップボードの共有
  • オートログオン

自動でGuestAdditionsバージョンを合わせてくれるプラグイン

実はvagrantには、vagrant-vbguestというプラグインがあり、自動的にゲストOSにGuestAdditionsをインストールしてくれます。

vagrant-vbguest is a Vagrant plugin which automatically installs the host's VirtualBox Guest Additions on the guest system.
vagrant-vbguest will try to autodetect a VirtualBox GuestAdditions iso file on your system, which usually matches your installed version of VirtualBox. If it cannot find one, it downloads one from the web (virtualbox.org).

以下のコマンドを入力し、vagrantを立ち上げるだけです。

vagrant plugin install vagrant-vbguest

しかし、私の場合上記コマンドではうまくいきませんでした。
最初のエラー文に書いてあった、レアケースに遭遇しました。

In most cases this is fine, but in rare cases it can
prevent things such as shared folders from working properly. 

手動で合わせる

プラグインだと自動的に更新できなかったようなので、ゲスト側に手動で同じバージョンをインストールすることにしました。

まず、GuestAdditiosには、Virtual Media Managerと呼ばれるisoファイルがあるので、ホスト側のバージョンと同じバージョンのisoファイルがあるかどうか以下のURLにアクセスして探します。

Index of /virtualbox

私の場合、ホスト側は6.1.22でしたので、そのバージョンのisoファイルを探します。
ありました。

リンクを開くと、isoファイルも見つかりました。

あとは、ゲスト側を更新していきます。
*.*.*の部分は、自分のバージョンに合わせて書き換えるようにしてください。
(私の場合は、6.1.22

$ vagrant ssh
$ wget http://download.virtualbox.org/virtualbox/*.*.*/VBoxGuestAdditions_*.*.*.iso
$ sudo mkdir /VBoxGuestAdditions
$ sudo mount -o loop,ro VBoxGuestAdditions_*.*.*.iso /VBoxGuestAdditions
$ sudo sh /VBoxGuestAdditions/VBoxLinuxAdditions.run
$ rm VBoxGuestAdditions_*.*.*.iso
$ sudo umount /VBoxGuestAdditions
$ sudo rmdir /VBoxGuestAdditions
$ exit

そして、最後にリロードしたら正常に立ち上がりました。

vagrant reload

ログを見ると、いけているようです。🎉

==> default: Machine booted and ready!
[default] GuestAdditions 6.1.22 running --- OK.
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...

Discussion