vagrant virtualbox

Vagrant upしたら「VirtualBox is complaining that the kernel module is not loaded.」が出る時の対処方法

はじめに

Ubuntu18.04上でVagrantの仮想マシンを起動しようとしたところ、VirtualBox is complaining that the kernel module is not loaded.というエラーが出ました。この記事ではこの解決策をまとめます。

前提と環境

私の環境は以下でした。

  • ホストOS : Ubuntu18.04 (Kernel : 5.3.0-26-generic)
  • Vagrant : ver 2.2.4
  • VirtualBox : ver 6.0.4

症状

いつも通りvagrant upをしたところ以下のようなエラーが赤文字出ました。

$ vagrant up
==> vagrant: A new version of Vagrant is available: 2.2.6 (installed version: 2.2.4)!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html

The provider 'virtualbox' that was requested to back the machine
'default' is reporting that it isn't usable on this system. The
reason is shown below:

VirtualBox is complaining that the kernel module is not loaded. Please
run `VBoxManage --version` or open the VirtualBox GUI to see the error
message which should contain instructions on how to fix this error.

指示通り以下を実行すると、「WARNING」と警告が表示されています。

$ VBoxManage --version
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (5.3.0-26-generic) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /sbin/vboxconfig

         You will not be able to start VMs until this problem is fixed.
6.0.4r128413

警告の後にVirtualBoxのバージョンとして6.0.4r128413が表示されていますが、このバージョンがLinuxのカーネルのバージョン5.3.0-26-genericに対応していないという警告です。

さらに指示通りに以下を実行してみます。

$ sudo /sbin/vboxconfig

以下が実行結果です。

$ sudo /sbin/vboxconfig 
[sudo] user のパスワード: 
vboxdrv.sh: Stopping VirtualBox services.
depmod: WARNING: could not open /lib/modules/5.0.0-36-generic/modules.order: No such file or directory
depmod: WARNING: could not open /lib/modules/5.0.0-36-generic/modules.builtin: No such file or directory
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.

再度/sbin/vboxconfigを実行しろと書かれていますが、結果は同じでした。

原因と解決方法

このエラーの原因は、インストールされているVirtualBoxのバージョンが更新されておらずLinuxのカーネルバージョンに対応できなくなっていることです。
従って解決方法は、最新のVirtualBoxをOracleの公式ダウンロードページからダウンロードしてインストールします。

ダウンロードしたをダブルクリックすると以下のようにインストールが開くのでこれでインストールします。

VirtualBoxをインストール後に改めてバージョンを確認すると、以下のようにバージョン情報のみ表示され、警告文は消えました。

$ VBoxManage --version
6.1.2r135662

上記で無事に解決する場合もあると思いますが、私の環境ではさらに作業が必要でした。
具体的には、執筆時点で最新のVirtualBoxの6.1とVagrantの最新版である2.2.6はうまく動作しません。Vagrant 2.2.6 がVirtualBox 6.1を認識せず、vagrant upを実行すると以下の様なエラーが表示されます。

$ vagrant up
The provider 'virtualbox' that was requested to back the machine
'default' is reporting that it isn't usable on this system. The
reason is shown below:

Vagrant has detected that you have a version of VirtualBox installed
that is not supported by this version of Vagrant. Please install one of
the supported versions listed below to use Vagrant:

4.0, 4.1, 4.2, 4.3, 5.0, 5.1, 5.2, 6.0

A Vagrant update may also be available that adds support for the version
you specified. Please check www.vagrantup.com/downloads.html to download
the latest version.

この解決方法は、一時的な解決方法になりますが、次に説明します。

Vagrant 2.2.6 で VirtualBox 6.1を認識させる手順

この手順は以下にまとめられておりました。

[Mac] Vagrant 2.2.6 と Virtualbox 6.1でうまくvagrant up ができなかった時の対処法 – Qiita

## Vagrant 2.2.6 と Virtualbox 6.1でうまくvagrant up ができなかった

なお、上記の記事の元の内容は以下のようにOracleの中の人のブログ記事のようです。

Getting Vagrant 2.2.6 working with VirtualBox 6.1 GA

On December 11th 2019, we’ve announced Oracle VM VirtualBox 6.1 Generally Available release.

