web-dev-qa-db-ja.com

Linuxカーネルの更新後にVirtualBoxマシンが起動しない本当の理由

この問題に関連する多くのオープンな議論があることは知っていますが、バグに関する独自の理由に対処するものはありません。

私の場合、Ubuntu 16.04についてです。 UbuntuリポジトリからVirtualBoxをSudo apt install virtualbox-qtでインストールします

カーネル4.4.0-34-genericをインストールしました。 VirtualBoxをインストールした後、すべてが正常に機能しました。

しかし、(Software Updaterを使用して)システムを更新し、Sudo apt upgradeSudo apt dist-upgrade、およびauto-removeでアップグレードした後、仮想マシンを起動できません。カーネル4.4.0-36-genericがインストールされました。次のようなものです:

please install virtualbox-dkms and check if appropriate linux-headers are installed

virtualbox-dkmsはすでにインストールされているため、Sudo apt install virtualbox-dkmsの後は何も起こりません

しかし、ヘッダーはどうですか?

$ dpkg -l | grep linux-headers  
ii  linux-headers-4.4.0-34  4.4.0-34.53  all  Header files related to Linux kernel version 4.4.0  
ii  linux-headers-4.4.0-34-generic  4.4.0-34.53  AMD64  Linux kernel headers for version 4.4.0 on 64 bit x86 SMP  
ii  linux-headers-4.4.0-36  4.4.0-36.55  all  Header files related to Linux kernel version 4.4.0  
ii  linux-headers-4.4.0-36-generic  4.4.0-36.55  AMD64  Linux kernel headers for version 4.4.0 on 64 bit x86 SMP  
ii  linux-headers-generic  4.4.0.36.38  AMD64  Generic Linux kernel headers  

$ uname -r  
4.4.0-36-generic

そして、カーネルが更新されるたびにこれが起こる本当の理由は何ですか?私は何をすべきかを正確に知りたいと思っています。

2
Dusan

私は解決策を見つけました。

私の質問には答えられておらず、この問題が発生する理由を正確には理解していませんが、解決策の簡単な要約を共有したいと思います。更新後、LinuxカーネルはVirtualboxをサポートしません。彼らは理由を知っています。

とにかく、問題はほとんどすべてのカーネルの更新またはパッケージのアップグレード後に発生します。試してみると

$ Sudo modprobe vboxdrv、あなたはmodprobe: ERROR: could not insert 'vboxdrv': Required key not availableを取得します。

解決策は、署名がKERNEL-DEPENDENTであるため、これが発生するたびにキーに手動で署名することです。セキュアブートを無効にすることなく、Ubuntu 16.04に関連しています。

手順:

  1. インストールされたヘッダー($ dpkg -l | grep linux-headers)が実行中のカーネルと一致するかどうかを確認します

    $ uname -r)。

  2. 登録/署名されたキーのリストを表示するには、常にこのコマンドを使用できます。

    $ Sudo keyctl list %:.system_keyring

  3. Virtualboxのキーに(古いカーネルで)すでに署名している場合は、削除する必要があります。単一のキーを削除する方法はありますが、一度にすべて削除します(登録したすべてのキー):

    $ Sudo mokutil --reset。パスワードを選択して、コンピューターを再起動します。

  4. Ubuntuから起動時に自動的に尋ねられます。 「Reset MOK」を選択し、選択したパスワードを使用します。
  5. X.509キーをまだ作成していない場合は、キーのフォルダーを作成し、ナビゲートします。
  6. $ openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Akrog/"でキーを作成します。 「MOK」と「Akrog」の代わりに名前を選択します(例:「vbX509Key」と「vbKey」)。
  7. $ Sudo /usr/src/linux-headers-XXX-generic/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/XXX-generic/updates/dkms/vboxdrv.koでキーを登録します。 「MOK」の代わりに、「XXX」の代わりに指定された名前と正しいカーネルバージョンを使用します。
  8. $ Sudo mokutil --import MOK.derを使用してキーをインポートします。ここでも、「MOK」の代わりに指定された名前を使用します。パスワードを選択して、コンピューターを再起動します。
  9. Ubuntuから起動時に自動的に尋ねられます。 「Enroll MOK」を選択し、選択したパスワードを使用します。

これで、通常はVirtualboxを起動して使用できます。

1
Dusan

UbuntuリポジトリのVirtualBoxに問題がある場合のカーネルのアップグレード後は、 公式Webサイトの最新のVirtualBox を使用してください。それは最も簡単で最速のソリューションかもしれません。

0
luart