← RETOUR À L'INDEX
/tutoriels/ infrastructure / ubuntu-dual-boot-luks-—-dracut-et-clavier-usb-au-boot.md

Ubuntu dual-boot LUKS — dracut et clavier USB au boot

Diagnostiquer et corriger une urgency mode dracut sur un Ubuntu chiffré LUKS en dual-boot : timing USB, modules initramfs, crypttab, et SMART NVMe.

CAT · INFRA LECTURE · 5 min PUBLIÉ · 2026-05-15

[TUTO-17] Ubuntu dual-boot LUKS — dracut et clavier USB au boot

Objectif

Résoudre le dracut emergency mode sur un Ubuntu 24.04/26.04 chiffré LUKS quand le clavier USB n’est pas prêt au moment du prompt de passphrase.

Symptôme : le boot affiche dracut: FATAL: Failed to decrypt ou passe en emergency mode à la saisie de la passphrase LUKS. Fonctionne au second tentative.

Prérequis

  • Ubuntu 24.04 ou 26.04 avec chiffrement LUKS actif
  • Accès à un boot de secours (dual-boot, live USB, ou second boot réussi)
  • smartmontools (installation couverte dans ce tuto)

Étape 1 — Diagnostiquer la cause

# Lire les logs du boot précédent
journalctl -b -1 | grep -E "(dracut|luks|crypt|usb|xhci|hid)" | head -30

# Identifier le timing critique
journalctl -b -1 | grep -E "(xhci|hidraw|input)" | head -10
# Si le timestamp xhci et le prompt LUKS sont à < 1 seconde d'écart :
# → c'est un problème de timing USB, pas de config LUKS

Causes fréquentes à distinguer :

SymptômeCauseFix
Clavier ne répond pas au prompt LUKSUSB HID non initialisé à tempsModules usbhid dans initramfs
Failed to find deviceUUID LUKS incorrect dans crypttabVérifier UUID avec blkid
Fonctionne uniquement au 2e bootRace condition xHCIMême fix modules USB
Echec aléatoireVieux SSD/HDD lentAugmenter le timeout crypttab

Étape 2 — Vérifier crypttab

cat /etc/crypttab
# Format attendu : dm_crypt-0 UUID=xxxx-xxxx none luks,discard

# Vérifier que l'UUID correspond bien à la partition chiffrée
blkid | grep crypto_LUKS
# Comparer les UUID — doivent être identiques

⚠️ Sécurité : l’option discard (TRIM passthrough) améliore les performances sur NVMe mais révèle au niveau du disque physique quels blocs sont utilisés. Sur un NVMe personnel non partagé, c’est un compromis acceptable et recommandé. Sur un système à haute confidentialité, désactiver TRIM.


Étape 3 — Ajouter les modules USB à dracut

# Créer le fichier de config dracut
sudo tee /etc/dracut.conf.d/usbhid.conf << 'EOF'
# Modules HID USB nécessaires pour le clavier au prompt LUKS
# usbhid : pilote générique USB HID (claviers, souris)
# usbkbd : pilote clavier USB bas niveau (fallback)
# usbmouse : pilote souris USB (bon à avoir)
add_drivers+=" usbhid usbkbd usbmouse "
EOF

⚠️ Piège fréquent : ne pas confondre add_drivers et add_dracutmodules. add_dracutmodules+=" usb-storage " ajoute le module de stockage USB (clés USB, disques) — complètement différent des pilotes HID clavier/souris. add_drivers pour les modules kernel, add_dracutmodules pour les modules dracut.

Régénérer l’initramfs :

# Identifier le kernel actif
uname -r  # ex: 6.8.0-57-generic

# Régénérer
sudo dracut --force --verbose /boot/initramfs-$(uname -r).img $(uname -r)

# Vérifier que les modules sont bien inclus
sudo lsinitramfs /boot/initramfs-$(uname -r).img | grep -E "usbhid|usbkbd"
# Attendu : kernel/drivers/hid/usbhid/usbhid.ko.zst ou similaire

Étape 4 — Vérifier la santé du NVMe

Profiter du contexte pour vérifier l’état du disque :

sudo apt install smartmontools -y
sudo smartctl --all /dev/nvme0 | grep -E "(Power_On|Unsafe|Wear|Temperature|Health)"

# Mettre à jour la base de données SMART
sudo update-smart-drivedb

Valeurs à surveiller :

AttributValeur OKValeur préoccupante
Wear leveling< 10%> 80%
Unsafe shutdowns< 5> 20 ou en croissance
Media errors0> 0
Temperature< 50°C> 70°C

⚠️ Sécurité : les “unsafe shutdowns” augmentent lors de coupures brutales. Sous Ubuntu avec LUKS, une coupure sans démontage propre peut corrompre le header LUKS. Garder une sauvegarde du header : sudo cryptsetup luksHeaderBackup /dev/nvme0p3 --header-backup-file luks-header.bak Stocker ce fichier hors du disque chiffré.


Étape 5 — Redémarrer et valider

# Reboot et vérifier le boot qui suit
sudo reboot

# Après reboot, confirmer que les modules étaient bien là
journalctl -b 0 | grep -E "(usbhid|luks|dracut.*OK|unlock)" | head -20

# Confirmer l'absence d'emergency mode dans le boot précédent
journalctl -b 0 | grep "emergency" | wc -l
# Attendu : 0

Checklist ☑ :

  • crypttab : UUID correct, option luks,discard présente
  • /etc/dracut.conf.d/usbhid.conf : directive add_drivers (pas add_dracutmodules)
  • lsinitramfs : modules usbhid confirmés dans l’initramfs
  • SMART NVMe : 0 media errors, wear < 10%
  • Header LUKS sauvegardé hors du disque chiffré
  • Boot suivant : aucun emergency mode

Dépannage

ProblèmeVérification
Toujours en emergency mode après fixjournalctl -b -1 | grep dracut — chercher une cause différente
lsinitramfs ne montre pas usbhidVérifier la syntaxe add_drivers+=" usbhid " (espaces autour)
dracut --force échouesudo apt install dracut-core si non installé
Autre disque LUKS détecté (conflit VG)vgscan → noter tous les VG → vgchange -an NOM_VG_INUTILE

Références

VR · 2026-05-15 · vraffin.dev FIN DU DOCUMENT