ISO: латинские подписи меню, свой текст отсчёта, hotkey b, chmod перед записью

По результатам первого реального boot-теста образа (QEMU/OVMF, BIOS + UEFI +
UEFI Secure Boot — все три доходят до меню, наш пункт по умолчанию):
- подписи пунктов латиницей: vesamenu (BIOS) кириллицу не отображает — были
  кракозябры; в grub тот же риск со шрифтом темы;
- подсказка обратного отсчёта своя («Bridge&Join install starts in # seconds»)
  и пишется в конец isolinux.cfg ПОСЛЕ include menu.cfg — внутри menu.cfg
  подменю Advanced повторно включает stdmenu.cfg и перебивало autoboot из txt.cfg;
- горячая клавиша b (i занята родным «Install» в grub);
- без «(Debian 13)» в подписи — обрезалось краем бокса темы UEFI, и так в заголовке;
- chmod u+w перед >> в isolinux.cfg: файлы, извлечённые xorriso из ISO, 0444.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL
This commit is contained in:
zuevav
2026-09-22 17:16:22 +03:00
parent b997d60d12
commit 6e8f7ad37f
+9 -2
View File
@@ -34,8 +34,9 @@ KERNEL=$(awk '/^\s*kernel/{print $2; exit}' "$WORK/isolinux/txt.orig")
INITRD=$(grep -o 'initrd=[^ ]*' "$WORK/isolinux/txt.orig" | head -1 | cut -d= -f2) INITRD=$(grep -o 'initrd=[^ ]*' "$WORK/isolinux/txt.orig" | head -1 | cut -d= -f2)
{ {
echo "default bj" echo "default bj"
# Подпись — латиницей: vesamenu (BIOS) кириллицу не отображает (кракозябры).
echo "label bj" echo "label bj"
echo " menu label ^Установить Bridge&Join $VERSION (Debian 13)" echo " menu label ^Install Bridge&Join $VERSION"
echo " menu default" echo " menu default"
echo " kernel $KERNEL" echo " kernel $KERNEL"
echo " append vga=788 initrd=$INITRD $BOOT --- quiet" echo " append vga=788 initrd=$INITRD $BOOT --- quiet"
@@ -44,6 +45,11 @@ INITRD=$(grep -o 'initrd=[^ ]*' "$WORK/isolinux/txt.orig" | head -1 | cut -d= -f
xorriso -osirrox on -indev "$SRC" -extract /isolinux/isolinux.cfg "$WORK/isolinux/isolinux.cfg" >/dev/null 2>&1 xorriso -osirrox on -indev "$SRC" -extract /isolinux/isolinux.cfg "$WORK/isolinux/isolinux.cfg" >/dev/null 2>&1
sed -i 's/^timeout .*/timeout 100/; s/^prompt .*/prompt 0/' "$WORK/isolinux/isolinux.cfg" sed -i 's/^timeout .*/timeout 100/; s/^prompt .*/prompt 0/' "$WORK/isolinux/isolinux.cfg"
grep -q '^timeout' "$WORK/isolinux/isolinux.cfg" || echo "timeout 100" >> "$WORK/isolinux/isolinux.cfg" grep -q '^timeout' "$WORK/isolinux/isolinux.cfg" || echo "timeout 100" >> "$WORK/isolinux/isolinux.cfg"
# Подсказка обратного отсчёта — в конец isolinux.cfg, ПОСЛЕ include menu.cfg: внутри
# menu.cfg подменю «Advanced» повторно включает stdmenu.cfg и перебивает autoboot из txt.cfg.
# (файл, извлечённый xorriso, имеет права 0444: sed -i пересоздаёт его, а >> без chmod не запишет)
chmod u+w "$WORK/isolinux/isolinux.cfg"
echo "menu autoboot Bridge&Join install starts in # seconds, press a key to choose" >> "$WORK/isolinux/isolinux.cfg"
# UEFI: первый пункт в grub # UEFI: первый пункт в grub
xorriso -osirrox on -indev "$SRC" -extract /boot/grub/grub.cfg "$WORK/grub/grub.orig" >/dev/null 2>&1 xorriso -osirrox on -indev "$SRC" -extract /boot/grub/grub.cfg "$WORK/grub/grub.orig" >/dev/null 2>&1
@@ -53,7 +59,8 @@ INITRDG=$(awk '/^\s*initrd\s/ && $2 !~ /gtk/ {print $2; exit}' "$WORK/grub/grub.
{ {
echo "set default=0" echo "set default=0"
echo "set timeout=10" echo "set timeout=10"
echo "menuentry --hotkey=i 'Установить Bridge&Join $VERSION (Debian 13)' {" # латиницей (шрифт grub-темы без кириллицы), горячая клавиша b — у родного «Install» занята i
echo "menuentry --hotkey=b 'Install Bridge&Join $VERSION' {"
echo " set background_color=black" echo " set background_color=black"
echo " linux $LINUX vga=788 $BOOT --- quiet" echo " linux $LINUX vga=788 $BOOT --- quiet"
echo " initrd $INITRDG" echo " initrd $INITRDG"