この問題に関連する多くのオープンな議論があることは知っていますが、バグに関する独自の理由に対処するものはありません。
私の場合、Ubuntu 16.04についてです。 UbuntuリポジトリからVirtualBoxをSudo apt install virtualbox-qt
でインストールします
カーネル4.4.0-34-genericをインストールしました。 VirtualBoxをインストールした後、すべてが正常に機能しました。
しかし、(Software Updaterを使用して)システムを更新し、Sudo apt upgrade
、Sudo 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
そして、カーネルが更新されるたびにこれが起こる本当の理由は何ですか?私は何をすべきかを正確に知りたいと思っています。
私は解決策を見つけました。
私の質問には答えられておらず、この問題が発生する理由を正確には理解していませんが、解決策の簡単な要約を共有したいと思います。更新後、LinuxカーネルはVirtualboxをサポートしません。彼らは理由を知っています。
とにかく、問題はほとんどすべてのカーネルの更新またはパッケージのアップグレード後に発生します。試してみると
$ Sudo modprobe vboxdrv
、あなたはmodprobe: ERROR: could not insert 'vboxdrv': Required key not available
を取得します。
解決策は、署名がKERNEL-DEPENDENTであるため、これが発生するたびにキーに手動で署名することです。セキュアブートを無効にすることなく、Ubuntu 16.04に関連しています。
手順:
インストールされたヘッダー($ dpkg -l | grep linux-headers
)が実行中のカーネルと一致するかどうかを確認します
($ uname -r
)。
登録/署名されたキーのリストを表示するには、常にこのコマンドを使用できます。
$ Sudo keyctl list %:.system_keyring
。
Virtualboxのキーに(古いカーネルで)すでに署名している場合は、削除する必要があります。単一のキーを削除する方法はありますが、一度にすべて削除します(登録したすべてのキー):
$ Sudo mokutil --reset
。パスワードを選択して、コンピューターを再起動します。
$ 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」)。$ 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」の代わりに指定された名前と正しいカーネルバージョンを使用します。$ Sudo mokutil --import MOK.der
を使用してキーをインポートします。ここでも、「MOK」の代わりに指定された名前を使用します。パスワードを選択して、コンピューターを再起動します。これで、通常はVirtualboxを起動して使用できます。
UbuntuリポジトリのVirtualBoxに問題がある場合のカーネルのアップグレード後は、 公式Webサイトの最新のVirtualBox を使用してください。それは最も簡単で最速のソリューションかもしれません。