No se pudo cargar 'vboxdrv' después de la actualización a Ubuntu 16.04 (y quiero mantener el arranque seguro)

130

Actualicé Ubuntu 15.10 a 16.04 y desde entonces VirtualBox 5.0.18 ya no inicia mis máquinas virtuales. Se queja de que 'vboxdrv' no está cargado. Así que trato de cargarlo y obtengo el siguiente error:

$ sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Creo que está relacionado con el arranque seguro que uso y que quiero seguir usando. En realidad, con Ubuntu 15.10, el arranque seguro y VirtualBox funcionaban bien.

También probé $ sudo apt-get --reinstall install virtualbox-dkmsqué construyó el módulo del kernel con éxito pero no resolví este problema.

¿Alguna idea de cómo cargar vboxdrv mientras se mantiene habilitado el arranque seguro?

Actualización 2 : también intenté ejecutar sudo mokutil --disable-validation. Cuando ejecuto este comando, durante el siguiente inicio, se me solicita que desactive el inicio seguro, agregue una clave o hash del disco. Como no quiero deshabilitar el arranque seguro, parece que esto tampoco resuelve mi problema. También quiero mantener UEFI activado para una instalación paralela de Windows.

Nota : Si no le importa deshabilitar el arranque seguro, consulte ¿Por qué obtengo "La clave requerida no está disponible" cuando instalo módulos de kernel de terceros o después de una actualización de kernel? en lugar.

jans
fuente
Aunque esta pregunta es un duplicado de askubuntu.com/questions/762254/… , esa pregunta no presenta la respuesta dada por @Majal a continuación.
zwets
1
Guía paso a paso: stegard.net/2016/10/virtualbox-secure-boot-ubuntu-fail
Dušan Maďar
Fwiw, para los empleados de Google: con Ubuntu 18.04, la instalación aptitude install virtualbox virtualbox-dkms será firmar el módulo y que pida una contraseña de una sola vez (?). Reinicie, ingrese la configuración MOK e inscriba la clave usando esa contraseña.
Rafael

Respuestas:

177

Desde la versión de kernel 4.4.0-20, se impuso que los módulos de kernel no firmados no se puedan ejecutar con Secure Boot habilitado. Como desea mantener el Arranque seguro, el siguiente paso lógico es firmar esos módulos.

Entonces probémoslo.

  1. Crear claves de firma

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive common name/"
    

    Opción : para seguridad adicional, omita el interruptor -nodes, que le pedirá una contraseña. Luego, antes de pasar al siguiente paso, asegúrese deexport KBUILD_SIGN_PIN='yourpassword'

  2. Firme el módulo (vboxdrv para este ejemplo, pero repita para otros módulos ls $(dirname $(modinfo -n vboxdrv))/vbox*.ko)para una funcionalidad completa)

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. Confirme que el módulo está firmado

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. Registre las claves para el arranque seguro

    sudo mokutil --import MOK.der
    

    que pedirá una contraseña para usar para confirmar la importación en el siguiente paso.

  5. Reinicie y siga las instrucciones para inscribir MOK (clave del propietario de la máquina). Aquí hay una muestra con fotos. El sistema se reiniciará una vez más.

  6. Confirme que la clave está registrada

    mokutil --test-key MOK.der
    

Si VirtualBox todavía no se carga, puede ser porque el módulo no se cargó ( sudo modprobe vboxdrvlo arreglará) o porque la clave no está firmada. Simplemente repita ese paso y todo debería funcionar bien.

Recursos: Artículo detallado del sitio web para la implementación de Fedora y Ubuntu de la firma de módulos. @zwets para seguridad adicional . @shasha_trn por mencionar todos los módulos .

Recurso adicional: creé un script bash para mi propio uso cada vez que virtualbox-dkmsrealizo actualizaciones y, por lo tanto, sobrescribe los módulos firmados. Mira mi vboxsign originalmente en GitHub .

