Install Guest Additions for CentOS 7 on VirtualBox 4.3.12
VirtualBox4.3.12にCentOS7をインストールしたが,Guest Additionsをインストールできなかった。この解決策を記す。
VirtualBoxで仮想化により別のOSを使うとき,Guest Addtionsを一緒にインストールするとクリップボードのやりとりやマウスポインタの統合,フルスクリーンにでき便利だ。Guest Additionsのインストール手順は以下のサイトなどで解説されている。
VirtualBox環境構築:CentOS – Guest Additions導入 http://nextindex.s141.xrea.com/virtualbox/centos_GuestAddition.html
Guest Additionsのインストールに必要なパッケージは以下のコマンドでインストールできる。カーネルの更新が必要なので最後にPCを再起動している。
sudo yum update
sudo yum -y install gcc make kernel kernel-dev
sudo shutdown -r now
VirtualBoxのメニューからデバイス▷Guest AdditionsのCDイメージを挿入からGuest Additionsのインストールプログラムを実行すると以下のエラーが出る。
cd /run/media/senooken/VBoxGuestAdditions-4.3.12
sudo ./VBoxLinuxAddtions.run
Building the main Guest Additions module [FAILED] (Look at /var/log/vboxadd-install.log to find out what went wrong)
示されているとおりに/var/log/vboxadd-install.logを見ると以下のエラーメッセージが出ている。
/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:1542:26: error: 'struct mm_struct' has no member named 'numa_next_reset' pTask->mm->numa_next_reset = jiffies + 0x7fffffffffffffffUL; ^ make[2]: *** [/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o] Error 1 make[1]: *** [_module_/tmp/vbox.0] Error 2
この現象は例えば以下のサイトでも報告されている。
ぷにおちゃん ~ CentOS 7でVBoxGuestAdd-inが失敗した時の対処方法 http://punio.org/blog/201408041942VVAW.html
Ubuntu 14.04ではこのエラーは出なかったのでCentOS 7特有の現象と考えられる。対処方法は以下のサイトで解説されている。
密かなITエンジニアの備忘録:VirtualBoxにCentOS7をインストールする http://blog.livedoor.jp/yoka3/archives/16042340.html
memobj-r0drv-linux.cのソースコードを修正してやる。
cd /opt/VBoxGuestAdditions-4.3.12/src/vboxguest-4.3.12/vboxguest/r0drv/linux
sudo vi memobj-r0drv-linux.c
1536, 1541行目
変更前 ~ KERNEL_VERSION(3, 13, 0)
変更後 ~ KERNEL_VERSION(3, 10, 0)
sudo /etc/init.d/vboxadd setup
なお、ここでまたsudo ./VBoxLinuxAdditions.run
を実行してしまうと、memobj-r0drv-linux.c が修正前の状態に戻ってしまうので要注意。最後に再起動すればGuest Addtionsのインストールは完了。
これでVirtualBox上にCentOS 7をインストールし,Guest Addtionsによりマウスの統合やフルスクリーンにでき快適になった。
なお,このインストールでOpenGL関係のビルドはエラーとなるかもしれないが,特に困らないので今回は放置する。