Secure BootなCentOS8 StreamでVirtual Boxを起動させる | 工作者(kousakusya)のブログ

Secure Boot OnなLinux環境において、Oracle Virtual Boxは、

Default では「Kernel driver not installed (rc=-1908)」のようなエラーが出て、

Guest OSを起動させることができない。

 

対処法としては、UEFIシステムのキーでカーネルにサインする、ということらしい。

 

Ubuntuでの実施事例が、下記リンク先にあったので、CentOS 8  Stream用にカスタマイズした。

たぶん、RHELでもOKだと思う。

 

 

0) まずはVirtul Boxをインストールする。

  $ sudo dnf config-manager --add-repo=https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo
  $ sudo dnf install VirtualBox
  $ sudo dnf install akmod-VirtualBox kernel-devel-$(uname -r)

 
1) カーネルモジュールにサインするための、キーペアを作成する。
     name のところは、他のキーと判別できるような適切な名前がよい。
  $ sudo -i
  # mkdir /root/module-signing
  # cd /root/module-signing
  # openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=name/"
  # chmod 600 MOK.priv
 
2) MOK("Machine Owner Key")ユーティリティをつかってキーをインポートする。
    password は一時的な利用のものなので、適当でよいらしい。
  # mokutil --import /root/module-signing/MOK.der
  input password:
  input password again:
 
3) リブート時にMOKマネージャEFIユーティリティが自動的に起動されるので、
     2)で設定したパスワードを入力したのちに、Enrollする。
 
4) OS再起動後に、以下のコマンドでインポートされているキーを確認する。
     1)で設定したCNにて、確認することができる。
   $ sudo -i

   # mokutil --list-enrolled

 

5)  virutualboxモジュールへサインするためのスクリプトを作成し、実行する

     カーネルのUpdateのつど、このスクリプトを実行する必要あり。

 

--- スクリプト  sign-vbox-module の中身 ---

#!/bin/bash

for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
  echo "Signing $modfile"
  /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 \
                                /root/module-signing/MOK.priv \
                                /root/module-signing/MOK.der "$modfile"
done
----------------------------------------------------------

 

6) vboxdrvモジュールをロードする

    # modprobe vboxdrv

 

 

以上でおわり。