Я и так понял, что там написано.
Ты не понял ничего. Ни того, что там, ни после.
оригинальное название образа "ubuntu-mate-18.04.5-desktop-i386", сокращено до "Ubuntu-Mate-18045-i386".
Лишний шанс ошибиться самому и запутать других.
заглядывал, для того, чтобы вытащить два файла vmlinuz и initrd.lz, положить их в папку Ubuntu18
Лишнее. loopback для того и монтирует, чтобы не вытаскивать из исо-образа, а найти в нем.
Получается, что на флешке надо создать папку casper и закинуть их туда
Лишнее. Выше написал почему. Хотя возможно и так, но тогда не нужен loopback.
как быть, когда будет несколько образов Linux (например: другие версии Ubuntu, Mint, Zorin) и каждый содержит папку casper?
Для того и loopback. Но возможно и "вытащить" *бунту из образа и поместить каждую в свой каталог.
initrd не содержит расширения .lz. Дописывал его вручную.
Опять, абсолютно не нужное действие, только вносящее дополнительную путаницу.
Чтобы не изобретать велосипед, можешь
посмотреть здесь, как я делаю загрузочную флешку. Или
здесь взять код поновее.
Что можно сделать с твоим кодом...
menuentry "Ubuntu-Mate-18045-i386" - заменить на "submenu", это даст возможность, в случае ошибки вернуться в меню груба.
set root=(hd0,1) - сработает только если флешка действительно окажется первым диском, заменить на "search".
linux (loop)/Ubuntu18/vmlinuz - это внутри образа, соответственно, путь должен быть "/casper..."
iso-scan/filename=/ISO/Ubuntu-Mate-18045-i386.iso - значение тоже, что в "isopath", можно заменить на него.
initrd (loop)/Ubuntu18/initrd.lz - аналогично ядру "/casper...", никаких "/Ubuntu18..." и если в образе у инитрд нет ".lz" то и здесь его лепить незачем.
С учетом этих исправлений:
submenu "Ubuntu-Mate-18045-i386" {
set isopath="/ISO/Ubuntu-Mate-18045-i386.iso"
set gfxpayload=keep
search -n -s -f "${isopath}"
loopback loop $isopath
linux (loop)/casper/vmlinuz iso-scan/filename=${isopath} boot=casper locale=ru_RU.UTF-8 splash --
initrd (loop)/casper/initrd.lz
}
Не проверял, надеюсь что не наделал ошибок.
Исо-образ *бунту сделан по технологии "loopback-bootable". В нем есть еще одна задумка, позволяющая ничего не знать об ядре-инитрд.
Технология подразумевает, что в образе есть файл /boot/grub/loopback.cfg. Это конфиг груба именно для загрузки из исо-образа.
Достаточно после команды "loopback" добавить :
configfile /boot/grub/loopback.cfg
В моем коде сначала проверяется этот вариант. Если "loopback.cfg" не будет найден, то будет искать ядро-инитрд.
примерно такие же параметры написаны
Главное слово - примерно. Они годятся только для какого-то одного случая. Примеры я тебе уже привел.