Dorian 436f337a13 feat: custom boot branding, MBR fix, Plymouth theme, CI smoke tests
Boot fix:
- Ship proven Debian Live MBR (4552) as branding/isohdpfx.bin — the
  ISOLINUX package MBR (33ed) doesn't boot on all hardware. This was
  the root cause of "machine doesn't pick up the USB".

Branding:
- Custom GRUB background: pixel-art floating island (1024x574)
- Archipelago pixel-art logo for Plymouth boot splash
- GRUB theme: dark background, orange selected item, no broken font refs
- Plymouth theme: script-based with progress bar, LUKS prompt support
- Plymouth + splash added to target rootfs packages
- GRUB theme installed on both installer ISO and target system
- Serial console (ttyS0) added to kernel params for QEMU debugging

CI improvements:
- Smoke test step: mounts ISO, verifies all critical files, checks
  initrd has live-boot, confirms boot=live in grub.cfg. Fails build
  before copying to Builds if any check fails.

Dev workflow:
- dev-branding.sh: extract ISO, swap branding, repackage, boot in QEMU
  (~10 seconds vs 20 min full rebuild)
- generate-grub-background.py: procedural cyberpunk background generator
- generate-plymouth-logo.py: procedural logo generator
- Improved test-iso-qemu.sh: --bios/--nographic flags, serial logging

Build:
- Simplified live-boot install (clean chroot, no complex fallbacks)
- Static branding images preferred, generators as fallback

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 11:34:29 +00:00

48 lines
870 B
Plaintext

# Archipelago GRUB Theme
# Dark background with Bitcoin orange accents
# Font references removed — GRUB uses whatever fonts are loaded in grub.cfg
title-text: ""
desktop-color: "#0a0a0a"
desktop-image: "background.png"
+ boot_menu {
left = 25%
top = 40%
width = 50%
height = 30%
item_color = "#aaaaaa"
selected_item_color = "#f7931a"
item_height = 36
item_spacing = 8
item_padding = 16
scrollbar = false
}
+ label {
left = 25%
top = 20%
width = 50%
text = "A R C H I P E L A G O"
color = "#f7931a"
align = "center"
}
+ label {
left = 25%
top = 28%
width = 50%
text = "Bitcoin Node OS"
color = "#888888"
align = "center"
}
+ label {
left = 25%
top = 90%
width = 50%
text = "Use arrow keys to select, Enter to boot"
color = "#555555"
align = "center"
}