sábado, 13 de agosto de 2022

Como Instalar VirtualBox 6.1 y firmar los modulos del kernel fedora 35 y 36

Cuando requeria ejecutar Virtualbox en un sistema fedora, la única opción viable era  deshabilitar la opción de secureboot en equipo, hasta hace poco, siempre existía la necesidad de firmar los drivers de virtualbox, pero esto no era posible o no había encontrado como hasta ahora.


En esta página se explica el proceso detalladamente. Básicamente los pasos son los siguientes:


Preparar el sistema Fedora:

Pasarnos a modo super usuario

#sudo -i

Ejecutar actualizaciones y limpieza del sistema:

#dnf -y update && dnf -y upgrade && dnf -y autoremove

Instalar cabecéras del kernel y módulos de desarrollo:

#dnf install -y kernel-devel-$(uname -r) kernel-headers

Habilitar los repositorios:


Pasarnos a super usuario

#sudo -i 

Importar la firma de Oracle VirtualBox en nuestros RPM

#rpm --import  https://www.virtualbox.org/download/oracle_vbox.asc
 
Agregar el Repositorio oficial VirtualBox vía DNF:

#dnf config-manager --add-repo https://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo

Instalar VirtualBox en Fedora 36

Instalamos VirtualBox vía DNF

#dnf install -y VirtualBox-6.1

regresar al usuario sin privilegios y ejecutar 

#exit

sudo agregar al usuario normal al grupo vboxusers

#sudo  usermod -aG vboxusers $USER

#sudo -i

Preparar el sistema para firmar los drivers en los sistemas EFI con SecureBoot habilitado

Generar el Machine Owner Key MOK

Instalar OpenSSL
#dnf install -y openssl

Crear el directorio para nuestros módulos:

#mkdir /root/module-signing
#cd /root/module-signing

Crear la llave de la máquina (yo usé hostname) pero ese campo CN se puede personalizar a su gusto:

#openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=$(hostname)/"

Proteger la llave creada

#chmod 600 MOK.priv
 

Ahora vamos a importar la llave generada con la utilidad mokutil, debemos colocar contraseña y reiniciar, esto nos dirigirá a la BIOS donde debemos completar el proceso de importación, colocando la contraseña asignada en este paso.

#mokutil --import /root/module-signing/MOK.der

Al reiniciar presionamos Enter

1. Seleccionamos la opción Enrolar/Inscribir MOK
2. Seleccionamos la opcion View Key 0 (Ver llave 0) para revisar el Machine Owner, si la información es correcta, continuamos.
3. Elegimos continuar y damos la opción YES (si), en seguida se solicita la contraseña que le asingamos a la llave.
4. Reiniciamos el sistema.


Con este MOK agregado a la BIOS nos permitirá firmar nuestros drivers de VirtualBox y así completar el proceso:

creamos el script /root/module-signing/sign-vbox-modules

Nos pasamos a Root:

#sudo -i

Creamos el script con el comando echo.

# echo "
#!/bin/bash

for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
  echo "Signing $modfile"
  /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 \
                                /root/module-signing/MOK.priv \
                                /root/module-signing/MOK.der "$modfile"
done
" > /root/module-signing/sign-vbox-modules

Luego de esto Protegemos el script

#chmod 700 /root/module-signing/sign-vbox-modules

Ahora podemos ejecutar el script:

#/root/module-signing/sign-vbox-modules

Con los drivers firmados podemos habilitar nuestro sistema VirtualBox

#systemctl enable --now vboxdrv


Habilitar las Extensiones de VirtualBox


Descargamos las extensiones:

#wget https://download.virtualbox.org/virtualbox/6.1.34/Oracle_VM_VirtualBox_Extension_Pack-6.1.34.vbox-extpack

Las agregamos al sistema Instalado y Habilitado

#VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.34.vbox-extpack


Y así podemos ya Instalar nuestros sismemas de pruebas con VirtualBox en Fedora 35 - 36




Un saludo.