Je sais que de nombreuses discussions ouvertes ont eu lieu sur ce problème, mais aucune d’entre elles n’adresse une raison unique à propos du bogue.
Il s’agit d’Ubuntu 16.04, dans mon cas. J'installe VirtualBox à partir du référentiel Ubuntu, avec Sudo apt install virtualbox-qt
J'avais le noyau 4.4.0-34-generic installé. Après avoir installé VirtualBox, tout a bien fonctionné.
Mais après avoir mis à jour le système (via Software Updater) et mis à niveau avec Sudo apt upgrade
, Sudo apt dist-upgrade
et auto-remove
, ma machine virtuelle ne peut pas démarrer. Le noyau 4.4.0-36-generic est maintenant installé. Cela dit quelque chose comme:
please install virtualbox-dkms and check if appropriate linux-headers are installed
virtualbox-dkms
est déjà installé, donc rien ne se passe après Sudo apt install virtualbox-dkms
Mais qu'en est-il des en-têtes?
$ 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
Et quelle est la vraie raison pour laquelle cela se produit après chaque mise à jour du noyau? Je veux savoir exactement quoi faire et ne pas toujours passer des jours à le réparer.
J'ai trouvé une solution.
Bien que ma question ne reçoive pas de réponse et que je ne comprenne pas très bien POURQUOI ce problème se produit, je souhaite partager avec vous un résumé de la solution. J'ai accepté que le noyau Linux n'assure tout simplement pas le support de Virtualbox après une mise à jour. Ils connaissent la raison.
Quoi qu'il en soit, le problème survient après presque chaque mise à jour du noyau ou du paquet. Si tu essayes
$ Sudo modprobe vboxdrv
, vous obtenez modprobe: ERROR: could not insert 'vboxdrv': Required key not available
.
La solution consiste à signer manuellement la clé chaque fois que cela se produit, car la signature est KERNEL-DEPENDENT. Il est lié à Ubuntu 16.04 SANS désactiver le démarrage sécurisé.
Pas:
Vérifier si les en-têtes installés ($ dpkg -l | grep linux-headers
) correspondent au noyau en cours d'exécution
($ uname -r
).
Vous pouvez toujours utiliser cette commande pour voir une liste des clés inscrites/signées:
$ Sudo keyctl list %:.system_keyring
.
Si vous avez déjà signé une clé pour Virtualbox (avec l'ancien noyau), vous devez la supprimer. Il existe un moyen de supprimer une clé unique, mais je les supprime tous en une fois (toutes les clés que j'ai inscrites):
$ Sudo mokutil --reset
. Choisissez un mot de passe et redémarrez l'ordinateur.
$ openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Akrog/"
. Au lieu de "MOK" et "Akrog", choisissez des noms (par exemple, "vbX509Key" et "vbKey").$ Sudo /usr/src/linux-headers-XXX-generic/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/XXX-generic/updates/dkms/vboxdrv.ko
. Au lieu de "MOK", utilisez le nom spécifié et la version correcte du noyau au lieu de "XXX".$ Sudo mokutil --import MOK.der
. Encore une fois, utilisez le nom spécifié à la place de "MOK". Choisissez un mot de passe et redémarrez l'ordinateur.Maintenant, vous pouvez normalement démarrer et utiliser la Virtualbox.
Après la mise à niveau du noyau en cas de problème avec la VirtualBox du référentiel Ubuntu, utilisez simplement le la dernière VirtualBox du site Web officiel . Ce pourrait être la solution la plus simple et la plus rapide.