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).
🔄 É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 🏆