VirtualBox-Fehler nach dem letzten (Ubuntu) Software-Update

19
  • Ubuntu-Version: 16.04

  • VirtualBox-Version: 5.2.26

  • Aktualisierungen, die etwas "kaputt" gemacht haben: die zwischen letzter Woche und heute (18.03.2019)

Ich habe heute Morgen Ubuntu Software Updater ausgeführt, nachdem ich den Computer eingeschaltet hatte. Danach habe ich versucht, eine Virtual Box-Maschine zu starten (Version, die über .deb installiert wurde, nicht über das Ubuntu Software Center) und habe diesen berühmten Fehler erhalten:

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.

Nachdem ich über ähnliche Probleme gelesen und verstanden hatte, warum ich es tun sollte, führte ich es aus (dieselben Ergebnisse mit 'sudo /usr/lib/virtualbox/vboxdrv.sh setup' und allen anderen Lösungen für ähnliche Probleme / Posts, die ich auf dieser Site gefunden habe ):

$ 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.

Beim Lesen der .log-Datei sehe ich, dass das Problem mit der Funktion "get_user_pages" zu tun zu haben scheint, und zum jetzigen Zeitpunkt habe ich ehrlich gesagt keine Ahnung, wie es zu lösen ist.

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

Ich habe bereits jede Lösung für ähnliche Probleme mit dieser Fehlermeldung ausprobiert, aber keine funktioniert für mich.

Hat jemand nach den letzten Ubuntu-Updates ähnliche Probleme gehabt?

UPDATE: Ich habe VirtualBox vollständig deinstalliert, das System neu gestartet, VirtualBox erneut installiert und immer noch den gleichen Fehler.

Alberto Martín
quelle
2
Absolut. Was ich nicht verstehe, ist, dass es Leute gibt, die behaupten, dass die vorherige "Version" des Fehlers noch am 10. März für Trusty und Xenial behoben werden muss, und heute haben wir eine "neue Version" des Problems.
Alberto Martín
Haben Sie VB 6.0 ausprobiert?
Heynnema
1
Ich habe dies heute gesehen, nachdem einige Hostcomputer auf 4.4.0-143 aktualisiert wurden. Eine hatte eine ziemlich alte Version von VirtualBox (5.0.x) und die andere hatte 5.2.x (also nicht ganz so alt). Nach dem Update würde keiner von beiden meine VMs starten, bei denen das Kernelmodul nicht installiert ist. Ich habe beide Versionen aktualisiert / auf 5.1.38 zurückgesetzt und sie schließlich dazu gebracht, die VMs auszuführen. Wenn ich jedoch versuche, Gastzusätze auf einem der Gäste zu installieren, wird der Fehler get_user_pages in der Datei vboxadd-install.log angezeigt.
Cosimo193
Ich habe vor kurzem den gleichen Fehler erhalten, als ich versucht habe, Virtualbox 5.2.18 und dann v6.0 zu installieren. Mein Latop, ein UEFI-System mit sicherem Start, ist also ein UEFI-System für Sie, wenn ich es zulassen darf weiß wie ich das beheben kann und kann eine lösung liefern. Sie können
Wenn es für jemanden nützlich sein könnte: Es gibt einen Fehlerbericht unter bugs.launchpad.net/ubuntu/+source/virtualbox/+bug/1821083
Ganton

Antworten:

13

Die einfache Antwort: Verwenden Sie das von Vbox bereitgestellte Testbuild, während wir auf einen Kernel-Patch warten.

Den Build finden Sie hier . Sie müssen die aktuellen Links auf dieser Seite verwenden, da sich die hier im Beispiel verwendeten geändert haben.

Stellen Sie sicher, dass Sie Ihre aktuelle Version deinstallieren:

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

