web-dev-qa-db-fra.com

VirtualBox ne démarre pas après la mise à niveau du noyau

Hier, j'ai reçu une mise à niveau du noyau et après le redémarrage, VirtualBox a cessé de fonctionner.

Voici mes informations système (après la mise à niveau du noyau):

matteo@workstation:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
matteo@workstation:~$ uname -a
Linux workstation 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

J'ai installé VirtualBox il y a longtemps avec

Sudo apt install linux-headers-$(uname -r)
Sudo apt install virtualbox-dkms virtualbox virtualbox-qt

utilisé quotidiennement et n’a jamais eu de problèmes avec les mises à jour du noyau. L'erreur que je reçois maintenant est

matteo@workstation:~$ Sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Exec format error
matteo@workstation:~$ dmesg | tail -n 1
[ 1413.167311] vboxdrv: version magic '4.4.0-116-generic SMP mod_unload modversions ' should be '4.4.0-116-generic SMP mod_unload modversions retpoline '

J'ai trouvé un message de forum avec ce message d'erreur ici d'il y a trois jours, malheureusement sans résolution. J'ai donc essayé de supprimer les paquets VirtualBox du référentiel Ubuntu et d'installer la dernière version 5.2 à l'aide de cette procédure . Cependant, même après le redémarrage de la machine, l'erreur persiste.

Que puis-je faire dans ce cas?

15
matpen

Je faisais face au même problème. Après la mise à niveau du noyau, ma version de gcc était 5.4.1. La mise à niveau de cette version vers la version 5.4.0 m'a aidé à intégrer retpoline au module de noyau vboxdrv.

Suivre les étapes suivantes lien m'a aidé à résoudre mon problème:

Sudo apt-get install ppa-purge
Sudo ppa-purge ppa:ubuntu-toolchain-r/test
#Select gcc version 5 using update-alternatives manually
Sudo update-alternatives --config gcc

Après ces étapes, gcc --version devrait être (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.9) 5.4.0 20160609

Puis purgez tous les nouveaux en-têtes Linux (4.4.0-116)

Sudo apt-get purge linux-headers-4.4.0-116 linux-headers-4.4.0-116-generic linux-image-4.4.0-116-generic linux-image-extra-4.4.0-116-generic linux-signed-image-4.4.0-116-generic

Encore une fois les installer

Sudo apt-get install linux-generic linux-signed-generic

Puis réinstallez virtualbox, j'ai installé la dernière version de virtualbox-5.2 cette fois-ci, mais la version 5.0 par défaut de virtualbox devrait également fonctionner correctement.

Sudo apt-get purge virtualbox-dkms virtualbox virtualbox-qt
Sudo apt-get install virtualbox-5.2

Et, nous avons le support de retpoline dans le dernier module

anirudh@AHDRMD34579:~$ modinfo vboxdrv 
filename:       /lib/modules/4.4.0-116-generic/misc/vboxdrv.ko
version:        5.2.6 r120293 (0x00290000)
license:        GPL
description:    Oracle VM VirtualBox Support Driver
author:         Oracle Corporation
srcversion:     4880B21EFF1B605D6402982
depends:        
vermagic:       4.4.0-116-generic SMP mod_unload modversions retpoline 
parm:           force_async_tsc:force the asynchronous TSC mode (int)
8
Anirudh Gupta

Le problème associé répertorié dans le commentaire de @ricab a été attribué à un problème avec le nouveau noyau nécessitant un certain niveau de version de gcc pour compiler avec succès les modules du noyau.

Sur mon système, la mise à jour gcc a été repoussée APRÈS la mise à jour du noyau, ce qui a entraîné l'échec de la recompilation.

Une fois que la cause fondamentale a été découverte, j'ai pu réparer le système en désinstalant et en réinstallant le nouveau noyau. Cela corrigeait mes pilotes graphiques, mais je devais émettre Sudo /sbin/vboxconfig pour réparer virtualbox après avoir démarré dans le nouveau noyau.

Mon système est 14.04, donc je ne peux pas vous conseiller quant à la version appropriée de gcc pour votre système 16.04, mais ceci est discuté à l’adresse https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/ 1750937

4
Organic Marble