久しぶりにVagrantで仮想マシンを作ったら、vagrant upでエラーとなった。 原因は共有フォルダの部分だ。 前にもハマったポイントなので対処法を記しておく。
環境
各プログラムのバージョンは以下の通りです。
$ sw_vers ProductName: macOS ProductVersion: 11.1 BuildVersion: 20C69 $ VBoxManage -v 6.1.16r140961 $ vagrant -v Vagrant 2.2.14 $ vagrant plugin list vagrant-vbguest (0.29.0, global)
共有フォルダが使えるように「vagrant-vbguest 」もインストール済み。 しかしvagrand upでエラーになる。
Vagrantfileの共有フォルダの設定部分はいったって普通です。
Vagrant.configure("2") do |config| config.vm.box = "centos/8" config.vm.synced_folder "./data", "/data" ...
問題事象
vagrant upしたときにエラーがおきる。ポイントは以下の出力だと思う。
[default] No Virtualbox Guest Additions installation found.
そのほかにもエラーが出ていますが、2次的なエラーだと思われる。
$ vagrant up ... [default] No Virtualbox Guest Additions installation found. ... Last metadata expiration check: 0:00:02 ago on Sat 13 Feb 2021 05:19:31 AM UTC. No match for argument: kernel-devel-4.18.0-240.1.1.el8_3.x86_64 Error: Unable to find a match: kernel-devel-4.18.0-240.1.1.el8_3.x86_64 Unmounting Virtualbox Guest Additions ISO from: /mnt umount: /mnt: not mounted. ... 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.
以下のコマンドで確認しても、同じものが出力される。
$ vagrant vbguest --status [default] No Virtualbox Guest Additions installation found.
つまり、ゲストOSに「Virtualbox Guest Additions」がインストールされている必要があるが、 それが見つからないということだろう。 通常、Vagrantのプラグインである「vagrant-vbguest」がインストールされていれば、 ここら辺を自動的に設定してくれるはずなのですが、うまく機能していないようです。
対処法
「vagrant-vbguest」で「Virtualbox Guest Additions」がインストールされないので手動でインストールします。 ただ、なかなかうまくいかなくてはまりました。 最終的には以下の手順でうまく行きました。
まずは「vagrant ssh」でゲストOSにログインして Virtualbox Guest Additions のインストールに必要なパッケージをインストールする。
$ vagrant ssh $ sudo su - # yum -y install kernel-headers kernel-devel gcc make perl
kernel、kernel-headers、kernel-develのバージョンがあっていないと Virtualbox Guest Additionsのインストールに失敗するので確認する。 確認するとkernelのバージョンが低いので、kernelその他をアップデートする。
# rpm -qa | grep kernel kernel-core-4.18.0-240.1.1.el8_3.x86_64 kernel-4.18.0-240.1.1.el8_3.x86_64 kernel-modules-4.18.0-240.1.1.el8_3.x86_64 kernel-tools-4.18.0-240.1.1.el8_3.x86_64 kernel-tools-libs-4.18.0-240.1.1.el8_3.x86_64 kernel-headers-4.18.0-240.10.1.el8_3.x86_64 kernel-devel-4.18.0-240.10.1.el8_3.x86_64 # yum -y update
バージョンアップの確認、現在起動中のカーネル、起動時のデフォルトのカーネルを確認してリブートする。
# rpm -qa | grep kernel kernel-core-4.18.0-240.1.1.el8_3.x86_64 kernel-core-4.18.0-240.10.1.el8_3.x86_64 kernel-4.18.0-240.1.1.el8_3.x86_64 kernel-modules-4.18.0-240.1.1.el8_3.x86_64 kernel-headers-4.18.0-240.10.1.el8_3.x86_64 kernel-devel-4.18.0-240.10.1.el8_3.x86_64 kernel-modules-4.18.0-240.10.1.el8_3.x86_64 kernel-tools-4.18.0-240.10.1.el8_3.x86_64 kernel-4.18.0-240.10.1.el8_3.x86_64 kernel-tools-libs-4.18.0-240.10.1.el8_3.x86_64 # uname -r 4.18.0-240.1.1.el8_3.x86_64 # grub2-editenv list saved_entry=8b36e887ef0f4f8aba9fe17 ... kernelopts=root=UUID=a62c5b49-755e- ... boot_success=1 # reboot
再度ログインしてカーネルのバージョンを確認する。
$ vagrant ssh $ uname -r 4.18.0-240.10.1.el8_3.x86_64
まだパッケージは足りていない。elfutils-libelf-develパッケージが必要なのだが、 デフォルトのリポジトリにはない。 EPELリポジトリにあるのでEPELリポジトリを設定してインストールする。 なお、EPELのリポジトリは有効化されているので、パッケージがインストールできたら 無効化しておいた方が良いでしょう。
$ sudo su - # yum install -y epel-release # yum install -y elfutils-libelf-devel
これでやっと Virtualbox Guest Additions のインストールの準備ができた。 VBoxGuestAdditionsのisoファイルは、VirtualBoxと同じバージョンのものを使うのが良いと思うので、 ダウンロードするファイルは適宜修正してください。
# curl -O https://download.virtualbox.org/virtualbox/6.1.16/VBoxGuestAdditions_6.1.16.iso # mount -rt iso9660 VBoxGuestAdditions_6.1.16.iso /media/ # /media/VBoxLinuxAdditions.run # umount /media # rm VBoxGuestAdditions_6.1.16.iso
ホストOSに戻って仮想マシンを再起動してみます。 以下のメッセージがちょっと気になりますが、共有フォルダは問題ないようです。
$ vagrant reload ... [default] GuestAdditions seems to be installed (6.1.16) correctly, but not running. ...
参考サイト
以下のサイトを参考にさせていただきました。大変ありがとうございます。