Faire tourner une caméra virtuelle (v4l2loopback) avec Secure Boot activé (Ubuntu / Debian)

Photo of author
par KrustyHack
publié le

Tu veux une caméra virtuelle sur Linux, mais t’es bloqué par Secure Boot ? T’es pas seul.

C’est exactement ce que j’ai galéré à faire tourner récemment — donc voilà un tuto complet, un peu sale mais efficace, pour que /dev/video10 apparaisse dans ta vie comme par magie

🎯 Objectif

Avoir une caméra virtuelle persistante avec v4l2loopback, qui fonctionne même avec Secure Boot activé, sans devoir désactiver quoi que ce soit dans l’UEFI.

📦 Pré-requis

sudo apt install v4l2loopback-dkms v4l-utils linux-headers-$(uname -r)

⚠️ Le piège Secure Boot

Secure Boot empêche tout module noyau non signé de se charger. Quand tu fais un :

sudo modprobe v4l2loopback

Tu te manges un :

modprobe: ERROR: could not insert 'v4l2loopback': Key was rejected by service

💡 En gros, le noyau dit : “je ne connais pas ce module, dégage”.

🧙‍♂️ Étape 1 : Générer une clé magique (MOK)

mkdir -p ~/modsign
cd ~/modsign

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

🔐 Étape 2 : Importer la clé dans le système

sudo mokutil --import MOK.der

💡 Tu choisis un mot de passe d’au moins 8 caractères (alphanumérique uniquement !).
⚠️ Et attention, le clavier dans l’écran bleu est en QWERTY au redémarrage 😅
Perso j’ai mis jjjjjjjj pour éviter toute crise de nerfs (c’est pas trop grave car c’est un module que tu gères toi).

À LIRE  Git : "fatal : unable to fork"

🔄 Étape 3 : Reboot + écran bleu magique

Redémarre.
Tu verras un écran bleu « MOK Manager » → choisis :

  • Enroll MOK
  • Entre ton mot de passe
  • Valide

La clé est maintenant enrôlée dans ton système 🙌

🔍 Étape 4 : Trouver le bon module .ko

Sur mon système, modprobe essayait de charger un module pourri situé ici :

/lib/modules/$(uname -r)/updates/dkms/v4l2loopback.ko.zst

Mais il était corrompu ou cassé.

Heureusement, j’en ai trouvé un bon ici :

/lib/modules/$(uname -r)/kernel/v4l2loopback/v4l2loopback.ko.zst

📦 Étape 5 : Décompresser et signer le .ko

sudo zstd -d -k /lib/modules/$(uname -r)/kernel/v4l2loopback/v4l2loopback.ko.zst -o /lib/modules/$(uname -r)/kernel/v4l2loopback/v4l2loopback.ko

Puis signer :

sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ~/modsign/MOK.priv ~/modsign/MOK.der /lib/modules/$(uname -r)/kernel/v4l2loopback/v4l2loopback.ko

🎬 Étape 6 : Charger manuellement le module signé

sudo insmod /lib/modules/$(uname -r)/kernel/v4l2loopback/v4l2loopback.ko video_nr=10 card_label="Docker VirtCam" exclusive_caps=1

Et boom 💥

ls /dev/video*

Tu devrais voir /dev/video10

🧪 Tester ta caméra virtuelle

Envoyer une mire de test avec ffmpeg :

ffmpeg -re -f lavfi -i testsrc=size=640x480:rate=25 -f v4l2 /dev/video10

Tu peux aussi streamer une vidéo :

ffmpeg -re -i ma_video.mp4 -map 0:v -f v4l2 /dev/video10

Et ensuite mater ça dans OBS, Zoom, ou même https://webcamtests.com

✅ (Facultatif) : Activer au démarrage

Si tout roule et que tu veux pas refaire insmod à chaque fois, tu peux :

1. Créer un fichier de config :

sudo nano /etc/modprobe.d/v4l2loopback.conf

Avec :

options v4l2loopback video_nr=10 card_label="Docker VirtCam" exclusive_caps=1

2. Supprimer le module DKMS pourri

sudo rm /lib/modules/$(uname -r)/updates/dkms/v4l2loopback.ko.zst
sudo depmod -a

3. Charger le module au boot avec systemd

sudo nano /etc/systemd/system/virtcam.service
[Unit]
Description=Virtual Camera - v4l2loopback
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/modprobe v4l2loopback
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

Et active le tout :

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable virtcam.service

🎉 Résultat

Tu as une caméra virtuelle Docker VirtCam sur /dev/video10, active au boot, signée proprement, et sans désactiver Secure Boot. GG 🏆

Laisser un commentaire