mirror of
https://github.com/home-assistant/operating-system.git
synced 2026-04-17 23:54:06 +01:00
If the system fails to boot, some kernel messages may not be shown before the system fully boots. Enable the debug option for rescue shell options to have an easy way to see those without modifying GRUB options. This will increase log verbosity and turn on debug logging for Systemd as well [1]. [1] https://www.freedesktop.org/software/systemd/man/latest/systemd.html#debug
86 lines
2.2 KiB
INI
86 lines
2.2 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
|
|
|
|
if [ "$MACHINE_ID" == "" ]; then
|
|
boot_condition="systemd.condition-first-boot=true"
|
|
fi
|
|
|
|
save_env A_TRY A_OK B_TRY B_OK ORDER MACHINE_ID
|
|
|
|
default_cmdline="rootwait zram.enabled=1 zram.num_devices=3 systemd.machine_id=$MACHINE_ID fsck.repair=yes $boot_condition"
|
|
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 debug
|
|
}
|
|
|
|
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 debug
|
|
}
|