ksaitoの日記

日々試したことの覚え書き

VirtualBoxのゲストOSが起動しなくなった

移転しました。

自動的にリダイレクトします。

VirtualBoxのゲストOSを起動すると下記のようなエラーダイアログが表示されてゲストOSが起動しなくなりました。
ホストOSのカーネルバージョンに対応したゲストOS用のモジュールがインストールされていないことが原因のようです。
モジュールを自力でコンパイルしたところゲストOSが起動するようになりました。

VirtualBox kernel driver not installed. The vboxdrv kernel module was either not loaded or /dev/vboxdrv was not created for some reason. Please install the virtualbox-ose-modules package for your kernel, e.g. virtualbox-ose-modules-generic..
VBox status code: -1908 (VERR_VM_DRIVER_NOT_INSTALLED).


終了コード: 
0x80004005
コンポーネント: 
Console
インターフェース: 
IConsole {1dea5c4b-0753-4193-b909-22330f64ec45}

確認その1

エラーメッセージに表示されている通り/dev/vboxdrvが存在しないことを確認しました。
virtualbox-ose-modules-genericパッケージのインストールは、インストールされていました。

$ ls /dev/vboxdrv
ls: cannot access /dev/vboxdrv: No such file or directory
$ dpkg -l | grep virtualbox-ose-modules
ii  virtualbox-ose-modules-2.6.24-16-generic   24                                  virtualbox-ose module for linux-image-2.6.24
ii  virtualbox-ose-modules-2.6.24-17-generic   24.0.1                              virtualbox-ose module for linux-image-2.6.24
ii  virtualbox-ose-modules-generic             24.0.1                              virtualbox-ose module for linux-image-generi
$

確認その2

/etc/init.d/vboxdrvの稼働状況を確認すると、カーネルモジュールがロードされていないことが分かりました。

$ sudo /etc/init.d/vboxdrv status
 * VirtualBox kernel module is not loaded.
$ sudo /etc/init.d/vboxdrv stop
 * Stopping VirtualBox kernel module vboxdrv                                                                                                             [ OK ] 
$ sudo /etc/init.d/vboxdrv start
 * Starting VirtualBox kernel module vboxdrv                                                                                                                    
 * No suitable module for running kernel found.
$ 

確認その3

/etc/init.d/vboxdrvを確認すると、"No suitable module for running kernel found."を表示する条件が分かります。

    if [ ! -f "$KDIR/$MODNAME.o" -a ! -f "$KDIR/$MODNAME.ko" ]; then
      failure "No suitable module for running kernel found."
    fi

下記のように2.6.24-16-genericや2.6.24-17-genericにあるmiscディレクトリにはvboxdrv.koがありますが、今のホストOSのカーネルバージョンの2.6.24-18-genericには、miscディレクトリ自体がないことが分かります。

$ grep \^KDIR /etc/init.d/vboxdrv 
KDIR="/lib/modules/`uname -r`/misc"
$ uname -r
2.6.24-18-generic
$ ls /lib/modules/2.6.24-18-generic/misc
ls: cannot access /lib/modules/2.6.24-18-generic/misc: No such file or directory
$ ls /lib/modules/2.6.24-17-generic/misc/
vboxdrv.ko
$ ls /lib/modules/2.6.24-16-generic/misc/
vboxdrv.ko
$  

確認その4

まだ、aptにvirtualbox-ose-modules-2.6.24-18-genericが準備されていないので自力でビルドするか、パッケージが準備されるのを待つしかないようです。

$ dpkg -l | grep virtualbox-ose-module
ii  virtualbox-ose-modules-2.6.24-16-generic   24                                  virtualbox-ose module for linux-image-2.6.24
ii  virtualbox-ose-modules-2.6.24-17-generic   24.0.1                              virtualbox-ose module for linux-image-2.6.24
ii  virtualbox-ose-modules-generic             24.0.1                              virtualbox-ose module for linux-image-generi
$ apt-cache pkgnames | grep virtualbox-ose-modules | grep generic
virtualbox-ose-modules-2.6.24-16-generic
virtualbox-ose-modules-2.6.24-17-generic
virtualbox-ose-modules-generic
$ 

自力でビルド

module-assistantを使って自力でビルドします。
ビルドしたらモジュールができていることを確認して/dev/init.d/vboxdrvを起動します。

$ sudo module-assistant prepare
$ sudo module-assistant auto-install virtualbox-ose-source
$ ls /lib/modules/2.6.24-18-generic/misc/vboxdrv.ko 
/lib/modules/2.6.24-18-generic/misc/vboxdrv.ko
$ sudo /etc/init.d/vboxdrv status
 * VirtualBox kernel module is not loaded.
$ sudo /etc/init.d/vboxdrv start
 * Starting VirtualBox kernel module vboxdrv
   ...done.
$ 

ゲストOSの起動成功

ゲストOSは、GUIから無事起動できるようになりました。