36 lines
1.7 KiB
Bash
36 lines
1.7 KiB
Bash
cfg=/boot/grub/grub.cfg
|
|
# Effective settings: /etc/default/grub, then grub.d/*.cfg, as
|
|
# grub-mkconfig reads them.
|
|
setting() {
|
|
(
|
|
. /etc/default/grub >/dev/null 2>&1
|
|
for f in /etc/default/grub.d/*.cfg; do [ -e "$f" ] && . "$f" >/dev/null 2>&1; done
|
|
eval "printf '%s' \"\${$1:-}\""
|
|
)
|
|
}
|
|
first_linux() { awk '$1 == "linux" {print; exit}' "$cfg"; }
|
|
kernels_rebuilt() {
|
|
local k v n=0
|
|
for k in /boot/vmlinuz-*; do
|
|
[ -e "$k" ] || continue
|
|
v=${k#/boot/vmlinuz-}
|
|
[ "/boot/initrd.img-$v" -nt "$LAB_STATE/since" ] || return 1
|
|
n=$((n + 1))
|
|
done
|
|
[ "$n" -gt 0 ]
|
|
}
|
|
|
|
task 1 "GRUB menu for 10 seconds, no quiet or splash"
|
|
need "the settings read by update-grub give GRUB_TIMEOUT_STYLE=menu" '[ "$(setting GRUB_TIMEOUT_STYLE)" = menu ] || [ -z "$(setting GRUB_TIMEOUT_STYLE)" ]'
|
|
need "the settings read by update-grub give GRUB_TIMEOUT=10" '[ "$(setting GRUB_TIMEOUT)" = 10 ]'
|
|
need "the settings have no quiet or splash on the command line" '! printf "%s %s" "$(setting GRUB_CMDLINE_LINUX_DEFAULT)" "$(setting GRUB_CMDLINE_LINUX)" | grep -Ewq "quiet|splash"'
|
|
need "grub.cfg shows the menu for 10 seconds (update-grub)" 'grep -Eq "^[[:space:]]*set timeout=10$" $cfg && ! grep -Eq "timeout_style=(hidden|countdown)" $cfg'
|
|
need "grub.cfg boots the default entry without quiet or splash" '[ -n "$(first_linux)" ] && ! first_linux | grep -Ewq "quiet|splash"'
|
|
need "this boot ran without quiet or splash (/proc/cmdline; reboot)" '! grep -Ewq "quiet|splash" /proc/cmdline'
|
|
|
|
task 2 "Boot into recovery mode and get a writable root shell" self
|
|
task 3 "Boot from grub rescue>, then repair GRUB for good" self
|
|
|
|
task 4 "The initramfs of every installed kernel rebuilt"
|
|
need "every /boot/initrd.img-VERSION is newer than the lab's start (update-initramfs)" kernels_rebuilt
|