Retour à l'accueil

Secure Boot et clé MOK

Avec Secure Boot actif, les modules VirtualBox et NVIDIA doivent être signés : la clé MOK, l'écran bleu, et les pièges

Le symptôme

VirtualBox est installé, dkms status dit installed, et pourtant aucune machine virtuelle ne démarre. Dans les journaux : « You must sign these kernel modules before using VirtualBox: vboxdrv vboxnetflt vboxnetadp ». Sur un poste, le service vboxdrv qui bouclait sur ce message avait gonflé /var/log/syslog.1 à 50 Go. Avec Secure Boot activé (fréquent sur les Dell Latitude), les modules DKMS non signés refusent de se charger.

mokutil --sb-state
lsmod | grep vboxdrv

« SecureBoot enabled » et vboxdrv absent : c'est ici.

La procédure MOK complète

  1. Générer la clé (une seule fois par poste) :
    sudo mkdir -p /var/lib/shim-signed/mok
    sudo openssl req -new -x509 -newkey rsa:2048 -keyout /var/lib/shim-signed/mok/MOK.priv -outform DER -out /var/lib/shim-signed/mok/MOK.der -nodes -days 36500 -subj "/CN=VBoxMOK/"
  2. Demander l'enrôlement. Il demande un mot de passe temporaire : simple (par exemple 8 chiffres), l'écran bleu est en clavier US.
    sudo mokutil --import /var/lib/shim-signed/mok/MOK.der
    mokutil --list-new

    --list-new doit montrer la clé en attente.

  3. Dire à DKMS de signer avec cette clé :
    echo "mok_signing_key=/var/lib/shim-signed/mok/MOK.priv
    mok_certificate=/var/lib/shim-signed/mok/MOK.der" | sudo tee -a /etc/dkms/framework.conf
  4. Redémarrer et enrôler à l'écran bleu. Présence physique obligatoire (rien à faire en SSH), délai d'environ 10 secondes au démarrage, navigation aux flèches : « Perform MOK management », « Enroll MOK », « Continue », « Yes », taper le mot de passe (clavier US), « Reboot ».
  5. Après le redémarrage, vérifier et reconstruire :
    mokutil --list-enrolled | grep VBoxMOK
    sudo rcvboxdrv setup
    sudo systemctl start vboxdrv && sudo systemctl status vboxdrv
    lsmod | grep vboxdrv

Quand l'installation demande elle-même le mot de passe

Sur un poste neuf, sudo apt install virtualbox (ou sudo ubuntu-drivers install pour NVIDIA) détecte Secure Boot et affiche un écran bleu « Configuring Secure Boot » pendant l'installation : choisir un mot de passe simple, le noter. Au redémarrage suivant, l'écran bleu MOK Manager apparaît : même séquence qu'à l'étape 4. Si on saute cette étape, le module ne charge pas ; l'affichage continue de marcher pour NVIDIA (l'Intel affiche), mais VirtualBox reste sans vboxdrv.

Dépannage de l'enrôlement

Le grep est vide après le redémarrage Enrôlement raté : écran bleu manqué par le délai, ou mauvais mot de passe. Réimporter (sudo mokutil --import ...) et redémarrer en surveillant l'écran.
« already in the enrollment request » mais --list-new vide État contradictoire. Tenter le redémarrage direct ; sinon sudo mokutil --reset, redémarrer, choisir « Reset MOK », puis recommencer le cycle proprement (deux redémarrages).
« not a valid x509 certificate in DER format » mokutil --import exige un certificat x509 en DER. openssl x509 -pubkey -noout sort du PEM : importer MOK.der directement.
Le journal a gonflé sudo truncate -s 0 /var/log/syslog.1 /var/log/syslog puis sudo systemctl restart rsyslog.

Récapitulatif

ObjectifCommande
État de Secure Bootmokutil --sb-state
Clés en attentemokutil --list-new
Clés enrôléesmokutil --list-enrolled
Reconstruire et signer VirtualBoxsudo rcvboxdrv setup
Module chargé ?lsmod filtré sur vboxdrv

Les pages du site