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.
la source
Réponses:
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:
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 ):
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 ):
la source
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
la source
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):
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
.la source
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
la source
Tout comme Alberto
À nouveau opérationnel!
la source
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
la source
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.
la source