ThinkPad X1 Carbon 2017のFedora27にVirtualBoxをインストールしようとしてハマった
昨年に下記の記事でThinkPad X1 Carbon(2017)のFedora26をFedora27にアップグレードしたことを紹介した。
その環境にVirtualBoxをインストールしたところ、仮想マシンが起動できない事象が発生し見事にハマってしまったが、原因はセキュアブートを有効化していたことにあったようで、これを無効化することで事象解決した。
せっかくなのでまとめておく。
環境
- PC: ThinkPad X1 Carbon 2017
- OS: Fedora release 27 (Twenty Seven)
- Kernel: 4.15.9-300.fc27.x86_64
- VirtualBox: VirtualBox-5.2-5.2.8_121009_fedora26-1.x86_64
発生した事象
CLIでVirtualBoxを起動した際に、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未インストールの状態)を起動しようとすると、「仮想マシン *** のセッションを開けませんでした。」のメッセージとともに、下記がポップアップされ仮想マシンが起動できない。
VirtualBoxのインストールの参考とした手順
下記などを参考にした。
- VirtualBox 5.2 on Fedora 27/26, CentOS/RHEL 7.4/6.9 – If Not True Then False
- Install VirtualBox 5.2 on Fedora 27 / Fedora 26/25 - ITzGeek
トラブルシュート
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)
下記の記事を見つけて、上記のエラーメッセージ通りコマンド実行してみるも事象は改善しなかった。
$ sudo sh -c "cd /usr/src/kernels/$(uname -r) && make oldconfig && make prepare"
また、一度OS再起動してみたが事象は改善しなかった。
その後、下記の記事より、BIOS(UEFI)でセキュアブートが有効になっているとコケることがあるとの情報を入手した。
早速、下記手順で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未インストールの状態)が立ち上がることが確認できた。
ただし、ログのメッセージは引き続き出力されており、事象とはあまり関係なかったのかもしれない。