82 lines
2.1 KiB
INI
82 lines
2.1 KiB
INI
set default=99
|
|
set timeout=1
|
|
|
|
set ORDER="A B"
|
|
set A_OK=0
|
|
set B_OK=0
|
|
set A_TRY=0
|
|
set B_TRY=0
|
|
set MACHINE_ID=""
|
|
load_env
|
|
|
|
# select bootable slot
|
|
for SLOT in $ORDER; do
|
|
if [ "$SLOT" == "A" ]; then
|
|
INDEX=0
|
|
OK=$A_OK
|
|
TRY=$A_TRY
|
|
fi
|
|
if [ "$SLOT" == "B" ]; then
|
|
INDEX=1
|
|
OK=$B_OK
|
|
TRY=$B_TRY
|
|
fi
|
|
if [ "$OK" -eq 1 -a "$TRY" -lt 3 ]; then
|
|
default=$INDEX
|
|
|
|
# increment attempts and save back to slot
|
|
if [ "$TRY" -eq 1 ]; then
|
|
TRY=2
|
|
elif [ "$TRY" -eq 2 ]; then
|
|
TRY=3
|
|
else
|
|
TRY=1
|
|
fi
|
|
|
|
if [ "$SLOT" == "A" ]; then
|
|
A_TRY=$TRY
|
|
fi
|
|
if [ "$SLOT" == "B" ]; then
|
|
B_TRY=$TRY
|
|
fi
|
|
|
|
break
|
|
fi
|
|
done
|
|
|
|
# No bootable slot found, choose rescue...
|
|
if [ "$default" -eq 99 ]; then
|
|
if [ "$A_OK" -eq 1 ]; then
|
|
default=2
|
|
fi
|
|
if [ "$B_OK" -eq 1 ]; then
|
|
default=3
|
|
fi
|
|
fi
|
|
|
|
save_env A_TRY A_OK B_TRY B_OK ORDER MACHINE_ID
|
|
|
|
default_cmdline="rootwait zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=$MACHINE_ID fsck.repair=yes"
|
|
file_env -f ($root)/cmdline.txt cmdline
|
|
|
|
# root is a full HDD/partition definition in GRUB format like hd0,gpt1
|
|
# We extract the part before the comma to then append our own partition index
|
|
# at the end. This is hacky but the best way I found
|
|
regexp --set 1:boothd (.+),.+ ${root}
|
|
|
|
menuentry "Slot A (OK=$A_OK TRY=$A_TRY)" {
|
|
linux (${boothd},gpt2)/bzImage root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd $default_cmdline $cmdline rauc.slot=A
|
|
}
|
|
|
|
menuentry "Slot B (OK=$B_OK TRY=$B_TRY)" {
|
|
linux (${boothd},gpt4)/bzImage root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 $default_cmdline $cmdline rauc.slot=B
|
|
}
|
|
|
|
menuentry "Slot A (rescue shell)" {
|
|
linux (${boothd},gpt2)/bzImage root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd $default_cmdline $cmdline rauc.slot=A systemd.unit=recovery.target
|
|
}
|
|
|
|
menuentry "Slot B (rescue shell)" {
|
|
linux (${boothd},gpt4)/bzImage root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 $default_cmdline $cmdline rauc.slot=B systemd.unit=recovery.target
|
|
}
|