Errore di VirtualBox dopo l'ultimo aggiornamento del software (Ubuntu)


19
  • Versione di Ubuntu: 16.04

  • Versione di VirtualBox: 5.2.26

  • Aggiornamenti che hanno "rotto" qualcosa: quelli tra la scorsa settimana e oggi (2019/03/18)

Ho eseguito Ubuntu Software Updater questa mattina, dopo aver acceso il computer. Successivamente ho provato a lanciare una macchina Virtual Box (versione installata tramite .deb, non quella di Ubuntu Software Center) e ho ottenuto il famoso errore:

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.

Dopo aver letto problemi simili e aver capito perché dovrei farlo, l'ho eseguito (stessi risultati con 'sudo /usr/lib/virtualbox/vboxdrv.sh setup' e qualsiasi altra soluzione a problemi / post simili che ho trovato su questo sito ):

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

Leggendo il .log, vedo che il problema sembra essere correlato alla funzione "get_user_pages" e, a questo punto, onestamente non ho idea di come risolverlo.

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

Ho già provato ogni soluzione per problemi simili con questo messaggio di errore, ma nessuno funziona per me.

Qualcuno ha avuto problemi simili dopo gli ultimi aggiornamenti di Ubuntu?

AGGIORNAMENTO: Ho disinstallato completamente VirtualBox, riavviato il sistema, ho installato nuovamente VirtualBox e ancora lo stesso errore.


2
Assolutamente. Quello che non capisco è che ci sono persone che affermano che la precedente "versione" dell'errore deve essere risolta per Trusty e Xenial proprio il 10 marzo e oggi abbiamo una "nuova versione" del problema.
Alberto Martín,

Hai provato VB 6.0?
heynnema il

1
L'ho visto oggi dopo aver aggiornato un paio di macchine host su 4.4.0-143. Uno aveva una versione piuttosto vecchia di VirtualBox (5.0.x) e l'altro aveva 5.2.x (quindi non abbastanza vecchio). Dopo l'aggiornamento nessuno dei due avviava le mie VM mostrando il problema con il modulo kernel non installato. Ho aggiornato / ripristinato la versione 5.1.38 su entrambi, riuscendo infine a far funzionare le macchine virtuali. Tuttavia, quando provo a installare le aggiunte guest su uno dei guest, ottengo l'errore get_user_pages nel file vboxadd-install.log.
cosimo193,

Recentemente ho avuto lo stesso errore quando ho tentato di installare Virtualbox 5.2.18 e poi v6.0, il mio latop che è un sistema UEFI con Secure Boot, quindi c'è un'ulteriore complicazione, è tuo un sistema UEFI, se me lo permette so come so come risolvere questo annuncio e può fornire una soluzione. Puoi confermare che il tuo sistema è UEFI o meno eseguendo il comando: cd / sys / firmware / efi

Se può essere utile per chiunque: c'è una segnalazione di bug su bugs.launchpad.net/ubuntu/+source/virtualbox/+bug/1821083
Ganton

Risposte:


13

La risposta semplice, per ora - usa il testbuild fornito da Vbox mentre aspettiamo una patch del kernel.

Puoi trovare la build qui . Dovrai usare i collegamenti attuali forniti in quella pagina perché quelli usati qui nell'esempio sono cambiati.

Assicurati di disinstallare la versione corrente:

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

