Создание своей версии gfxmenu

Несколько не в тему. В сборке prar, для которой делал UIRD есть скрипт, который транслирует menu.lst в формат конфига grub2. На моих примерах с uird - срабатывал правильно. Автор sfs, думаю не будет против если украдем :slight_smile: :

#!/bin/sh
#191021 sfs Конвертер меню grub4dos в grub2
C(){
egrep -v '^#' $1 \
    | sed 's/^title\(.*\)$/menuentry "\1" {/ ; s/find /search /
    s/^default /set default=/' \
    | sed 's/^timeout /set timeout=/' \
    | sed 's/--set-root/--set=root/' \
    | sed 's/--ignore-floppies/--no-floppy --file/' \
    | sed 's/%\(.\)%/${\1}/g' \
    | sed 's/kernel /linux /' \
    | sed 's/;/\\;/g' \
    | sed 's/^\(\(initrd\|lock\|pause ---\|halt$\|reboot$\|configfile \|chainloader \).*\)$/\1\n}/' \
    | sed 's/\(\(plpbt.bin.gz\|memtest.gz\).*\)$/\1\n}/' \
    | sed '/\(plpbt.bin.gz\|memtest.gz\)/s/linux /linux16 /' \
    | sed '/^menuentry /s#\\n##g' \
    | sed 's/^lock/true/' \
    | sed 's/^configfile /configfile $prefix/' \
    | sed 's/pager on/set pager=1/' \
    | sed 's/^pause .*$/echo "---Press escape to continue to the main menu---"\nsleep --interruptible 9999/' \
    | sed '/▁▂▃▄▅▆  Grub2/,+4d' \
    | sed 's/ load=/ \\\n\tload=/' \
    | sed 's/ noload=/ \\\n\tnoload=/' \
    | sed 's/^\(set \+\([^=]\+\)=.*\)$/\1\nexport \2/' \

#    | sed 's/^\(set \+\([^=]\+\)=.*\)$/\1\nexport \2/' \
#s замена /этого/на это/
#^\(....\)$ - запомнили1 всю строку ; '$' - конец строки
#^set строка начинается c 'set '
# \+ .пробел >= 1 раз 
#\([^=]\+\) запоминаем2 этот курок текста, где  - любой символ кроме "=" >= 1 раз 
#=.* - равно и далее  сколько угодно любых символов
#\1 - вставить 'запомнили1' , т.е. первое запоминание
#\n - перевод строки
#export - добавляемый текст
#\2 вставляем 'запоминаем2'

#    | sed 's,configfile /menu\([0-9]\?\)\.lst,configfile /grub\1.cfg,' \
#    | sed 's/^\(initrd .*\)$/\1\n}/' \
#    | sed 's/lock/}/' \
}
for i in `ls -1 menu*.lst` ;do
#    echo $i
    C $i >EFI/BOOT/$i
done