317037f8eb
Two jobs, one repack pass. BRANDING. Every ISO now carries a Felhom boot screen built from the website's og-image_2.png at repack time (ImageMagick in the assistant container), so the boot card has ONE source and not a second pre-rendered copy in the repo to drift. The card is scaled onto a 1024x768 gfxterm canvas, top-centered, and the card's own subtle background grid is continued across the letterbox fill PHASE-LOCKED to where the card's grid lands — the fill is seamless rather than a square of grid floating in flat navy. Menu positioning needs a gfxmenu theme (plain background_image cannot move the menu off the wordmark), so the stock pvetheme is replaced by felhomtheme, which puts the menu in the lower third the layout deliberately leaves empty. SAFETY — the half that matters. The stock PVE menu offers Graphical, Terminal UI and serial installers plus an Advanced Options submenu (nomodeset x2, three debug variants, Rescue Boot, memtest, UEFI settings). Every one of them reaches the MANUAL installer, whose first question is which disk to wipe. A customer, or their helpful nephew, must not be able to get there from a boot menu. They are not hidden and not password-gated: they are NOT EMITTED. What ships is one entry, 'Felhom telepítés', default, 5s. Boot behavior is unchanged. The kernel/append and initrd lines are lifted VERBATIM from the ISO's own 'Install Proxmox VE (Automated)' entry rather than frozen into a copy here, so a PVE bump tracks automatically; the build fails if they cannot be found, if the append line has lost proxmox-start-auto-installer, or if auto-installer-mode.toml is absent (which would mean the one Felhom- labelled entry boots a manual installer). The rendered menu is then gated for exactly 1 entry, 0 submenus, and zero references to proxtui/proxdebug/nomodeset/ Rescue Boot/memtest/fwsetup — and re-verified by reading the menu back OUT of the finished ISO, not merely out of the extract tree. mkimage-surgery.sh -> iso-repack.sh: branding and the slice-B loader swap need the same extract -> modify -> re-master cycle, so they share one pass instead of re-mastering twice. The mkimage recipe is untouched. The embedded module list is still derived from the STOCK grub.cfg (snapshotted before branding rewrites it), plus gfxmenu's bitmap/bitmap_scale/trig renderer deps. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
77 lines
2.9 KiB
Cheetah
77 lines
2.9 KiB
Cheetah
# Felhom ISO — GRUB menu (scripts v1.22.0, R-38 GRUB slice). GENERATED by iso-repack.sh; the stock
|
|
# PVE grub.cfg is REPLACED by this file at repack time.
|
|
#
|
|
# TWO jobs, one file:
|
|
#
|
|
# 1. BRANDING — a Felhom gfxmenu theme (felhomtheme/) over a 1024x768 card built from the website's
|
|
# og-image_2.png. The stock `set theme=/boot/grub/pvetheme/theme.txt` is gone.
|
|
#
|
|
# 2. SAFETY — exactly ONE entry is exposed. The stock menu offers Graphical / Terminal UI / serial,
|
|
# plus an "Advanced Options" submenu with nomodeset, three debug variants, Rescue Boot, memtest
|
|
# and UEFI firmware settings. Every one of those reaches the MANUAL installer, whose first
|
|
# question is which disk to wipe. A customer — or their helpful nephew — must not be able to get
|
|
# there from a boot menu. They are not hidden, they are NOT EMITTED.
|
|
#
|
|
# The `linux` / `initrd` lines below are lifted VERBATIM by iso-repack.sh from the stock
|
|
# 'Install Proxmox VE (Automated)' entry of the ISO being repacked, so a PVE version bump that
|
|
# changes the kernel path or the append line is tracked automatically instead of silently diverging
|
|
# from a copy frozen here. iso-repack.sh fails the build if it cannot find them, and asserts the
|
|
# append line still carries `proxmox-start-auto-installer` — the flag that makes the install
|
|
# unattended. Boot behavior is therefore byte-identical to v1.21.0; only the menu around it changed.
|
|
|
|
insmod gzio
|
|
insmod iso9660
|
|
insmod png
|
|
insmod gfxmenu
|
|
|
|
if [ x$feature_default_font_path = xy ] ; then
|
|
font=unicode
|
|
else
|
|
font=$prefix/unicode.pf2
|
|
fi
|
|
|
|
# Matches the background canvas exactly (1024x768). 800x600/640x480 are fallbacks for firmware that
|
|
# refuses the preferred mode — the theme is percentage-positioned, so it degrades cleanly.
|
|
set gfxmode=1024x768,800x600,640x480
|
|
set gfxpayload=1024x768
|
|
|
|
if loadfont $font; then
|
|
if test "${grub_platform}" = "efi"; then
|
|
insmod efi_gop
|
|
insmod efi_uga
|
|
fi
|
|
insmod video_bochs
|
|
insmod video_cirrus
|
|
insmod all_video
|
|
insmod gfxterm
|
|
set theme=/boot/grub/felhomtheme/theme.txt
|
|
export theme
|
|
terminal_input console
|
|
terminal_output gfxterm
|
|
fi
|
|
|
|
# Serial stays available for operator/nested-canary debugging (the stock cfg does this too). What we
|
|
# do NOT do is the stock's `set show_serial_entry=y` — that would add a fourth menu entry.
|
|
insmod serial
|
|
insmod usbserial_common
|
|
insmod usbserial_ftdi
|
|
insmod usbserial_pl2303
|
|
insmod usbserial_usbdebug
|
|
if serial --unit=0 --speed=115200; then
|
|
terminal_input --append serial
|
|
terminal_output --append serial
|
|
fi
|
|
|
|
# Short and decisive: one entry, default, 5s. Note `timeout_style` (underscore) — the stock cfg
|
|
# writes `timeout-style`, which GRUB does not recognise as a variable name at all.
|
|
set timeout_style=menu
|
|
set timeout=5
|
|
set default=0
|
|
|
|
menuentry 'Felhom telepítés' --class felhom --class os {
|
|
echo 'A Felhom telepítése indul...'
|
|
@@LINUX@@
|
|
echo 'Rendszerbetöltő betöltése...'
|
|
@@INITRD@@
|
|
}
|