Installieren Sie den Testbuild (ändern Sie die URL, um sie an den neuesten von virtualbox bereitgestellten Testbuild anzupassen. Verwenden Sie dazu den obigen Link - 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

Wenn Sie das Erweiterungspaket benötigen (ändern Sie die URL so, dass sie mit dem neuesten von virtualbox bereitgestellten Test-Build übereinstimmt. Verwenden Sie dazu den obigen Link - 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
quelle
1
Vielen Dank, Robco. Ich hatte keine Zeit, es zu versuchen. Ich habe VirtualBox herabgestuft und im Prinzip werde ich nur warten, bis es repariert ist oder bis zum nächsten Kernel (ich brauche wirklich nicht die allerletzte Version von VirtualBox). Ihre Lösung scheint mir jedoch die beste für diejenigen zu sein, die die letzte / vorletzte Version benötigen, sofern sie stabil ist. Hast du es selbst ausprobiert? Ist es stabil
Alberto Martín
Hallo Alberto. Ja, ich bevorzuge es, den Kernel nicht zu downgraden, und ich habe versucht, vbox downzugraden (vielleicht bin ich nicht weit genug zurückgegangen), aber der Treiber konnte immer noch nicht erstellt werden. Ich habe dies für 4 Benutzer getan und hatte keine Probleme.
Robco
1
Vielen Dank für das Feedback, Robco. Hört sich ziemlich gut an. In diesem Fall ist dies wohl die eleganteste Lösung für das bisherige Problem.
Alberto Martín
1
Die neuesten Testbuilds finden Sie auf dieser Seite: virtualbox.org/wiki/Testbuilds .
Tom Saleeba
2
Dies hat eine Einschränkung: "Bitte verwenden Sie auch Version 5.2, wenn Sie weiterhin Unterstützung für 32-Bit-Hosts benötigen, da dies in 6.0 eingestellt wurde." Virtualbox.org/wiki/Downloads . 32-Bit- Gäste werden weiterhin unterstützt.
Piskvor
4

Ich habe die gleichen probleme

Ich bin zurück zum vorherigen Kernel gewechselt. Siehe dies: http://karlcode.owtelse.com/blog/2017/03/13/reverting-to-a-previous-kernel/

Danach installieren Sie die virtuelle Box neu und sie funktioniert wieder.

Grüße Alex

Alex
quelle
Hallo Alex. So viel wie das den Trick wahrscheinlich machen könnte, finde ich es viel zu chaotisch und manchmal riskant, als nur die VirtualBox herunterzustufen, was perfekt funktionieren wird.
Alberto Martín
4

Dies sieht dem bekannten Fehler 1818049 mit dem Namen "virtualbox dkms-Module können unter Linux 4.4.0-143.169 nicht erstellt werden [Fehler: Zu viele Argumente für die Funktion 'get_user_pages']" sehr ähnlich .

Die wirkliche funktionierende Lösung wäre die gleiche wie für das TTY-Problem - entferne den neuesten Kernel und installiere den vorherigen guten ( 4.4.0-138-generic sieht für mich am besten aus - USB 3.0 sicher entfernen wird funktionieren, getty-Problem wird fehlen):

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

und danach neu starten. Wir müssen also auf einen normalen stabilen, gut getesteten Kernel warten .

Warnung: Aktualisieren Sie den Kernel nicht auf 4.4.0-143-generic, wenn Sie VirtualBox für Gäste und Hosts benötigen. Abonnieren Sie den Fehler 1818049 und installieren Sie nach Bestätigung des Fixes den neuesten Kernel wieder mit sudo apt-get install linux-image-generic linux-headers-generic.

Nrrbert
quelle
3

Die einfachste Lösung für Ubuntu 16.04 besteht darin, den Kernel auf die gleiche Version zu aktualisieren, die Ubuntu 18.04 verwendet, indem Sie den folgenden Befehl ausführen:

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

Starten Sie den Computer neu, nachdem Sie den obigen Befehl ausgeführt haben.

Wenn Sie dkms ausführen, müssen Sie die Gastzugaben nach dem Neustart des Computers nicht erneut installieren. Andernfalls installieren Sie die Gast-Ergänzungen neu und es sollte jetzt in Ubuntu 16.04 gut funktionieren

Besitzen
quelle
Vielen Dank, arbeitete für mich
Jason Morgan
2

Sehr ähnlich wie bei Alberto

  1. sudo /usr/lib/virtualbox/vboxdrv.sh setup (Ich bekomme Fehler, aber stoppt VBox ...)
  2. sudo dpkg -l | grep virtualbox (VBox-Version holen.)
  3. sudo apt-get purge virtualbox-5.XYZ virtualbox-qt (XYZ-Version ab Schritt 2)
  4. Von Ubuntu-Software installiert: Es wurde auf 5.1.38 herabgestuft

Wieder einsatzbereit!

Luis Capriles
quelle
2

Nachdem ich mich sehr bemüht hatte, das Problem zu lösen (weder DKMS noch Synaptics scheinen als Problemumgehung nützlich zu sein), war ich nicht in der Lage, dies als vorübergehende Lösung für diejenigen zu tun, die sich in der gleichen Situation befinden und in Ordnung sind Um weiterhin mit Gastcomputern arbeiten zu können, empfehle ich, VirtualBox auf die von USC angebotene Version herunterzustufen.

  • Deinstallieren Sie einfach die aktuelle VirtualBox-Version (ich habe es über Synaptics gemacht, aber GDebi würde auch perfekt funktionieren).

  • Installieren Sie die von VirtualBox USC angebotene Version (entweder über USC oder Synaptics)

  • Downgrade (Deinstallieren-Installieren) des VBoxGuestAdditions-Moduls auf dem Hostcomputer.

  • Denken Sie auf den Gastcomputern daran, VBoxGuestAdditions herunterzustufen (legen Sie die alte VBoxGuestAdditions-CD ein und führen Sie sie aus).

Das Problem / der Fehler ist immer noch vorhanden, da es nicht erlaubt, die letzte VirtualBox-Version zu verwenden. Ich hoffe, es hilft zwar, aber ich würde mich über eine ultimative Lösung freuen, um die .deb-Version erneut installieren und verwenden zu können.

UPDATE: Bisher scheint es keine endgültige Lösung zu geben. In meinem Fall * ist diese weiterhin die einfachste. (* Ich persönlich bevorzuge ein Downgrade von VirtualBox, anstatt zu früheren Ubuntu-Kerneln zurückzukehren).

Wenn jemand jedoch aus irgendeinem Grund die letzte Version von VirtualBox verwenden / installieren muss, kann er dies anhand dieser Anweisungen tun, die auch von anderen Benutzern erwähnt werden: https://bugs.launchpad.net/ubuntu/+source/virtualbox/ + bug / 1818049 / comments / 27

Alberto Martín
quelle
1

Ich habe dieses Problem auch gesehen. Ich habe Ubuntu 16.04 LTS. Es wurde auf 4.4.0-143 Kernel aktualisiert. Virtualbox (5.2.14) würde vboxdrv.ko nicht erstellen. Ein Downgrade auf Kernel 4.4.0-142 (dann -143 entfernen) hat das Problem behoben.

Brian Armstrong
quelle