Comencé a usar Centos 8 recientemente e instalé VirtualBox para administrar mis máquinas virtuales, el problema que encontré es que mi VirtualBox no podía iniciar ninguna máquina virtual y me dijo que ejecutara este script /sbin/vboxconfig como root, cuando ejecute este script, aparecerá el siguiente mensaje:
vboxdrv.sh: Stopping VirtualBox services. vboxdrv.sh: Starting VirtualBox services. vboxdrv.sh: You must sign these kernel modules before using VirtualBox: vboxdrv vboxnetflt vboxnetadp vboxpci See the documenatation for your Linux distribution.. 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 as root. If your system is using EFI Secure Boot you may need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.Tenga en cuenta que mi arranque seguro está habilitado. Mi pregunta es ¿cómo firmar estos módulos del kernel en Centos 8?
Después de investigar un poco, encontré la solución.
Solución 1: deshabilite el arranque seguro.
Solución 2:
1- Instalar el paquete mokutil
sudo dnf update sudo dnf install mokutil2- Cree la clave RSA en una nueva carpeta.
sudo -i mkdir /root/signed-modules cd /root/signed-modules openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=VirtualBox/" chmod 600 MOK.priv3- Este comando le pedirá que agregue una contraseña, necesitará esta contraseña después del próximo reinicio.
sudo mokutil --import MOK.der4- Reinicie su sistema y aparecerá una pantalla azul, seleccione Inscribir MOK --> Continuar --> ingrese la contraseña anterior y su sistema se iniciará.
5- Coloque los comandos anteriores en un script para ejecutarlo más tarde (después de la actualización del sistema)
cd /root/signed-modules vi sign-virtual-boxAgregue el siguiente cmd a este script:
#!/bin/bash for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do echo "Signing $modfile" /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 \ /root/signed-modules/MOK.priv \ /root/signed-modules/MOK.der "$modfile" doneUse lo siguiente para encontrar el archivo de firma si lo anterior falla y edite el script en consecuencia.
find /usr/src -name signfile5- Agregue permiso ejecutivo y ejecute el script
chmod 700 sign-virtual-box ./sign-virtual-box6- Inicie VirtualBOX
modprobe vboxdrvPara obtener más información, consulte este enlace (para usuarios de ubuntu) https://stegard.net/2016/10/virtualbox-secure-boot-ubuntu-fail/
Actualicé de virtualbox 6.0 a 6.1 y vboxconfig se ejecutó sin error (o sin la necesidad de firmar los módulos del kernel).
Sigo la solución proporcionada por @Younes LAB pero necesitaba cambiar la ruta sign-file de firma en el script sign-virtual-box para que funcione bien:
#!/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/signed-modules/MOK.priv \ /root/signed-modules/MOK.der "$modfile" doneEstoy usando Ubuntu 20.04.2 LTS y VirtualBox 6.1