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


130

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をロードする方法はありますか?

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

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


3
参照してくださいaskubuntu.com/questions/762254/...
Pilot6

この質問はaskubuntu.com/questions/762254/…の複製ですが、その質問には以下の@Majalの回答は含まれていません。
zwets


FWIW、Google向け:Ubuntu 18.04では、インストールするaptitude install virtualbox virtualbox-dkms モジュールに署名し、ワンタイム(?)パスワードの入力を求められます。再起動し、MOK configを入力して、そのパスワードを使用してキーを登録します。
ラファエル

回答:


177

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

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

  1. 署名キーを作成する

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

    オプション:セキュリティを強化するために、パスワードを要求する-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(マシン所有者キー)を登録します。これは写真付きのサンプルです。システムがもう一度再起動します。

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

    mokutil --test-key MOK.der
    

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

リソース:モジュール署名のFedoraおよびUbuntu実装に関する詳細なWebサイト記事。用@zwets 追加のセキュリティ。@shasha_trnはすべてのモジュール言及しています

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


7
また、vboxnetadp、vboxnetflt、vboxpciモジュールに署名して、ネットワークを持ち、仮想マシンでpciデバイスをパススルーします。
sasha_trn

4
@majalの答えを拡張してsudo apt install --reinstall virtualbox-dkms、提供された指示に従う前に実行する必要がありました。
タイラーズSN

1
@zwetsでは、KBUILD_SIGN_PIN環境変数を適切に設定する方法について詳しく説明できますか? export KBUILD_SIGN_PIN=passwordそしてexport KBUILD_SIGN_PIN="password"、ステップ2の前に両方が結果としてSSL error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read: pem_pkey.c:117
adempewolff

3
@adempewolffパスワードにシェルが解釈する文字が含まれる場合(たとえば、引用符で囲まれた文字列の「$」)、アポストロフィ( ')で囲む必要があります。
-zwets

1
@Majalご回答ありがとうございます!また、機能を無効にするのではなく、モジュールに署名することを好みます。以下を追加できます。(1)これは、同じ運命を共有するVMwareモジュール「vmmon」および「vmnet」にも適用されます。(2)作成したキーを追加するときに、パスワードを賢く選択します。再起動およびセキュアブート登録フェーズ中に、キーボードレイアウトがロケール設定と異なる場合があります。(-> US-Layout)
one-mb

15

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

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

9
私の質問で述べたように、セキュアブートを使い続けたいと思います。したがって、セキュアブートを無効にしても問題は解決しません。
ヤンズ

2
セキュアブートを無効にしたくありませんでしたが、最終的には他に何も機能しないため、これを行う必要がありました。カーネルの更新が来るたびに手動で署名を開始したくないのです。ところで、UEFIはまだセキュアブートが有効になっていると言います。¯_(ツ)_ /
¯– jaywink

4

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

sudo apt install mokutil
sudo mokutil --disable-validation

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


2
また、sudo mokutil --disable-validationを実行してみました。このコマンドを実行すると、次回の起動時にセキュアブートを無効にし、ディスクからキーまたはハッシュを追加するよう求められます。セキュアブートを無効にしたくないので、これでも問題は解決しないようです。このコマンドを誤解した場合はお知らせください。
ヤンズ

2
セキュアブートを無効にしてみてください。それでも解決しない場合は、有効に戻すことができます。
パイロット

セキュアブートを無効にしようとしましたが、まだ有効になっています:((ubuntu 18.04)
xhudik

0

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


ねえ、詳しく説明してもらえますか?どこからダウンロードしましたか?PPAまたはdebファイル?
カーシックニシャンス16

1
VirtualBoxサイトのダウンロードから拡張パックをダウンロードしました。リンクは「VirtualBox 5.0.18 Oracle VM VirtualBox拡張パック-> サポートされているすべてのプラットフォーム」です。次に、Oracle VM Virtual Box Managerで「ファイル」>「設定」を開き、「拡張機能」を選択して、ダウンロードしたファイルをリストに追加しました。「Oracle VM VirtualBox Extension Pack」(5.0.14rxxxxxx)の古いバージョンを置き換えました。
16

1
拡張パックはエラーを修正しません。エラーがモジュールに署名についてです
カルティクNishanth

これは私の問題には当てはまりません。
ヤンズ

1
これは、OPの問題とは無関係です。「必要なキーが使用できません」というエラーメッセージは、問題がセキュアブート対応プラットフォーム上の署名されていないカーネルモジュールによるものであることを示しています。カーネルによって信頼されたキーを使用して署名されたモジュールが含まれていない限り、VirtualBoxの更新はこれを修正できません。つまり、Canonicalが署名するか、Oracleが署名し、その公開キーをカーネル(またはプラットフォーム)の信頼できるキーに追加する必要があります。
-zwets

0

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

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

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

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

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


3
私の質問で述べたように、セキュアブートを使い続けたいと思います。したがって、セキュアブートを無効にしても問題は解決しません。
ヤンズ

0

今日も同じ問題があり、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がコメントで正しく指摘しているように、レガシーモジュールを有効にすると、セキュアブートが無効になります。


2
実際、並列Windowsインストールを起動するにはUEFIも必要です。したがって、それを無効にすることは私にとっても選択肢ではありません。それに応じて質問を更新しました。
ヤンズ

レガシーBIOSモジュールのサポートを有効にしましたか?これはUEFI BIOSの別のオプションであり、セキュアブートとは異なります。
Zeine77

1
@ Zeine77では、セキュアブートが有効なままで、BIOSで「レガシーモジュール」有効にできることを確認できますか?最初のオプションでは信頼できないコードをカーネルスペースで実行できるため、これは非常にまれです。
zwets

@zwetsあなたは正しいです、私はちょうど私のBIOS設定をチェックしました。また、レガシーモジュールを有効にすると、セキュアブートが無効になります。応答で説明したように、セキュアブートを無効にするとWindows 10のブートが失敗すると想定しましたが、そうではありません。15.10(数か月前)を最初にインストールしたとき、セキュアブートを無効にしないように注意しました。これにより、Win 10のインストールが破損する可能性があります。これは、事前にインストールされたWin 10がセキュアモードを無効にしても正常に動作するということですか
Zeine77
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.