e5bc082049
Clean up residual 'FWS WinPE' boot entries left over from Windows deployment fallback (bcdboot one-shot already consumed). These entries were cluttering the boot menu and needed to be removed during the boot fix process.
32 lines
1.5 KiB
Bash
32 lines
1.5 KiB
Bash
#!/bin/bash
|
|
# ============================================================
|
|
# fws-gameboot-bootfix — exécuté à CHAQUE démarrage de FWS (oneshot systemd).
|
|
#
|
|
# Réasserte BootOrder[0] = FWS. Filet de sûreté PERMANENT : après un Windows
|
|
# Update qui remet « Windows Boot Manager » en tête de BootOrder, ou après tout
|
|
# crash/reboot non géré, un boot SANS BootNext retombe toujours sur FWS (jamais
|
|
# coincé côté Windows ; l'image d'hibernation reste accessible).
|
|
#
|
|
# Inerte sur le live (le service porte ConditionPathExists=!/run/archiso).
|
|
# ============================================================
|
|
set -u
|
|
[ -d /sys/firmware/efi ] || exit 0
|
|
command -v efibootmgr >/dev/null 2>&1 || exit 0
|
|
|
|
fws="$(efibootmgr 2>/dev/null | sed -n 's/^Boot\([0-9A-Fa-f]\{4\}\)\*\? *\(FWS\|GRUB\).*/\1/p' | head -1)"
|
|
[ -n "$fws" ] || exit 0
|
|
|
|
# Nettoyer une entrée « FWS WinPE » résiduelle du déploiement Windows (repli
|
|
# bcdboot, one-shot déjà consommé) : sinon elle traîne dans le menu de boot.
|
|
for pe in $(efibootmgr 2>/dev/null | sed -n 's/^Boot\([0-9A-Fa-f]\{4\}\)\*\? *FWS WinPE.*/\1/p'); do
|
|
efibootmgr -b "$pe" -B >/dev/null 2>&1 || true
|
|
done
|
|
|
|
# BootOrder[0] = FWS (sans dupliquer, en préservant l'ordre existant derrière).
|
|
order="$(efibootmgr 2>/dev/null | sed -n 's/^BootOrder: //p' | tr -d '[:space:]')"
|
|
if [ -n "$order" ] && [ "${order%%,*}" != "$fws" ]; then
|
|
rest="$(printf '%s' "$order" | tr ',' '\n' | grep -vx "$fws" | paste -sd, -)"
|
|
efibootmgr -o "${fws}${rest:+,$rest}" >/dev/null 2>&1 || true
|
|
fi
|
|
exit 0
|