VagrantとVirtualBoxを使っててupしたときGuest Additions Version が違うと表示されるときの対応

シェアする

Guest Additionsを更新する方法

仮想マシンとホストコンピュータの間の共有フォルダが使えるのはGuest Additionsのおかげ

vagrant を使ってると、ゲストOSとホストOSの間で共有フォルダの存在は大変便利ですね。

共有フォルダが使えるのは、Guest Additions というツールが、Box(仮想マシンのシステムのベースイメージ)に組み込まれているからです。

Guest Additions と VirtualBox のバージョンが違うときに必要な対応

でも、Box イメージが作られたのが古いと、ホストOSにインストールしたVirtualBoxのバージョンと違う場合があります。というか、よく起こりうることです。

そんな時、up コマンドで仮想マシン起動中には、以下のように状況が出力されます。

上のログには、

という表示があります。また、

「VM(仮想マシン)の guest additions と、VirtualBox のバージョンが違います。そのままでも問題ないことも多いけど、もし、共有フォルダにエラーが発生しているなら、guest additions が、VitrualBoxのバージョンに対応しているかチェックしてください。」

なんてことが、書かれています。

仮想マシンから共有フォルダが見れていれば何もしなくてもよい

上記ログの例では、guest additions のバージョンは 5.2.18 と比較的新しく、というのも、VirtualBox のバージョンが 5.2 の次に、6.0 に飛んでいるので、、、そのため、共有フォルダも問題なく見れています。

こういう場合は、ほっておいても大丈夫です。

共有フォルダにエラーが発生、あるいは仮想マシンから共有フォルダが見れないときは、Guest Additionsのバージョン調整が必要

もし、古いBoxのため、共有フォルダが使えないなど弊害がある場合は、Guest Additions のバージョンアップをする必要があります。

Guest Additionsのバージョン調整には、Vagrant のプラグインを使う

Guest Additions のバージョンアップの作業はかなり面倒なのですが、vagrant に 「vagrant-vbguest」 というプラグインをインストールしておくと、 vagrant up  コマンドを実行したとき、Guest Additions のバージョンが違うとき、自動で入れ替えてくれます。

vagrant のプラグイン インストール手順

ホストOS上で、

vagrant plugin install プラグイン名とplugin install コマンドを実行します。

下が、vagrant-vbguest をインストールしたときのログです。

vagrant plugin list コマンドでインストール済みのプラグインが確認できます。

vagrant up での Guest Additionsの更新の様子

この状態で、 vagrant up をしてみます。というか、すでに 起動中だったので、代わりに再起動の vagrant reload  をしてみます。

ログは下のようになりました。大変な作業になってます。

上のログのポイントを説明すると、

・GuestAdditionsのバージョン違いを検知

その後、
・centos のバージョンを 7.5 → 7.6 に更新
・kernel-devel、gcc など、ビルド環境をインストール。
・Guest Additions を更新
古い Guest Additions を削除、
VirtualBox Guest Additions をビルド
GuestAdditions のサービス起動コードを変更(次回起動時に反映)

次回起動時から変更が反映されるため、
今回の起動は、いつも通り、Guest Additionsがバージョンが違うとの表示をしつつ、共有フォルダをマウントして終わってます。

で、いよいよ、もう一回、再起動してみますと、下のログのように、かなりすっきりとしたログ出力で起動してます。GuestAdditions のバージョンも 6.0.2 で共通になってます。

念のため、仮想マシンに入って、共有フォルダ /vagrant が閲覧できるかチェックします。
下記のように ls  コマンドでファイルが表示されれば、問題ないです。

ただ、ビルド環境を構築するため、CentOSのバージョンアップまでやってしまうので、本番運用されている環境の開発環境として仮想マシンを使っていると、バージョン不一致になってしまう可能性もあるかもしれませんね。

CentOS6.9 など枯れたOSを使っていれば、問題ないと思いますが。

まとめ

VirtualBox と Vagrant を使って、仮想マシンを使っているとき、古いBoxを使っていると、共有フォルダが使えなかったりすることがあります。

そんな時は、BoxにインストールされているGuestAdditionsのバージョンが古い可能性があります。

仮想マシンのGuestAdditionsのバージョンを使用しているVirtualBoxに合わせて再構築するには、Vagrant の プラグイン vagrant-vbguest が便利です。

 ただ、GuestAdditionsのバージョンが VirtualBox と違っていても、共有フォルダが見れている場合は、実害がないため、無理にバージョンを合わせる必要はないですので、必要な場合を見極めて行いましょう。

いくつもBoxイメージを使っている場合、GuestAdditionsのバージョンアップが必要な時だけ、vagrant-vbguest を導入して、いつもはアンインストールしておいた方が良いかもしれません。

plugin をアンインストールするのは、 vagrant plugin uninstall プラグイン名 です。

この記事が気に入ったら
いいね ! しよう