Majal
fuente
77
También firmé módulos vboxnetadp, vboxnetflt, vboxpci para tener dispositivos de red y pasar pci en máquinas virtuales.
sasha_trn
44
Extendiendo la respuesta de @ majal, tuve que ejecutar sudo apt install --reinstall virtualbox-dkmsantes de seguir las instrucciones proporcionadas.
TylersSN
1
@zwets, ¿podría explicar cómo establecer correctamente la KBUILD_SIGN_PINvariable ambiental? export KBUILD_SIGN_PIN=passwordy export KBUILD_SIGN_PIN="password"antes del paso 2 ambos resultaron enSSL error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read: pem_pkey.c:117
adempewolff el
3
@adempewolff Si su contraseña contiene caracteres que su intérprete interpretará (por ejemplo, '$' en una cadena entre comillas), deberá encerrarlos en apóstrofos (').
zwets
1
@Majal ¡Gracias por tu respuesta! También estoy a favor de firmar los módulos en lugar de deshabilitar la función. Puedo agregar: (1) Esto también se aplica a los módulos VMware "vmmon" y "vmnet", que comparten el mismo destino. (2) Mientras agrega sus claves creadas, elija su contraseña sabiamente. Durante la fase de reinicio y de inicio seguro, la distribución del teclado puede diferir de la configuración regional. (-> US-Layout)
un mb el
15

En mi sistema hice lo siguiente para que funcione:

Ejecute mokutil:

sudo mokutil --disable-validation

Luego, mokutil me pidió que estableciera una contraseña para el Administrador MOK. Después de reiniciar la PC, el BIOS mostró un cuadro de diálogo para configurar el Administrador MOK. Inhabilité SecureBoot desde este cuadro de diálogo, solicitó varios caracteres de la contraseña (es decir, ingrese el carácter (5), etc.).

Después de arrancar, los módulos vboxdrv se cargaron correctamente.

lsmod | grep vboxdrv
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci

Curiosamente, mokutil todavía muestra que SecureBoot está habilitado:

sudo mokutil --sb-state
SecureBoot enabled
Pocho
fuente
99
Como se indicó en mi pregunta, quiero seguir usando el arranque seguro. Entonces, deshabilitar el arranque seguro no resuelve el problema.
Jans
2
No quería deshabilitar el arranque seguro, pero al final tuve que hacer esto, ya que nada más funcionaría; no quiero comenzar a firmar las cosas manualmente cada vez que llega una actualización del kernel. Lástima que esta sea la única solución fácil para avanzar. Por cierto, UEFI todavía dice que el arranque seguro está habilitado. ¯_ (ツ) _ / ¯
jaywink
4

Puede deshabilitar la verificación de validación

sudo apt install mokutil
sudo mokutil --disable-validation

Después de eso, los paquetes DKMS deberían instalarse.

Piloto6
fuente
2
También intenté ejecutar sudo mokutil --disable-validation. Cuando ejecuto este comando, durante el siguiente inicio, se me solicita que desactive el inicio seguro, agregue una clave o hash del disco. Como no quiero deshabilitar el arranque seguro, parece que esto tampoco resuelve mi problema. Avíseme en caso de que haya entendido mal este comando.
Jans
2
Intenta deshabilitar el arranque seguro. Puede habilitarlo nuevamente, si eso no ayuda.
Pilot6
Traté de deshabilitar el arranque seguro, pero todavía está habilitado :( (ubuntu 18.04)
xhudik
0

También recibí un error sobre vboxdrv después de la actualización. Pero hubo un problema con la versión anterior (5.0.14) de Oracle VM VirtualBox Extension Pack. Descargué e instalé una versión más reciente (5.0.18) de este paquete y el problema desapareció.

Reling
fuente
Oye, ¿podrías dar más detalles? ¿De dónde lo bajaste? PPA o archivo de deb?
Karthik Nishanth
1
Descargué el paquete de extensión de las descargas en el sitio de VirtualBox , el enlace es "VirtualBox 5.0.18 Oracle VM VirtualBox Extension Pack -> Todas las plataformas compatibles ". Luego abrí Archivo> Preferencias en Oracle VM Virtual Box Manager, seleccioné "Extensiones" y agregué el archivo descargado a la lista. Reemplazó la versión anterior de "Oracle VM VirtualBox Extension Pack" (era 5.0.14rxxxxxx).
Reling
1
El paquete de extensión no rectifica el error. El error se trata de firmar el módulo
Karthik Nishanth
Esto no se aplica a mi problema.
enero
1
Esto no está relacionado con el problema del OP. El mensaje de error "La clave requerida no está disponible" indica que el problema se debe a un módulo del núcleo sin firmar en una plataforma habilitada para arranque seguro. Ninguna actualización de VirtualBox puede solucionar esto a menos que incluya un módulo firmado con una clave de confianza del núcleo. Es decir, Canonical debe firmarlo u Oracle debe firmarlo y su clave pública debe agregarse a las claves confiables del núcleo (o de su plataforma).
zwets
0

Muy bien, después de un poco de prueba, estoy bastante seguro de que este es un problema de arranque seguro.

Como en si está habilitado, esto se lanza:

ADVERTENCIA: El módulo del núcleo vboxdrv no está cargado. O no hay ningún módulo disponible para el núcleo actual (4.4.0-21-generic) o no se pudo cargar. Vuelva a compilar el módulo del núcleo e instálelo mediante la configuración sudo / sbin / rcvboxdrv

Sin embargo, si el inicio seguro está deshabilitado, virtualbox se carga bien sin errores.

Todavía tengo mi BIOS configurada como UEFI.

David Haynes
fuente
3
Como se indicó en mi pregunta, quiero seguir usando el arranque seguro. Entonces, deshabilitar el arranque seguro no resuelve el problema.
enero
0

Tuve el mismo problema hoy, tenía Windows 10 y Ubuntu 15.10 en un arranque dual con uefi habilitado en Bios (no lo desactivé para poder ejecutar Windows preinstalado).

Después de actualizar a Ubuntu 16.04, VirtualBox dejó de cargar mis máquinas virtuales con el mismo mensaje de error:

modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Sospeché un problema de UEFI porque durante la actualización, el instalador me preguntó si quería deshabilitarlo, a lo que respondí que no (porque sí puede hacer que mi Windows sea inutilizable).

Lo que hice fue ir a Bios y habilitar el soporte para el arranque de BIOS heredado SIN deshabilitar el arranque seguro.

Virtualbox funciona bien ahora.

Actualización : como @zwets señaló correctamente en el comentario, habilitar los módulos heredados hace que el arranque seguro se deshabilite.

Zeine77
fuente
2
En realidad, también necesito UEFI para iniciar una instalación paralela de Windows. Entonces deshabilitarlo tampoco es una opción para mí. Actualicé mi pregunta en consecuencia.
Jans
¿Ha habilitado el soporte para módulos BIOS heredados? Esta es otra opción en la BIOS UEFI, diferente al arranque seguro.
Zeine77
1
@ Zeine77 ¿puede verificar que su BIOS permite habilitar "módulos heredados" mientras Secure Boot permanece habilitado ? Esto es altamente improbable, ya que la primera opción permite que se ejecute código no confiable en el espacio del kernel, lo que anula el propósito de la segunda.
zwets
@zwets tienes razón, acabo de comprobar la configuración de mi BIOS; y la habilitación de módulos heredados provocó que el inicio seguro se deshabilitara. Asumí, como se explica en la respuesta, que deshabilitar el arranque seguro causaría un error en el arranque de Windows 10, este no es el caso. Cuando instalé 15.10 por primera vez (hace meses), tuve cuidado de no deshabilitar el arranque seguro, ya que esto dañaría la instalación de Win 10. ¿Esto significa que el Win 10 pre instalado funciona bien con el modo seguro desactivado?
Zeine77