web-dev-qa-db-ja.com

Ubuntu 16.04へのアップグレード後に「vboxdrv」をロードできませんでした(安全なブートを維持したい)

Ubuntu 15.10から16.04にアップグレードすると、VirtualBox 5.0.18でVMが起動しなくなりました。 「vboxdrv」がロードされていないと文句を言います。だから私はそれをロードしようとすると、次のエラーを取得しよう:

$ Sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Required key not available

私が使用し、今後も使用したいセキュアブートに関連していると思います。実際、Ubuntu 15.10のセキュアブートとVirtualBoxでは問題なく機能していました。

また、カーネルモジュールを正常にビルドした$ Sudo apt-get --reinstall install virtualbox-dkmsを試しましたが、この問題は解決しませんでした。

セキュアブートを有効にしたままvboxdrvをロードする方法はありますか?

Update 2:また、Sudo mokutil --disable-validationを実行してみました。このコマンドを実行すると、次回の起動時にセキュアブートを無効にし、ディスクからキーまたはハッシュを追加するよう求められます。セキュアブートを無効にしたくないので、これでも問題は解決しないようです。また、並列Windowsインストールに対してUEFIをアクティブにしたい。

:セキュアブートを無効にすることを気にしない場合は、 サードパーティカーネルをインストールするときに「必要なキーが利用できません」と表示されるのはなぜですか?モジュールまたはカーネルのアップグレード後? 代わりに。

130
jans

カーネルバージョン4.4.0-20以降、unsignedカーネルモジュールはセキュアブートを有効にした状態での実行が許可されなくなりました。セキュアブートを維持するため、次の論理ステップは、これらのモジュールをsignすることです。

それでは試してみましょう。

  1. 署名キーを作成する

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive common name/"
    

    Option:セキュリティを強化するために、パスワードを要求する-nodesスイッチをスキップします。次に、次の手順に進む前に、必ずexport KBUILD_SIGN_PIN='yourpassword'

  2. モジュールに署名します(この例ではvboxdrvですが、ls $(dirname $(modinfo -n vboxdrv))/vbox*.ko)にある他のモジュールでも同じ機能を繰り返してください)

    Sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. モジュールが署名されていることを確認します

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. キーをセキュアブートに登録する

    Sudo mokutil --import MOK.der
    

    次のステップでインポートを確認するために使用するパスワードを要求します。

  5. 再起動し、指示に従ってMOK(マシン所有者キー)を登録します。これが sample の写真です。システムがもう一度再起動します。

  6. キーが登録されていることを確認します

    mokutil --test-key MOK.der
    

それでもVirtualBoxがロードされない場合は、モジュールがロードされていない(Sudo modprobe vboxdrvで修正される)か、キーが署名されていない可能性があります。そのステップを繰り返すだけで、すべてが正常に機能するはずです。

リソース:詳細なWebサイト Fedoraの記事 および buntu実装 モジュール署名。 追加セキュリティ の@zwets。 @ -shasha_trn for すべてのモジュールに言及

追加リソース:virtualbox-dkmsがアップグレードするたびに自分用にbashスクリプトを作成し、署名されたモジュールを上書きします。 元はGitHubのvboxsign を確認してください。

174
Majal

私のシステムでは、次のようにして動作させました。

Mokutilを実行します。

Sudo mokutil --disable-validation

その後、mokutilからMOK Managerのパスワードを設定するように求められました。 PCを再起動した後、BIOSはMOK Managerを設定するためのダイアログを表示しました。このダイアログでSecureBootを無効にしました。パスワードからいくつかの文字を要求しました(つまり、文字(5)を入力するなど)。

正しくロードされたvboxdrvモジュールを起動した後。

lsmod | grep vboxdrv
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci

奇妙なことに、mokutilはまだSecureBootが有効になっていることを示しています。

Sudo mokutil --sb-state
SecureBoot enabled
14
Pocho

検証チェックを無効にするには

Sudo apt install mokutil
Sudo mokutil --disable-validation

その後、DKMSパッケージがインストールされます。

4
Pilot6

アップグレード後もvboxdrvに関するエラーが発生しました。ただし、Oracle VM VirtualBox Extension Packの古いバージョン(5.0.14)には問題がありました。このパックの新しいバージョン(5.0.18)をダウンロードしてインストールすると、問題はなくなりました。

0
Reling

今日も同じ問題があり、Biosでuefiを有効にしてデュアルブートでWindows 10とUbuntu 15.10を使用しました(プリインストールされたWindowsを実行できるように無効にしませんでした)。

Ubuntu 16.04にアップグレードした後、VirtualBoxは同じエラーメッセージでVMのロードを停止しました。

modprobe: ERROR: could not insert 'vboxdrv': Required key not available

UEFIの問題を疑ったのは、インストーラーをアップグレードする際に、インストーラーを無効にするかどうかを尋ねられ、それに対していいえと応答したためです(はいはWindowsを使用できなくなる可能性があるため)。

私がしたことはBiosに行き、セキュアブートを無効にすることなくレガシーBIOSブートのサポートを有効にすることです。

Virtualboxは現在正常に動作しています。

更新:@zwetsがコメントで正しく指摘しているように、レガシーモジュールを有効にすると、セキュアブートが無効になります。

0
Zeine77

さて、少しテストした後、これは安全な起動の問題であると確信しています。

有効であるかのように、これはスローされます:

警告:vboxdrvカーネルモジュールはロードされていません。現在のカーネル(4.4.0-21-generic)で使用できるモジュールがないか、ロードに失敗しました。カーネルモジュールを再コンパイルし、Sudo/sbin/rcvboxdrv setupでインストールしてください

ただし、セキュアブートが無効になっている場合、virtualboxはエラーなしで正常にロードされます。

私はまだBIOSをUEFIとして設定しています。

0
David Haynes