aoishiの備忘録

備忘録

ThinkPad X1 Carbon 2017のFedora27にVirtualBoxをインストールしようとしてハマった

昨年に下記の記事でThinkPad X1 Carbon(2017)のFedora26をFedora27にアップグレードしたことを紹介した。

aoishi.hateblo.jp

その環境にVirtualBoxをインストールしたところ、仮想マシンが起動できない事象が発生し見事にハマってしまったが、原因はセキュアブートを有効化していたことにあったようで、これを無効化することで事象解決した。

せっかくなのでまとめておく。

環境

発生した事象

CLIVirtualBoxを起動した際に、GUIは起動されるものの下記のメッセージが表示される。

$ virtualbox 
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (4.15.9-300.fc27.x86_64) 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.

また、起動したGUIから仮想マシン(OS未インストールの状態)を起動しようとすると、「仮想マシン *** のセッションを開けませんでした。」のメッセージとともに、下記がポップアップされ仮想マシンが起動できない。

f:id:akihisa_oishi:20180321124300p:plain

VirtualBoxのインストールの参考とした手順

下記などを参考にした。

トラブルシュート

kernel関係のパッケージ不足

色々やってみた感じだと、とりあえずVirtualBoxのパッケージのインストール自体は成功するようだった。 ただし、dnfでインストールした際にエラーメッセージが出力されるので注意が必要だった。

例えば、私がいきなりVirtualBoxのパッケージをインストールした際は下記のような感じになった。

vboxdrv.sh: failed: Look at /var/log/vbox-install.log to find out what went wrong.
This system is not currently set up to build kernel modules (system extensions).
Running the following commands should set the system up correctly:

  yum install kernel-core-devel-4.15.9-300.fc27.x86_64
(The last command may fail if your system is not fully updated.)
  yum install kernel-core-devel

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

上記の原因は手順通りにkernel周りのパッケージをインストールしていないためであった。 kernel関係のパッケージのバージョンを揃えることに注意しながら必要なパッケージをインストールし、最終的に下記のようになった。

$ dnf list installed kernel*$(uname -r)
インストール済みパッケージ
kernel.x86_64                       4.15.9-300.fc27          @updates
kernel-core.x86_64                  4.15.9-300.fc27          @updates
kernel-devel.x86_64                 4.15.9-300.fc27          @updates
kernel-headers.x86_64               4.15.9-300.fc27          @updates
kernel-modules.x86_64               4.15.9-300.fc27          @updates
kernel-modules-extra.x86_64         4.15.9-300.fc27          @updates

kernel関係以外のパッケージ不足

上記実施後に、/sbin/vboxconfigコマンドを実行してみたところ、引き続きエラーメッセージが出力された。

$ sudo /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: Look at /var/log/vbox-install.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.

ログ(/var/log/vbox-install.log)を確認したところ、下記のメッセージが出力されていた。

make KBUILD_VERBOSE=1 SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 CONFIG_MODULE_SIG= -C /lib/modules/4.15.9-300.fc27.x86_64/build -j4 modules
make[1]: 警告: 副次 make で -jN を強制指定しました: jobserver モードを無効にします.
Makefile:937: *** "Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel".  中止.
make: *** [Makefile:305: vboxdrv] エラー 2

libelf-dev, libelf-devel, elfutils-libelf-develのいずれかのパッケージが足りていないようだった。 Fedoraに存在していたelfutils-libelf-develをインストールした。

$ sudo dnf install elfutils-libelf-devel

セキュアブートの無効化

上記実施するも、/sbin/vboxconfigコマンドを実行すると引き続きエラーメッセージが表示された。

ログ(/var/log/vbox-install.log)には下記のようなメッセージが出力されていた。

make KBUILD_VERBOSE=1 SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 CONFIG_MODULE_SIG= -C /lib/modules/4.15.9-300.fc27.x86_64/build -j4 modules
make[1]: 警告: 副次 make で -jN を強制指定しました: jobserver モードを無効にします.
test -e include/generated/autoconf.h -a -e include/config/auto.conf || (        \
echo >&2;                            \
echo >&2 "  ERROR: Kernel configuration is invalid.";        \
echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";    \
echo >&2 ;                            \
/bin/false)

下記の記事を見つけて、上記のエラーメッセージ通りコマンド実行してみるも事象は改善しなかった。

Bug 1460526 – VirtualBox fails to install with Fedora 27 kernel (rawhide) -- 4.12.0-0.rc3.git0.2.fc27.x86_64

$ sudo sh -c "cd /usr/src/kernels/$(uname -r) && make oldconfig && make prepare"

また、一度OS再起動してみたが事象は改善しなかった。

その後、下記の記事より、BIOS(UEFI)でセキュアブートが有効になっているとコケることがあるとの情報を入手した。

qiita.com

早速、下記手順でBIOS画面でセキュアブートを無効化した。

1. ThinkPadを再起動 > 立ち上がり画面でEnterキーを押下 > さらにF1を押下
2. ThinkPad Setup画面が表示されることを確認
3. Security > Secure Boot > Security BootをEnabledからDisabledに変更
4. F10キーを押下し、設定を保存して再起動する

その後、/sbin/vboxconfigを実行したところエラーメッセージが解消した。

$ sudo /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: Starting VirtualBox services.

この状態でVirtualBoxを起動し、無事仮想マシン(OS未インストールの状態)が立ち上がることが確認できた。

ただし、ログのメッセージは引き続き出力されており、事象とはあまり関係なかったのかもしれない。