Erreur VirtualBox après la dernière mise à jour du logiciel (Ubuntu)

19
  • Version Ubuntu: 16.04

  • Version de VirtualBox: 5.2.26

  • Mises à jour qui ont "cassé" quelque chose: celles entre la semaine dernière et aujourd'hui (2019/03/18)

J'ai exécuté Ubuntu Software Updater ce matin, après avoir allumé l'ordinateur. Ensuite, j'ai essayé de lancer une machine Virtual Box (version installée via .deb, pas celle d'Ubuntu Software Center) et j'ai eu cette fameuse erreur:

Kernel driver not installed (rc=-1908)

The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing

'/sbin/vboxconfig'

as root.

where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT.

Après avoir lu des problèmes similaires et compris pourquoi devrais-je le faire, je l'ai exécuté (mêmes résultats avec 'sudo /usr/lib/virtualbox/vboxdrv.sh setup' et toutes autres solutions à des problèmes / messages similaires que j'ai trouvés sur ce site ):

$ sudo /sbin/vboxconfig

vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.

En lisant le .log, je vois que le problème semble être lié à la fonction "get_user_pages", et à ce stade, je n'ai honnêtement aucune idée de comment le résoudre.

Building the main VirtualBox module.
Error building the module:
make V=1 CONFIG_MODULE_SIG= -C /lib/modules/4.4.0-143-generic/build SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 -j8 modules
make[1]: warning: -jN forced in submake: disabling jobserver mode.
mkdir -p /tmp/vbox.0/.tmp_versions ; rm -f /tmp/vbox.0/.tmp_versions/*
make -f ./scripts/Makefile.build obj=/tmp/vbox.0
[...]
[...]
[...]
/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c: In function ‘rtR0MemObjNativeLockUser’:
/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:1122:33: warning: passing argument 6 of ‘get_user_pages’ makes pointer from integer without a cast [-Wint-conversion]
                                 fWrite,                 /* force write access. */
                                 ^
In file included from /tmp/vbox.0/r0drv/linux/the-linux-kernel.h:98:0,
                 from /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:31:
include/linux/mm.h:1222:6: note: expected ‘struct page **’ but argument is of type ‘int’
 long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
      ^
/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:1124:33: warning: passing argument 7 of ‘get_user_pages’ from incompatible pointer type [-Wincompatible-pointer-types]
                                 &pMemLnx->apPages[0],   /* Page array. */
                                 ^
In file included from /tmp/vbox.0/r0drv/linux/the-linux-kernel.h:98:0,
                 from /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:31:
include/linux/mm.h:1222:6: note: expected ‘struct vm_area_struct **’ but argument is of type ‘struct page **’
 long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
      ^