Installa la build di test (modifica l'URL in modo che corrisponda all'ultima build di test fornita da virtualbox utilizzando il link sopra - 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

Se hai bisogno del pacchetto di estensione (modifica l'URL in modo che corrisponda all'ultima build di test fornita da virtualbox utilizzando il link sopra - 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

1
Grazie Robco. Non ho avuto il tempo di provarlo; Ho eseguito il downgrade di VirtualBox e in linea di principio aspetterò fino a quando non verrà risolto o fino al prossimo kernel (non ho davvero bisogno dell'ultima versione di VirtualBox). Comunque la tua soluzione mi sembra la migliore per chi ha bisogno dell'ultima / prima dell'ultima versione, per quanto stabile. L'hai provato tu stesso? È stabile?
Alberto Martín,

Ciao Alberto Sì, preferisco non eseguire il downgrade del kernel e ho provato a eseguire il downgrade di vbox (forse non sono tornato abbastanza indietro) ma il driver non è stato ancora in grado di essere compilato. Ho fatto questo per 4 utenti e non ho avuto problemi.
Robco,

1
Grazie per il feedback Robco. Sembra abbastanza buono. In tal caso, suppongo che questa sia la soluzione più elegante al problema finora.
Alberto Martín,

1
Puoi trovare gli ultimi build di test in questa pagina: virtualbox.org/wiki/Testbuilds .
Tom Saleeba,

2
Questo ha un avvertimento: "Utilizzare anche la versione 5.2 se è ancora necessario il supporto per host a 32 bit, poiché questo è stato sospeso in 6.0" virtualbox.org/wiki/Downloads . I guest a 32 bit sono ancora supportati.
Piskvor,


4

Questo sembra molto simile al noto bug 1818049 chiamato "moduli dkms virtualbox non riescono a compilare con linux 4.4.0-143.169 [errore: troppi argomenti per far funzionare 'get_user_pages']" .

La vera soluzione funzionante sarebbe la stessa del problema TTY - rimuovi i kernel più recenti e installa quello precedente buono ( 4.4.0-138-generico mi sembra migliore - la rimozione USB 3.0 funzionerà in modo sicuro , il problema getty sarà assente):

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

e riavviare in seguito. Quindi dobbiamo aspettare il normale kernel stabile e ben testato .

Avvertenza: non aggiornare il kernel a 4.4.0-143-generico se è necessario VirtualBox su guest e host. Abbonati al bug 1818049 e dopo la conferma della correzione - reinstalla il kernel più recente con sudo apt-get install linux-image-generic linux-headers-generic.


3

La soluzione più semplice per Ubuntu 16.04 è aggiornare il kernel alla stessa versione utilizzata da Ubuntu 18.04 eseguendo il comando seguente:

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

Riavvia dopo aver eseguito il comando sopra.

Se si esegue dkms, non sarà necessario reinstallare le aggiunte guest dopo il riavvio del computer. Altrimenti, reinstalla le aggiunte degli ospiti e ora dovrebbe funzionare bene in Ubuntu 16.04


Grazie, ha funzionato per me
Jason Morgan il

2

Molto simile a quello di Alberto

  1. sudo /usr/lib/virtualbox/vboxdrv.sh setup (ottengo errori, ma arresta VBox ...)
  2. sudo dpkg -l | grep virtualbox (ottieni la versione di VBox.)
  3. sudo apt-get purge virtualbox-5.XYZ virtualbox-qt (versione XYZ dal passaggio 2)
  4. Installato dal software Ubuntu: declassato alla 5.1.38

Di nuovo funzionante!


2

Dopo aver provato abbastanza duramente a risolverlo (né DKMS né Synaptics sembrano essere utili come soluzione alternativa al problema), non sono stato in grado di farlo, quindi come soluzione TEMPORANEA per coloro che potrebbero trovarsi nella stessa situazione, e solo per per poter continuare a lavorare con le macchine guest, suggerisco di effettuare il downgrade di VirtualBox alla versione che USC offre.

  • Basta disinstallare l'attuale versione di VirtualBox (l'ho fatto tramite Synaptics, ma anche GDebi avrebbe funzionato perfettamente).

  • Installa la versione USC di VirtualBox (tramite USC o Synaptics)

  • Modulo VBoxGuestAdditions downgrade (disinstallazione-installazione) nel computer host.

  • Nelle macchine guest, ricordati di eseguire il downgrade di VBoxGuestAdditions (inserisci il vecchio CD VBoxGuestAdditions ed eseguilo).

Il problema / errore è ancora presente poiché non consente di utilizzare l'ultima versione di VirtualBox, spero che sia di aiuto, ma apprezzerei una soluzione definitiva per poter installare e utilizzare di nuovo la versione .deb.

AGGIORNAMENTO: Finora sembra che non ci sia la soluzione definitiva, quindi nel mio caso * questa continua ad essere la più semplice. (* Personalmente preferisco eseguire il downgrade di VirtualBox invece di tornare ai precedenti kernel di Ubuntu).

Tuttavia, se per qualsiasi motivo qualcuno dovesse utilizzare / installare l'ultima versione di VirtualBox, potrebbe farlo seguendo queste istruzioni, menzionate anche da altri utenti: https://bugs.launchpad.net/ubuntu/+source/virtualbox/ + bug / 1.818.049 / commenti / 27


1

Ho visto anche questo problema. Ho Ubuntu 16.04 LTS. È stato aggiornato al kernel 4.4.0-143. Virtualbox (5.2.14) non creava vboxdrv.ko. Il downgrade al kernel 4.4.0-142 (quindi la rimozione di -143) ha risolto il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.