構築中のUbuntuサーバーに負荷を掛けたくて、Boinc をインストールしています。メモリを増設したので、メモリーに対しても負荷を増やしたくて VirtualBox を使う vLHC@home を動かせばいいのでは?と思いつきました。GUI を起動してその上でVirtualBox を使いたい訳じゃなくて、ウィンドウを起動しないで動いてくれるのが目標です。
そこで、aptitude を使ってvirtualbox をインストールしたものの、Virtualbox が起動しない!(X11は動かなくてもいい。)
次のようなエラーが出てしまいます。
# virtualbox WARNING: The character device /dev/vboxdrv does not exist. Please install the virtualbox-dkms package and the appropriate headers, most likely linux-headers-lowlatency. You will not be able to start VMs until this problem is fixed. Failed to open the X11 display!
virtualbox-dkms が無い???
確か、入れたはずなので、apt-cache コマンドでパッケージ名をチェックしてみるとやはり存在しています。
# apt-cache showpkg virtualbox-dkms Package: virtualbox-dkms Versions: 4.3.10-dfsg-1ubuntu4 (/var/lib/apt/lists/jp.archive.ubuntu.com_ubuntu_dists_trusty-updates_multiverse_binary-amd64_Packages) (/var/lib/dpkg/status) Description Language: File: /var/lib/apt/lists/jp.archive.ubuntu.com_ubuntu_dists_trusty_multiverse_binary-amd64_Packages
手に負えないわということで、google で検索してみると、Ubuntu のフォーラムに次のようなページを発見。
http://askubuntu.com/questions/465454/problem-with-the-installation-of-virtualbox
http://askubuntu.com/questions/589924/cant-build-virtualbox-dkms-mismatched-kernel-and-headers
virtualbox コマンドを発行した時に表示されていたエラーメッセージの中にある”linux-header”と関係があることが判明しました。つまり、カーネルの中にvirualboxが必要とするヘッダーが含まれていないという事。厳密には、カーネルと完全に同一バージョンのヘッダーパッケージが入っている必要があるという事のようです。確かに、3.13.0-51-lowlatency のヘッダーが出てきません。
確認するために、root で次のコマンドを発行。
# uname -a
Linux pc34 3.13.0-51-lowlatency #84-Ubuntu SMP PREEMPT Wed Apr 15 12:35:09 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
# dpkg -l|grep linux-headers
ii linux-headers-3.13.0-32 3.13.0-32.57 all Header files related to Linux kernel version 3.13.0
ii linux-headers-3.13.0-32-generic 3.13.0-32.57 amd64 Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
ii linux-headers-3.13.0-49 3.13.0-49.83 all Header files related to Linux kernel version 3.13.0
ii linux-headers-3.13.0-49-generic 3.13.0-49.83 amd64 Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
ii linux-headers-3.13.0-52 3.13.0-52.86 all Header files related to Linux kernel version 3.13.0
ii linux-headers-3.13.0-52-generic 3.13.0-52.86 amd64 Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
ii linux-headers-generic 3.13.0.52.59 amd64 Generic Linux kernel headers
ii linux-headers-generic-lts-trusty 3.13.0.52.59 amd64 Generic Linux kernel headers
aptitude コマンドで、3.13.0-51 をキーワードを検索して、ヘッダーをインストールしました。
結果は次の通り。
# dpkg -l|grep linux-headers
ii linux-headers-3.13.0-32 3.13.0-32.57 all Header files related to Linux kernel version 3.13.0
ii linux-headers-3.13.0-32-generic 3.13.0-32.57 amd64 Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
ii linux-headers-3.13.0-49 3.13.0-49.83 all Header files related to Linux kernel version 3.13.0
ii linux-headers-3.13.0-49-generic 3.13.0-49.83 amd64 Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
ii linux-headers-3.13.0-51 3.13.0-51.84 all Header files related to Linux kernel version 3.13.0
ii linux-headers-3.13.0-51-lowlatency 3.13.0-51.84 amd64 Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
ii linux-headers-3.13.0-52 3.13.0-52.86 all Header files related to Linux kernel version 3.13.0
ii linux-headers-3.13.0-52-generic 3.13.0-52.86 amd64 Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
ii linux-headers-generic 3.13.0.52.59 amd64 Generic Linux kernel headers
ii linux-headers-generic-lts-trusty 3.13.0.52.59 amd64 Generic Linux kernel headers
この後でOSをリブートして、virtualbox コマンドを発行してみると、先ほどとは異なり出て来るのはX11関係のエラーだけ。
$ virtualbox Failed to open the X11 display!
Boinc から vLHC@home に参加させてみると、次のように無事に virtualbox を認識していました。
2015/05/20 21:28:48 | | VirtualBox version: 4.3.10_Ubuntur93012
しかし、なぜ、バージョンが異なるのか?
どうも、apt-get と aptitude を使う時に、何でもかんでも最新にしている事と関係がありそう。そういう意味で、なぜ ubuntu server が Generic カーネルじゃなくて、lowlatency になっているのかも実は不明。FreeBSDと勝手が違います。(FreeBSDなら何でもかんで最新にアップデートなんかしませんけどね。Ubuntu もそう管理すべきなんでしょう。)