久しぶりに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.
...
参考サイト
以下のサイトを参考にさせていただきました。大変ありがとうございます。