Ubuntu: Virtualbox を起動しようとしてエラーが出る

構築中の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 もそう管理すべきなんでしょう。)

コメントを残す