私の環境では、上記手順を行った後で無事にvagrant upが正常に動作しました。
なお、逆にVagrantが古すぎてVirutalBoxに対応していない場合もあります。この場合はVagrantも更新してください。

Vagrantを更新する方法

Vagrantを更新するには、Vagrantの公式ダウンロードページから最新のVagrantをダウンロードします。ここではUbuntu用のパッケージをダウンロードします。

ダウンロードしたをダブルクリックすると以下のようにインストールが開くのでこれでインストールします。

インストール後、端末でVagrantのバージョンを確認すると以下のように執筆時点で最新の2.2.6と表示されました。

$ vagrant --version
Vagrant 2.2.6

前述したように、執筆時点ではVagrant 2.2.6はVirtualBox 6.1を認識できないという状況であるためもし同じバージョンを使用している場合は前述の作業を行ってみてください。
もしvagrant upしてもプラグインのエラーがでる場合は次に解決手順を載せます。

Vagrantのプラグインについてエラーが出る場合

vagrant upを実行すると今度は以下のエラーが表示されることがあります。

$ vagrant up
Vagrant failed to initialize at a very early stage:

The plugins failed to initialize correctly. This may be due to manual
modifications made within the Vagrant home directory. Vagrant can
attempt to automatically correct this issue by running:

  vagrant plugin repair

If Vagrant was recently updated, this error may be due to incompatible
versions of dependencies. To fix this problem please remove and re-install
all plugins. Vagrant can attempt to do this automatically by running:

  vagrant plugin expunge --reinstall

Or you may want to try updating the installed plugins to their latest
versions:

  vagrant plugin update

Error message given during initialization: Unable to resolve dependency: user requested 'vagrant-hostsupdater (= 1.1.1.160)'

上記のエラー内容は、「Vagrantのプラグインの初期化に失敗しました。もし最近Vagrantをアップデートした場合は、依存パッケージのバージョンの非互換によることが原因の可能性があります。この問題を修復するには、Vagrantの全てのプラグインを削除、再インストールしてください。」と書かれています。
そして全てのプラグインを削除してインストールし直すには以下のコマンドを実行するよう書かれています。

$ vagrant plugin expunge --reinstall

ただ、その前に全てのプラグインをアップデートしてみることもできると書かれているので、今回はまず以下でアップデートしてみました。

$ vagrant plugin update

以下が実行結果です。無事にプラグインのアップデートが完了しました。

$ vagrant plugin update
Updating installed plugins...
Fetching: micromachine-3.0.0.gem (100%)
Fetching: vagrant-vbguest-0.23.0.gem (100%)
Fetching: vagrant-hostsupdater-1.1.1.160.gem (100%)
Updated 'vagrant-vbguest' to version '0.23.0'!

上記を実行しても何かしらエラーが出る場合は、以下でプラグインの再インストールを試してみてください。

$ vagrant plugin expunge --reinstall

This command permanently deletes all currently installed user plugins. It
should only be used when a repair command is unable to properly fix the
system.

Continue? [N]:

Enterで進めると以下が表示されます。少し時間がかかるので待機します。

vagrant plugin expunge --reinstall

This command permanently deletes all currently installed user plugins. It
should only be used when a repair command is unable to properly fix the
system.

Continue? [N]: 

Vagrant expunge has been declined. Skipping removal of plugins.

Vagrant will now attempt to reinstall user plugins that were removed.
Installing the 'vagrant-hostsupdater' plugin. This can take a few minutes...

最終的に以下のように表示されました。

$ vagrant plugin expunge --reinstall

This command permanently deletes all currently installed user plugins. It
should only be used when a repair command is unable to properly fix the
system.

Continue? [N]: 

Vagrant expunge has been declined. Skipping removal of plugins.

Vagrant will now attempt to reinstall user plugins that were removed.
Installing the 'vagrant-hostsupdater' plugin. This can take a few minutes...
Installed the plugin 'vagrant-hostsupdater (1.1.1.160)'!
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.23.0)'!

これでvagrant upしてみて無事に起動するか確認してみてください。

まとめ

各自の状況によって原因や解決策が異なることもあるともいますが、同様の症状が出ている方の参考となれば幸いです。

SPONSORED LINK

コメントを残す

メールアドレスが公開されることはありません。