wrolpi/debian-live-config/config/hooks/normal/9999-rebrand-bootmenu.binary
lrnselfreliance c6613dfee0
Some checks are pending
Backend Tests / api-tests (core) (push) Waiting to run
Backend Tests / api-tests (files) (push) Waiting to run
Backend Tests / api-tests (media) (push) Waiting to run
Backend Tests / api-tests (rest) (push) Waiting to run
Backend Tests / api-contract-tests (push) Waiting to run
Backend Tests / api-migrations-and-start (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Cypress Tests / cypress-component-tests (push) Waiting to run
Cypress Tests / cypress-e2e-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
Debian ISO: hostname defaults to wrolpi, boot menu times out (#836)
* Debian ISO: hostname defaults to wrolpi, boot menu times out

The installer's hostname question defaulted to "debian", so an install that
kept the default was not reachable at wrolpi.local.  A preseed in the
installer initrd now defaults it to wrolpi; the question is still shown (and
a DHCP-provided hostname still wins).

The ISO's GRUB and ISOLINUX menus had no timeout, so a Live USB waited at the
boot menu forever after any reboot or power loss.  The menus now boot the
default entry ("Run WROLPi (live)") after 10 seconds.

check-iso.sh fails the build if either regresses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Debian ISO: say what the wrolpi hostname is for

The image does not include avahi-daemon, so the hostname alone does not make
wrolpi.local resolve.  The default still names the TLS certificate, the
SMB/NetBIOS share, and the DHCP hostname a router may publish.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 06:59:21 -06:00

61 lines
2.3 KiB
Bash
Executable file

#!/bin/sh
# Rebrand the live-build generated boot menus, and boot the default entry
# ("Run WROLPi (live)") after a timeout so a Live USB comes back on its own
# after a reboot or power loss.
#
# live-build invokes binary hooks with cwd = the build's binary/ directory
# (it does `cd binary && ../hook`), so paths here are relative to binary/.
#
# live-build templates substitute @LINUX_LIVE@ etc. with text like
# "Live system (amd64)" (see /usr/lib/live/build/binary_grub_cfg) and
# similar strings into ISOLINUX live.cfg. We can't override the
# substitution source without patching live-build itself; instead this
# hook runs after the binary stage generated the files and seds the
# strings in place.
#
# splash.png on the GRUB / ISOLINUX menus is replaced via
# config/includes.binary/{boot/grub,isolinux}/splash.png — those land
# automatically and overwrite the auto-generated Debian splash (which
# contained the yellow hardhat and a "Debian GNU/Linux 12 (bookworm)
# amd64" line).
set -e
# GRUB (UEFI + grub-pc)
for f in boot/grub/grub.cfg \
boot/grub/install_start.cfg \
boot/grub/install.cfg; do
if [ -f "$f" ]; then
sed -i \
-e 's|Live system (amd64)|Run WROLPi (live)|g' \
-e 's|Live system (amd64 fail-safe mode)|Run WROLPi (live, fail-safe)|g' \
-e "s|'Start installer'|'Install WROLPi'|g" \
-e "s|'Start installer with speech synthesis'|'Install WROLPi (speech)'|g" \
"$f"
fi
done
# ISOLINUX (BIOS)
for f in isolinux/live.cfg \
isolinux/install.cfg; do
if [ -f "$f" ]; then
sed -i \
-e 's|Live system (amd64)|Run WROLPi (live)|g' \
-e 's|Live system (amd64 fail-safe mode)|Run WROLPi (live, fail-safe)|g' \
-e 's|Start ^installer|Install WROLPi|g' \
-e 's|Start installer with ^speech synthesis|Install WROLPi (speech)|g' \
"$f"
fi
done
# Boot the default entry after 10 seconds (live-build sets no timeout, so the
# menu waited forever). Any key stops the countdown.
BOOT_MENU_TIMEOUT=10
# GRUB (UEFI): grub.cfg sources config.cfg, which sets default=0.
if [ -f boot/grub/config.cfg ]; then
echo "set timeout=${BOOT_MENU_TIMEOUT}" >> boot/grub/config.cfg
fi
# ISOLINUX (BIOS): timeout is in tenths of a second; 0 waits forever.
if [ -f isolinux/isolinux.cfg ]; then
sed -i "s|^timeout 0$|timeout $((BOOT_MENU_TIMEOUT * 10))|" isolinux/isolinux.cfg
fi