Détecter
Repérer les symptômes: entrée non UKI, Measured UKI absent, emergency mode ou écart de version du noyau.
Runbook public pour diagnostiquer et réparer un UKI en retard après mise à jour kernel, mkinitcpio, Secure Boot ou chaîne LUKS/TPM.
Repérer les symptômes: entrée non UKI, Measured UKI absent, emergency mode ou écart de version du noyau.
Lire bootctl, uname, ukify inspect, sbctl et journaux pour identifier l'écart.
Reconstruire initramfs et UKI, vérifier la signature, puis recentrer systemd-boot.
Faire gérer l'UKI par le preset mkinitcpio pour éviter la dérive après les futures mises à jour.
Après une mise à jour, le système peut continuer à booter sur une entrée classique ou sur un UKI obsolète. L'écran emergency peut faire croire à un compte root verrouillé alors que la cause réelle est une divergence UKI, LUKS, TPM ou cmdline.
Les symptômes sont publiés comme états observables, sans journaux bruts.
entrée courante entrée fallback ou chargeur classique
UKI mesurée non
résultat boot mode d'urgence
message visible root account locked peut être trompeur
vrai soupçon dérive UKI / LUKS / TPM / cmdline
Le point critique est de comparer le noyau courant et le noyau embarqué dans l'UKI.
noyau en cours <CURRENT_LTS_KERNEL>
.uname embarqué dans l'UKI <UKI_KERNEL_VERSION>
attendu les valeurs correspondent
si écart reconstruire l'UKI et vérifier la signature
La prévention durable est décrite par les clés nécessaires, pas par le chemin privé complet.
ALL_cmdline='<KERNEL_CMDLINE_FILE>'
default_uki='<SIGNED_UKI_OUTPUT>'
effet:
mise à jour noyau -> mkinitcpio -P -> initramfs + UKI régénérées
Les commandes ci-dessous sont volontairement anonymisées: chemins, noms de machines, interfaces, dépôts, périphériques et actions destructrices sont remplacés par des placeholders.
bootctl status
bootctl list
efibootmgr -v
uname -r
ukify inspect <SIGNED_UKI_IMAGE>
sbctl verify
journalctl -b -0 -p err..alert --no-pager
journalctl -b -0 --no-pager | rg -n 'emergency|root account is locked|cryptsetup|TPM|luks|unlock|failed|timeout'
l'entrée courante est identifiée
l'état de Measured UKI est explicite
le noyau embarqué dans l'UKI peut être comparé à uname
l'état de signature Secure Boot est visible
les logs d'urgence sont inspectés pour les échecs de chaîne de déverrouillage
mkinitcpio -P
ukify build --linux <LTS_KERNEL> --initrd <MICROCODE_IMAGE> --initrd <INITRAMFS_IMAGE> --cmdline <KERNEL_CMDLINE> --output <SIGNED_UKI_IMAGE>
sbctl verify
sbctl sign -s <SIGNED_UKI_IMAGE>
bootctl set-default <UKI_BOOT_ENTRY>
bootctl status
les initramfs sont régénérées
l'UKI est reconstruite depuis le noyau LTS courant
la signature est vérifiée et réparée si nécessaire
le défaut systemd-boot est recentré sur l'UKI
l'état est contrôlé avant reboot
inspect <REPO_PRESET_PATH>
rg 'ALL_cmdline|default_uki' <REPO_PRESET_PATH>
install -Dm644 <REPO_PRESET_PATH> <TARGET_PRESET_PATH>
mkinitcpio -P
ukify inspect <SIGNED_UKI_IMAGE>
le preset contient un chemin cmdline explicite
le preset contient un chemin de sortie UKI par défaut
l'installation cible est une étape d'intégration système volontaire
les futures mises à jour LTS régénèrent l'UKI
la dérive root=/dev/gpt-auto-root est évitée
Les commandes lisent l'état boot, EFI, noyau courant, UKI inspecté, signature et erreurs du boot.
Le runbook reconstruit initramfs, UKI, signature et entrée par défaut sans publier de chemin réel.
La prévention décrit le rôle de ALL_cmdline et default_uki avec placeholders.
Supplément de documentation privée anonymisé
Ce runbook couvre les cas où l'UKI reste en retard après une mise à jour de noyau, mkinitcpio, Secure Boot ou de la chaîne LUKS/TPM. Les chemins, entrées, dépôts et artefacts réels sont remplacés par des placeholders.
bootctl status affiche Measured UKI: no.bootctl status
bootctl list
efibootmgr -v
uname -r
ukify inspect <SIGNED_UKI_IMAGE>
sbctl verify
journalctl -b -0 -p err..alert --no-pager
journalctl -b -0 --no-pager | rg -n 'emergency|root account is locked|cryptsetup|TPM|luks|unlock|failed|timeout'
Current Entry sur une entrée classique signifie que le boot courant n'est pas l'UKI nominal.Measured UKI: no signifie que la voie UKI mesurée n'est pas active..uname dans ukify inspect doit correspondre au noyau courant..uname est en retard, l'UKI doit être reconstruit.Régénérer les initramfs:
mkinitcpio -P
Reconstruire l'UKI avec le noyau LTS courant:
ukify build --linux <LTS_KERNEL> --initrd <MICROCODE_IMAGE> --initrd <INITRAMFS_IMAGE> --cmdline <KERNEL_CMDLINE> --output <SIGNED_UKI_IMAGE>
Vérifier et réparer la signature si nécessaire:
sbctl verify
sbctl sign -s <SIGNED_UKI_IMAGE>
Recentrer systemd-boot puis vérifier l'état:
bootctl set-default <UKI_BOOT_ENTRY>
bootctl status
Le correctif durable consiste à faire gérer l'UKI par le preset mkinitcpio LTS afin que les mises à jour reconstruisent aussi l'UKI avec la cmdline explicite.
ALL_cmdline='<KERNEL_CMDLINE_FILE>'
default_uki='<SIGNED_UKI_IMAGE>'
Installation système volontaire depuis le dépôt de préparation:
install -Dm644 <REPO_PRESET_PATH> <TARGET_PRESET_PATH>
mkinitcpio -P
ukify inspect <SIGNED_UKI_IMAGE>
Avec ce preset, les futures mises à jour du kernel LTS repassent par mkinitcpio -P avec régénération de l'UKI sur la cmdline explicite.
journalctl -b -0 -p err..alert --no-pager
journalctl -b -0 --no-pager | rg -n 'emergency|root account is locked|cryptsetup|TPM|luks|unlock|failed|timeout'
ukify inspect <SIGNED_UKI_IMAGE> | sed -n '1,120p'
rg -n '^HOOKS=' <MKINITCPIO_CONFIG>
mkinitcpio -P reconstruit les initramfs et peut déclencher des hooks, mais ne garantit pas la régénération de l'UKI si celui-ci est géré à part. L'UKI doit être reconstruit explicitement ou confié au preset mkinitcpio.