Versión de Ubuntu: 16.04
Versión de VirtualBox: 5.2.26
Actualizaciones que han "roto" algo: las de la semana pasada y hoy (18/03/2018)
Ejecuté Ubuntu Software Updater esta mañana, después de encender la computadora. Luego intenté iniciar una máquina Virtual Box (versión instalada a través de .deb, no la Ubuntu Software Center) y obtuve ese famoso error:
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.
Después de leer sobre problemas similares y entender por qué debería hacerlo, lo ejecuté (los mismos resultados con 'sudo /usr/lib/virtualbox/vboxdrv.sh setup' y cualquier otra solución a problemas / publicaciones similares que he encontrado en este sitio ):
$ 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.
Al leer el .log, veo que el problema parece estar relacionado con la función "get_user_pages", y en este punto, sinceramente, no tengo idea de cómo resolverlo.
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
Ya he probado todas las soluciones para problemas similares con este mensaje de error, pero ninguna me funciona.
¿Alguien ha tenido problemas similares después de las últimas actualizaciones de Ubuntu?
ACTUALIZACIÓN: desinstalé completamente VirtualBox, reinicié el sistema, volví a instalar VirtualBox y sigo con el mismo error.
fuente
Respuestas:
La respuesta fácil, por ahora: use el testbuild proporcionado por Vbox mientras esperamos un parche de kernel.
Puedes encontrar la construcción aquí . Deberá usar los enlaces actuales proporcionados en esa página porque los que se usan aquí en el ejemplo han cambiado.
Asegúrese de desinstalar su versión actual:
Instale la compilación de prueba (cambie la url para que coincida con la última compilación de prueba proporcionada por virtualbox usando el enlace anterior - https://www.virtualbox.org/wiki/Testbuilds ):
Si necesita el paquete de extensión (cambie la url para que coincida con la última versión de prueba proporcionada por virtualbox usando el enlace anterior - https://www.virtualbox.org/wiki/Testbuilds ):
fuente
Tengo los mismos problemas.
Regresé al kernel anterior. Vea esto: http://karlcode.owtelse.com/blog/2017/03/13/reverting-to-a-previous-kernel/
después de eso reinstale la caja virtual y está funcionando nuevamente.
Saludos Alex
fuente
Esto se parece mucho al error conocido 1818049 llamado "los módulos dkms de virtualbox no se pueden construir con Linux 4.4.0-143.169 [error: demasiados argumentos para funcionar 'get_user_pages']" .
La solución de trabajo real sería la misma que para el problema de TTY : elimine los núcleos más recientes e instale uno bueno anterior ( 4.4.0-138-genérico se ve mejor para mí: la eliminación segura de USB 3.0 funcionará, el problema de getty estará ausente):
y reiniciar después. Por lo tanto, debemos esperar al núcleo normal estable y bien probado .
Advertencia: no actualice el kernel a 4.4.0-143-generic si necesita VirtualBox en invitados y hosts. Suscríbase al error 1818049 y, después de la confirmación de la corrección, instale nuevamente el kernel más reciente
sudo apt-get install linux-image-generic linux-headers-generic
.fuente
La solución más fácil para Ubuntu 16.04 es actualizar el kernel a la misma versión que usa Ubuntu 18.04 ejecutando el siguiente comando:
sudo apt-get install --install-recommends linux-generic-hwe-16.04
Reinicie después de ejecutar el comando anterior.
Si ejecuta dkms, no tendrá que reinstalar las adiciones de invitados después de que la máquina se reinicie. De lo contrario, reinstale las adiciones de invitados, y debería funcionar bien ahora en Ubuntu 16.04
fuente
Muy parecido al de Alberto
¡Arriba y corriendo de nuevo!
fuente
Después de esforzarme bastante por resolverlo (ni DKMS ni Synaptics parecen ser útiles como solución al problema), no he podido hacerlo, por lo tanto, como solución TEMPORAL para aquellos que podrían estar en la misma situación, y en orden para poder seguir trabajando con máquinas invitadas, sugiero degradar VirtualBox a la versión que ofrece USC.
Simplemente desinstale la versión actual de VirtualBox (lo hice a través de Synaptics, pero GDebi también funcionaría perfectamente).
Instale la versión ofrecida por VirtualBox USC (ya sea a través de USC o Synaptics)
Bajar de categoría (desinstalar-instalar) módulo VBoxGuestAdditions en la máquina host.
En las máquinas invitadas, recuerde degradar VBoxGuestAdditions (inserte el viejo CD VBoxGuestAdditions y ejecútelo).
El problema / error sigue ahí, ya que no permite usar la última versión de VirtualBox, espero que ayude, pero agradecería una solución definitiva para poder instalar y usar la versión .deb nuevamente.
ACTUALIZACIÓN: Hasta ahora parece que no hay una solución definitiva, por lo que en mi caso * esta sigue siendo la más simple. (* Personalmente, prefiero degradar VirtualBox en lugar de volver a los núcleos de Ubuntu anteriores).
Sin embargo, si por alguna razón alguien necesita usar / instalar la última versión de VirtualBox, podría hacerlo siguiendo estas instrucciones, también mencionadas por otros usuarios: https://bugs.launchpad.net/ubuntu/+source/virtualbox/ + error / 1818049 / comentarios / 27
fuente
También vi este problema. Tengo Ubuntu 16.04 LTS. Se actualizó al kernel 4.4.0-143. Virtualbox (5.2.14) no construiría vboxdrv.ko. La degradación al kernel 4.4.0-142 (luego la eliminación de -143) resolvió el problema.
fuente