Несколько не в тему. В сборке prar, для которой делал UIRD есть скрипт, который транслирует menu.lst в формат конфига grub2. На моих примерах с uird - срабатывал правильно. Автор sfs, думаю не будет против если украдем :
#!/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