にて VirtualBox Guest Additions のインストールを行いました。ことの時の投稿では、トライアルアンドエラーのポイントのみを紹介いたしました。
今回は、その裏側の試行錯誤を残しておきますわ♪
環境
- OS X 10.11.4 (15E65)
- VirtualBox バージョン 5.0.20 r106931
- Vagrant 1.8.1
- CentOS-7-x86_64-Minimal-1511.iso
準備をし、VirtualBox Guest Additions のインストールを試みる(失敗する)
- VirtualBox VM のメニューバーから、Devices > insert Guest Additions CD image…
で仮想マシンへ CD イメージを入れます。
そして、仮想マシンで root ユーザーで次の操作を行いました。
# 準備。必要なパッケージを導入 yum update yum install bzip2 gcc kernel-devel # 実行。VirtualBox Guest Additions のインストール mount /dev/cdrom /mnt sh /mnt/VBoxLinuxAdditions.run
yum install
の前に yum update
を行っているのは、yum update
で更新される OS のカーネルのバージョンと、yum install
で導入される kernel-devel のバージョンが揃っている必要があるためですの。揃っているかどうかは、次のコマンドで確認できます。
# CentOS のカーネルバージョン確認 uname -r # kernel-devel のバージョン確認 /usr/src/kernels/ # この後に表示されるのがバージョン
実際にやってみるとこうなりました。
$ uname -r 3.10.0-327.13.1.el7.x86_64 $ /usr/src/kernels/3.10.0-327.13.1.el7.x86_64/ -bash: /usr/src/kernels/3.10.0-327.13.1.el7.x86_64/: ディレクトリです $
失敗 1. 環境変数 KERN_DIR が未設定(不要だったのかも)。仮想マシンのリブート
失敗したと表示されました。Look at /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. Creating user for the Guest Additions. Creating udev rule for the Guest Additions kernel module
kernel-devel の環境変数 KERN_DIR(ソースのパス)を設定いたします。
export KERN_DIR=/usr/src/kernels/3.10.0-327.13.1.3l7.x86_64
ダメですの><。
/tmp/vbox.0/Makefile.include.header:106 *** Error: KERN_DIR does not point to a directory. Stop. Creating user for the Guest Additions. Creating udev rule for the Guest Additions kernel module
を見て足りていない部分を考えました。
「uname -r」が示すバージョンと KERN_DIR が示すディレクトリは一致しております。ですので試していない仮想マシンの再起動をかけましたわ。
再起動時するとカーネルを選択するよう求められました。最新版(インストールした)を選択いたします。そうすることで、VirtualBox Guest Additions のインストールは先に進むようになりました!
本来であれば、yum install
した時点で reboot
するべきでした><。なぜなら、OS のカーネルと kernel-devel のバージョンが一致していたとしても VirtualBox Guest Additions のインストールに失敗してしまったからですの><。
失敗 2. コンパイルに必要なファイルが足りない。
次のエラーが出ました。
grep: /lib/modules/3.10.0-327.13.1.el7.x86_64/build/include/linux/version.h: No such file or directory ... 略 ...
を参考に、無いと言われたファイルをコピーいたしました。
cp /usr/include/linux/version.h /lib/modules/3.10.0-327.13.1.el7.x86_64/build/include/linux/version.h
これで実行時のコマンドライン上ではエラーが表示されなくなりました♪
失敗 3. ソースの設定が誤っている(結局修正無しで進めた)
無事終了したようですわね♪
# sh /mnt/VBoxLinuxAdditions.run ... 略 ... You should restart your guest to make sure the new modules are actually used #
念のためインストールログを確認すると、まだダメのようです><。
... 略 ... echo >&2 " ERROR: Kernel configuration is invalid."; echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing."; echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it.";
再び先ほどのページと、別のページを見て、ソース /opt/VBoxGuesstAdditions-5.0.20/src/vboxguest-5.0.20/vboxguest/r0drv/linux/memobj-r0drv-linux.c を修正することといたします。
と思ったところでこの日は時間切れとなってしまい、仮想マシンをシャットダウンいたしました。
後日もう一度 sh /mnt/VBoxLinuxAdditions.run
を実行してログを確認したところ、エラーが消えておりました!
不思議です。。。リブートはしたつもりでしたけれども、忘れていたのかしら?
ですけれども、これ以上の修正は不要と判断し、これにて完了といたしました!
おわりに
別のバージョンの CentOS や Linux で同じことを行いたい時のヒントになるかもしれないと思い、投稿いたしました。
エラーメッセージで検索することで、同じ悩みを解決した方のページにたどり着くことができ、やりやすい印象でしたの♪
以上です。