/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:1112:18: error: too many arguments to function ‘get_user_pages’
             rc = get_user_pages(pTask,                  /* Task for fault accounting. */
                  ^
In file included from /tmp/vbox.0/r0drv/linux/the-linux-kernel.h:98:0,
                 from /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:31:
include/linux/mm.h:1222:6: note: declared here
 long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
      ^
  gcc -Wp,-MD,/tmp/vbox.0/r0drv/linux/.mpnotification-r0drv-linux.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include  -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated  -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include  -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -DRETPOLINE -fno-delete-null-pointer-checks -Wno-maybe-uninitialized -O2 --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -include /tmp/vbox.0/include/VBox/SUPDrvMangling.h -fno-omit-frame-pointer -fno-pie -I/lib/modules/4.4.0-143-generic/build/include -I/tmp/vbox.0/ -I/tmp/vbox.0/include -I/tmp/vbox.0/r0drv/linux -D__KERNEL__ -DMODULE -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -DVBOX_WITH_HARDENING -DSUPDRV_WITH_RELEASE_LOGGER -Wno-declaration-after-statement -DCONFIG_VBOXDRV_AS_MISC -DRT_ARCH_AMD64 -DVBOX_WITH_64_BITS_GUESTS  -DMODULE  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(mpnotification_r0drv_linux)"  -D"KBUILD_MODNAME=KBUILD_STR(vboxdrv)" -c -o /tmp/vbox.0/r0drv/linux/.tmp_mpnotification-r0drv-linux.o /tmp/vbox.0/r0drv/linux/mpnotification-r0drv-linux.c
scripts/Makefile.build:285: recipe for target '/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o' failed
make[2]: *** [/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o] Error 1
make[2]: *** Waiting for unfinished jobs....
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/initterm-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/initterm-r0drv-linux.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/SUPDrv.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/SUPDrv.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/assert-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/assert-r0drv-linux.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/alloc-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/alloc-r0drv-linux.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/memuserkernel-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/memuserkernel-r0drv-linux.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/mpnotification-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/mpnotification-r0drv-linux.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/mp-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/mp-r0drv-linux.o"; fi; fi;
Makefile:1454: recipe for target '_module_/tmp/vbox.0' failed
make[1]: *** [_module_/tmp/vbox.0] Error 2
/tmp/vbox.0/Makefile.include.footer:101: recipe for target 'vboxdrv' failed
make: *** [vboxdrv] Error 2

J'ai déjà essayé toutes les solutions pour des problèmes similaires avec ce message d'erreur, mais aucune ne fonctionne pour moi.

Quelqu'un a-t-il eu des problèmes similaires après les dernières mises à jour d'Ubuntu?

MISE À JOUR: J'ai complètement désinstallé VirtualBox, redémarré le système, installé VirtualBox à nouveau et toujours la même erreur.

Alberto Martín
la source
2
Absolument. Ce que je ne comprends pas, c'est qu'il y a des gens qui prétendent que la "version" précédente de l'erreur doit être résolue pour Trusty et Xenial ce 10 mars et nous avons aujourd'hui une "nouvelle version" du problème.
Alberto Martín
Avez-vous essayé VB 6.0?
heynnema
1
Je l'ai vu aujourd'hui après la mise à jour de quelques machines hôtes vers 4.4.0-143. L'un avait une assez ancienne version de VirtualBox (5.0.x) et l'autre avait 5.2.x (donc pas tout à fait aussi vieux). Après la mise à jour, aucun d'eux ne lancerait mes machines virtuelles montrant le problème du module du noyau non installé. J'ai mis à niveau / suis revenu à 5.1.38 sur les deux, pour finalement les faire exécuter les machines virtuelles. Cependant, lorsque j'essaie d'installer des ajouts d'invités sur l'un des invités, j'obtiens l'erreur get_user_pages dans le fichier vboxadd-install.log.
cosimo193
J'ai eu la même erreur récemment lorsque j'ai essayé d'installer Virtualbox 5.2.18 puis v6.0, mon latop qui est un système UEFI avec Secure Boot, donc il y a une complication supplémentaire, est le vôtre un système UEFI, s'il me le permet savoir comme je sais comment réparer cet adn peut fournir une solution. Vous pouvez confirmer que votre système est UEFI ou non en exécutant la commande: cd / sys / firmware / efi
Si cela peut être utile pour n'importe qui: il y a un rapport de bug sur bugs.launchpad.net/ubuntu/+source/virtualbox/+bug/1821083
Ganton

Réponses:

13

Pour l'instant, la réponse est simple: utilisez le test de construction fourni par Vbox pendant que nous attendons un correctif du noyau.

Vous pouvez trouver la version ici . Vous devrez utiliser les liens actuels fournis sur cette page car ceux utilisés ici dans l'exemple ont changé.

Assurez-vous de désinstaller votre version actuelle:

sudo apt remove virtualbox*
dkpk -r virtualbox 
# the tab key will autocomplete the version if there's one for dpkg to remove

Installez la version de test (modifiez l'URL pour qu'elle corresponde à la dernière version de test fournie par virtualbox en utilisant le lien ci-dessus - https://www.virtualbox.org/wiki/Testbuilds ):

wget https://www.virtualbox.org/download/testcase/VirtualBox-6.0.5-129423-Linux_amd64.run
chmod +x VirtualBox-6.0.5-129423-Linux_amd64.run
sudo ./VirtualBox-6.0.5-129423-Linux_amd64.run

Si vous avez besoin du pack d'extension (modifiez l'URL pour qu'elle corresponde à la dernière version de test fournie par virtualbox en utilisant le lien ci-dessus - https://www.virtualbox.org/wiki/Testbuilds ):

wget https://www.virtualbox.org/download/testcase/Oracle_VM_VirtualBox_Extension_Pack-6.0.5-129380.vbox-extpack
sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.0.5-129380.vbox-extpack
Robco
la source
1
Merci Robco. Je n'ai pas eu le temps de l'essayer; J'ai déclassé VirtualBox et en principe, j'attendrai juste qu'il soit corrigé ou juste jusqu'au prochain noyau (je n'ai vraiment pas besoin de la toute dernière version de VirtualBox). Cependant votre solution me semble la meilleure pour ceux qui ont besoin de la dernière / avant dernière version, pour autant qu'elle soit stable. L'avez-vous essayé vous-même? Est-il stable?
Alberto Martín
Salut Alberto. Oui, je préfère ne pas rétrograder le noyau et j'ai essayé de rétrograder vbox (peut-être que je ne suis pas allé assez loin) mais le pilote n'a toujours pas pu être construit. J'ai fait cela pour 4 utilisateurs et je n'ai eu aucun problème.
Robco
1
Merci pour les commentaires Robco. Cela semble assez bon. Dans ce cas, je suppose que c'est la solution la plus élégante au problème jusqu'à présent.
Alberto Martín
1
Vous pouvez trouver les dernières versions de test sur cette page: virtualbox.org/wiki/Testbuilds .
Tom Saleeba
2
Ceci a une mise en garde: "Veuillez également utiliser la version 5.2 si vous avez toujours besoin de la prise en charge des hôtes 32 bits, car cela a été interrompu dans la version 6.0" virtualbox.org/wiki/Downloads . Les invités 32 bits sont toujours pris en charge.
Piskvor
4

J'ai les mêmes problèmes.

Je suis revenu au noyau précédent. Voir ceci: http://karlcode.owtelse.com/blog/2017/03/13/reverting-to-a-previous-kernel/

après cela, réinstallez la boîte virtuelle et cela fonctionne à nouveau.

Cordialement Alex

Alex
la source
Salut Alex. Autant que cela pourrait probablement faire l'affaire, je trouve cela beaucoup trop compliqué et parfois risqué que de simplement rétrograder la très VirtualBox, qui fonctionnera parfaitement.
Alberto Martín
4

Cela ressemble beaucoup au bogue 1818049 connu appelé "les modules virtualbox dkms ne parviennent pas à se construire avec linux 4.4.0-143.169 [erreur: trop d'arguments pour fonctionner 'get_user_pages']" " .

La vraie solution de travail serait la même que pour le problème TTY - supprimez les derniers noyaux et installez le bon précédent ( 4.4.0-138-generic me semble le mieux - USB 3.0 remove en toute sécurité fonctionnera, le problème de Getty sera absent):

sudo apt-get purge linux-image-generic linux-headers-generic
sudo apt-get purge linux-image-4.4.0-139-generic linux-headers-4.4.0-139-generic \
linux-image-4.4.0-140-generic linux-headers-4.4.0-140-generic \
linux-image-4.4.0-141-generic linux-headers-4.4.0-141-generic \
linux-image-4.4.0-142-generic linux-headers-4.4.0-142-generic \
linux-image-4.4.0-143-generic linux-headers-4.4.0-143-generic

sudo apt-get install amd64-microcode intel-microcode thermald
sudo apt-get autoremove

sudo apt-get install linux-image-4.4.0-138-generic linux-image-extra-4.4.0-138-generic
sudo apt-get install linux-headers-4.4.0-138 linux-headers-4.4.0-138-generic

et redémarrez ensuite. Nous devons donc attendre un noyau stable et bien testé normal .

Avertissement: ne mettez pas à niveau le noyau vers 4.4.0-143-generic si vous avez besoin de VirtualBox sur les invités et les hôtes. Abonnez-vous au bogue 1818049 et après la confirmation du correctif - réinstallez le dernier noyau avec sudo apt-get install linux-image-generic linux-headers-generic.

N0rbert
la source
3

La solution la plus simple pour Ubuntu 16.04 consiste à mettre à niveau le noyau vers la même version qu'Ubuntu 18.04 utilise en exécutant la commande suivante:

sudo apt-get install --install-recommends linux-generic-hwe-16.04

Redémarrez après avoir exécuté la commande ci-dessus.

Si vous exécutez dkms, vous n'aurez pas à réinstaller les ajouts d'invité après le redémarrage de la machine. Sinon, réinstallez les ajouts d'invités, et cela devrait bien fonctionner maintenant dans Ubuntu 16.04

Posséder
la source
Merci, a travaillé pour moi
Jason Morgan
2

Tout comme Alberto

  1. configuration sudo /usr/lib/virtualbox/vboxdrv.sh (j'obtiens des erreurs, mais arrête la VBox ...)
  2. sudo dpkg -l | grep virtualbox (obtenez la version VBox.)
  3. sudo apt-get purge virtualbox-5.XYZ virtualbox-qt (version XYZ de l'étape 2)
  4. Installé à partir du logiciel Ubuntu: il est rétrogradé à 5.1.38

À nouveau opérationnel!

Luis Capriles
la source
2

Après avoir essayé assez dur de le résoudre (ni DKMS ni Synaptics ne semblent être utiles pour contourner le problème), je n'ai pas pu le faire, donc comme solution TEMPORAIRE pour ceux qui pourraient être dans la même situation, et juste pour pour pouvoir continuer à travailler avec les machines invitées, je suggère de rétrograder VirtualBox vers la version proposée par USC.

  • Désinstallez simplement la version actuelle de VirtualBox (je l'ai fait via Synaptics, mais GDebi fonctionnerait parfaitement aussi).

  • Installer la version offerte par VirtualBox USC (via USC ou Synaptics)

  • Rétrograder (désinstaller-installer) le module VBoxGuestAdditions sur la machine hôte.

  • Sur les machines invitées, n'oubliez pas de rétrograder VBoxGuestAdditions (insérez l'ancien CD VBoxGuestAdditions et exécutez-le).

Le problème / l'erreur est toujours là car il ne permet pas d'utiliser la dernière version de VirtualBox, j'espère que cela aide, mais j'apprécierais une solution ultime afin de pouvoir réinstaller et utiliser la version .deb.

MISE À JOUR: Jusqu'à présent, il semble qu'il n'y ait pas de solution ultime, donc dans mon cas * celui-ci continue d'être le plus simple. (* Personnellement, je préfère rétrograder VirtualBox au lieu de revenir aux noyaux Ubuntu précédents).

Cependant, si pour une raison quelconque quelqu'un a besoin d'utiliser / installer la toute dernière version de VirtualBox, il pourrait le faire en suivant ces instructions, également mentionnées par d'autres utilisateurs: https://bugs.launchpad.net/ubuntu/+source/virtualbox/ + bug / 1818049 / commentaires / 27

Alberto Martín
la source
1

J'ai également vu ce problème. J'ai Ubuntu 16.04 LTS. Il a mis à jour le noyau 4.4.0-143. Virtualbox (5.2.14) ne construirait pas vboxdrv.ko. La rétrogradation vers le noyau 4.4.0-142 (puis la suppression de -143) a résolu le problème.

Brian Armstrong
la source