Problemas con VirtualBox 5.2 y Linux Mint 19 con Secure Boot

Virtualbox 5.2 error no kernel driver execute sbin vboxconfig not working02

Hace algún tiempo que tengo una Latitude 7490 como mi equipo principal de oficina, la utilizo principalmente para gestionar equipos de storage DELL EMC y  varias coas a las cuales ahora estoy enfocado, pero sigo trabajando en Linux Mint 19 como mi distro princial de producción (siempre confiable, siempre funcional, todo listo desde la instalación) pero esta ocasión tuve un problema algo extraño. VirtualBox no arranca y no podría configurar los módulos del Kernel Linux para poder crear/construir los módulos que permiten ejecutar las máquinas virtuales y después de investigar un rato encontré esta solución.

Problemas con VirtualBox 5.2 y Linux Mint 19 con Secure Boot

El síntoma más raro que se presentó fue que al instalar virtualbox mostraba un error parecido a este:

vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.

There were problems setting up VirtualBox. To re-start the set-up process, run
/sbin/vboxconfig

Algo similar pasaba entes cuando no se tenían los headers de VirtualBox o que no se habían instalados los paquetes de desarrollo o el build-essential, pero este no fue el caso.

Cuando se intentaba iniciar una máquina virtual se mostraba un error como este:

Virtualbox error on start linux mint ubuntu secure boot error01

Seguido de una pantalla que indica que el driver del Kernel no se ha instalado y donde recomienda que ejecutes el comando sudo /sbin/vboxconfig pero que igual genera el error anteriormente descrito.

Virtualbox 5.2 error no kernel driver execute sbin vboxconfig not working02

El problema es que tu instalación de Linux utiliza Secure Boot, al menos en mi caso fue la instalación de Linux Mint 19 usando UEFI y secure boot (esto es una molestia enorme, «its a pain in de ass» dicen los gringos) pero bueno hay que resolverlo.

El post en el que me basé está aquí:

VirtualBox + Secure Boot + Ubuntu = fail

El autor da crédito a otos enlaces y sitios donde existe información que ayudó a crear esta solución, la fuente de información que se usó aplica específicamente para Fedora/Redhat:
http://gorka.eguileor.com/vbox-vmware-in-secureboot-linux-2016-update/

También se utilizó una pregunta muy relevante de Ask Ubuntu:
http://askubuntu.com/questions/760671/could-not-load-vboxdrv-after-upgrade-to-ubuntu-16-04-and-i-want-to-keep-secur

El autor original utilizó Ubuntu 16.04 en una Dell Latitude E7440 con BIOS A18, y con dual boot de Windows 10. Yo utilicé Linux Mint 19 en una Dell Latitude 7490 con BIOS A15 y de igual forma un dual boot con Windows 10 pro y secure boot activado.

Pasos para hacer que VirtualBox funcione en Linux Mint 19 / Ubuntu / Debian

  1. Instala el paquete virtualbox. Si la instalación detecta que el Secure Boot está activado se mostrará una opción para des habilitar «Secure Boot». Selecciona “No”.
  2. Crea un key-par público/privado RSA personal, el cual se usará para firmar los módulos del Kernel. Yo seleccioné la cuenta de root para hacer el directorio /root/module-signing/ en el cual se va a almacenar todos lo relacionado al firmado de los módulos del kernel.
    $ sudo -i
    
    # mkdir /root/module-signing
    
    # cd /root/module-signing
    
    # openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=TU_NOMBRE/"
    
    [...]
    
    # chmod 600 MOK.priv
  3. Usa la utilería MOK (“Machine Owner Key”) para importar la llave pública y que pueda el sistema tener confianza en esta llave. Este proceso tiene dos pasos, el primero donde la llave es importada y el segundo donde la llave debe ser cargada al momento de que la máquina inicie. Se debe asigna un password simple ya que es para uso temporal.
    # mokutil --import /root/module-signing/MOK.der
    input password:
    input password again:
  4. Se debe reiniciar la máquina. Cuando el cargador de arranque inicia, el gestor MOK del gestor EFI debe arrancar de forma automática y deberás indicar que se desea cargar un llave, selecciona la key que has creado y te pedirá el password que has proporcionado en el paso  3. Luego selecciona “Enroll MOK”, y veras la llave que has importado en el paso 3. Completa los pasos del registro de la llave y continua con el arranque de la máquina. El Kernel Linux tendrá registro de la llave que haz cargado y podrás ver tu propia llave con el comando: dmesg|grep 'UEFI:MokListRT cert'
  5. Usando una la utilería que se incluye en los archivos de los builts del kernel, firma todos los módulos de VirtualBox usando la llave privada MOK que se generó en el paso 2. Debes crear un pequeño script en /root/module-signing/sign-vbox-modules, y puedes ejecutarlo fácilmente cuando se instalen nuevos kernels  como parte de las actualizaciones. Agrega este código al script:
    #!/bin/bash
    
    for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
      echo "Signing $modfile"
      /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 \
                                    /root/module-signing/MOK.priv \
                                    /root/module-signing/MOK.der "$modfile"
    done

    Luego cambia los permisos para hacerlo ejecutable solo por el usuario root

    chmod 700 /root/module-signing/sign-vbox-modules
  6. Ejecuta el script del paso 5 como root. Vas a necesitar ejecutar este script cada vez que haya una actualización del kernel, ya que será necesario reconstruir los módulos de VirtualBox. Usa este script solo después de que haya arrancado la máquina con el nuevo kernel ya que el script se basa en los comandos modinfo -n y uname -r para saber cual kernel firmar.
    /root/module-signing/sign-vbox-modules
  7. Carga el módulo vboxdrv y arranca VirtualBox:
    modprobe vboxdrv

Una vez que hayas realizado estos pasos podrás arrancar una máquina virtual de VirtualBox en un Linux mint 19 o Ubuntu 18.04 usando el secure boot.

 

This entry was posted in Linux Mint and tagged , , , . Bookmark the permalink.

2 Responses to "Problemas con VirtualBox 5.2 y Linux Mint 19 con Secure Boot"

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*


Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.