ブログの名前なんて適当で良いのでは

説明を求めるな、記事を読め

VagrantのGuest editionのアップデートが失敗した時の対処法

過去に2回ほどvagrantのエラーの対処法について書いてきたが,また突如それは起こった.もう本当に朝からしんどかった.

環境

今回起きたのは/vagrantやVagrantfileで記述した共有ディレクトリが共有できないという問題だった.詳しく原因を探っていくとGuest Edition絡みだとわかった.端的に言うなればguestとhostのバージョンが違うことが原因で起こっていた.そこで,vagrant plugin install vagrant-vbguestによってguest editionのアップデートなどを行ってくれるプラグインを導入する.その後vagrant upしてこれで解決と思いきや,以下のようなエラーが出てしまった.

[default] GuestAdditions versions on your host (5.0.28) and guest (5.0.20) do not match.
Reading package lists...
Building dependency tree...
Reading state information...
dkms is already the newest version (2.2.0.3-2ubuntu11.3).
linux-headers-4.8.0-32-generic is already the newest version (4.8.0-32.34~16.04.1).
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Copy iso file /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
mount: /dev/loop0 is write-protected, mounting read-only
Installing Virtualbox Guest Additions 5.0.28 - guest version is 5.0.20
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.0.28 Guest Additions for Linux............
VirtualBox Guest Additions installer
Removing installed version 5.0.28 of VirtualBox Guest Additions...
Removing existing VirtualBox DKMS kernel modules ...done.
Removing existing VirtualBox non-DKMS kernel modules ...done.
update-initramfs: Generating /boot/initrd.img-4.4.0-59-generic
update-initramfs: Generating /boot/initrd.img-4.8.0-32-generic
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox DKMS kernel modules ...done.
Removing existing VirtualBox non-DKMS kernel modules ...done.
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.

Building the main Guest Additions module ...fail!
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions ...done.

どうやらGuest Additions moduleのbuildに失敗しているらしい・・・.このような事例でググるとかなり多くの情報が出てきた.(CentOSの内容が多かったけど)

これらに記載されているようなlinux-kernel-headersの更新などをいろいろやってみたが,まったくうまく行かなかった.
そこで思い切ってVirtualBox自体をアップデート(5.0.32に)した. その状態でもう一回,vagrant upすると,無事guest editionのバージョンがマッチして起動,共有することができた.上記のエラー対処の記事などではVirtualBox自体のアップデートをしたほうが良いという記述はおそらくどこにもなく,むしろVirtualBoxのアップデートは地雷みたいな雰囲気があったので,同じようなことで解決出来ない人がいたら思い切ってVirtualBoxをアップデートするということを試してみるのも良いかもしれない.