カテゴリー
コンピューター

【CentOS7 Minimal】VirtualBox Guest Additions のインストールでの試行錯誤の記録

にて 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 のインストールを試みる(失敗する)

  1. 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 で同じことを行いたい時のヒントになるかもしれないと思い、投稿いたしました。

エラーメッセージで検索することで、同じ悩みを解決した方のページにたどり着くことができ、やりやすい印象でしたの♪

以上です。

コメントを残す