VirtualBox で Scientific Linux 7.0 を起動しようとしたら Guest Additions のインストールに失敗

Scientific Linux 7.0 の Docker用ベースイメージをつくろうと思い、 vagrant up をしたらエラーが発生してうまく行かなかった。人生は厳しい。 おかげで、 /vagrant がマウントされなかった。

環境

$ vagrant --version
Vagrant 1.7.4
$ VBoxManage --version
4.3.28r100309

忙しい人のための

こんなエラーが出たら

The missing package can be probably installed with
yum install kernel-devel-3.10.0-123.el7.x86_64

Building the main Guest Additions module[FAILED]

こうする。

host $ vagrant ssh
vagrant # sudo yum install -y ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/7.0/x86_64/os/Packages/kernel-devel-3.10.0-123.el7.x86_64.rpm
vagrant # exit
host $ vagrant reload

詳細

エラーは以下のような感じ。

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.
The missing package can be probably installed with
yum install kernel-devel-3.10.0-123.el7.x86_64

Building the main Guest Additions module[FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)

...

An error occurred during installation of VirtualBox Guest Additions 4.3.28. Some functionality may not work as intended.
In most cases it is OK that the "Window System drivers" installation failed.
==> default: Checking for guest additions in VM...
    default: No guest additions were detected on the base box for this VM! Guest
    default: additions are required for forwarded ports, shared folders, host only
    default: networking, and more. If SSH fails on this machine, please install
    default: the guest additions and repackage the box to continue.
    default:
    default: This is not an error message; everything may continue to work properly,
    default: in which case you may ignore this message.
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => /Users/yoshiki_aoki/work/github.com/ringohub/docker-base-image/sl70-base
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

The error output from the last command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device

どうやら、virtual box guest additions のインストールが失敗してる模様。 気になるログはここらへん。

The missing package can be probably installed with
yum install kernel-devel-3.10.0-123.el7.x86_64

Building the main Guest Additions module[FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)

ここでわかるのは、kernel-devel-3.10.0-123.el7.x86_64 をインストールしなきゃいけなさそうっていうのと、/var/log/vboxadd-install.log のログを見ようってこと。

ログから見てみる。

[root@localhost ~]# cat /var/log/vboxadd-install.log
/tmp/vbox.0/Makefile.include.header:97: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again.  Stop.

KERN_DIR を指定しろよって言ってる。カーネルのディレクトリをしてしようと思って、みてみる。

[root@localhost vagrant]# ls /usr/src/kernels/
[root@localhost vagrant]#

何もなかった。 ここで、yum install -y kernel-devel でインストールしてしまうと kernel-devel-3.10.0-123.el7.x86_64 が入らない。 なので、ここから rpmを指定バージョンをインストールした。

yum install -y ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/7.0/x86_64/os/Packages/kernel-devel-3.10.0-123.el7.x86_64.rpm

一応確認。

[root@localhost vagrant]# ls /usr/src/kernels/
3.10.0-123.el7.x86_64

KERN_DIR を指定しなきゃだめかなと思ったんだけど、ためにしログアウトして vagrant reload したら無事インストールされた。

...
Installing Virtualbox Guest Additions 4.3.28 - guest version is
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.28 Guest Additions for Linux............
VirtualBox Guest Additions installer
Removing installed version 4.3.28 of VirtualBox Guest Additions...
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules[  OK  ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module[  OK  ]
Building the shared folder support module[  OK  ]
Building the OpenGL support module[  OK  ]
Doing non-kernel setup of the Guest Additions[  OK  ]
Starting the VirtualBox Guest Additions [  OK  ]
...

References