Ваш код выглядит просто. Но в силу простоты и возникают ошибки. Причем плавающие.
Благодарю, я не совсем корректно задал вопрос (время поджимало) начнем с того, что этот конфиг для меня вообще тёмный лес, я не понимаю больше половины из написанного (в основном понятны только пути и названия файлов. Поэтому я просто скомпилировал его методом тыка. Шапку взял с образа
if loadfont /boot/grub/font/unicode.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
set timeout=5
Кусок про загрузку с образа диска из интернета (мол скопируйте вставьте и заработает).
menuentry "Ubuntu 18.04 iso" {
set isofile="/opt/ubuntu-18.04.2-desktop-amd64.iso"
loopback loop (hd0,1)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=${isofile} quiet splash
initrd (loop)/casper/initrd
}
Этот из вашего:
menuentry 'Ubuntu 18.04' {
src='/opt/ub1804'
key="$key boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
root='x'
insmod part_gpt
search -f ${src}/casper/vmlinuz -n -s
if [ $root = x ]
then msg="$src not exist!"; avload='configfile'; src="${prefix}/grub.cfg"
else msg="Load $src from $root"; avload='linux'; avinit="initrd ${src}/casper/initrd"
if [ -e "${src}/casper-rw" ]; then key="persistent persistent-path=$src $key"; fi
src="${src}/casper/vmlinuz ${key}"
fi
echo "$msg"; sleep 4
${avload} ${src}
${avinit}
}
Естественно заменив пути на свои.
Часть кода с загрузкой из образа я добавил в самом конце когда не получилось с вашим поэтому строка
loopback loop (hd0,1)$isofile
не влияет на появление ошибки
(initramfs) unable to find a live medium containing a live file systemЕсли я правильно понял то в вашем коде всё что находиться ниже строки (включительно)
menuentry 'Memtest' {
мне не нужно т.к. это пункты загрузки теста памяти, виктории и т.д.
Поэтому ваш код у меня принимал вид:
set timeout=4
set default=0
set fallback=1
set color_normal=light-green/black
set menu_color_normal=light-green/black
set menu_color_highlight=light-green/blue
key='elevator=noop ignore_uuid'
menuentry '*buntu iso' {
iso_path='/opt/ubuntu-10.04.4-desktop-i386.iso' (зачем здесь нужна эта строка я не понял. Как предположения для загрузки старой версии Ubuntu. её у меня нет поэтому удалил
iso_path='/opt/ubuntu-18.04.2-desktop-amd64.iso'; version='.efi'
key="boot=casper cdrom-detect/try-usb=true file=/cdrom/preseed/ubuntu.seed iso-scan/filename=$iso_path noprompt nosplash quiet --"
avload='configfile'
root='x'
insmod part_gpt
export iso_path
search -f ${iso_path} -n -s
if [ $root = x ]
then msg="$iso_path not exist!"; src="${prefix}/grub.cfg"
else msg="Load $iso_path from $root"
loopback loop ${iso_path}
root=(loop)
if [ -e /boot/grub/loopback.cfg ]
then src='/boot/grub/loopback.cfg'
else avload='linux'; avinit='initrd /casper/initrd.lz'
if [ -e /casper/vmlinuz${version} ]; then src="/casper/vmlinuz${version} ${key}"; else src="/casper/vmlinuz ${key}"; fi
fi
fi
echo "$msg"; sleep 4
${avload} ${src}
${avinit}
}
menuentry 'Ubuntu 18.04 ' {
src='/opt/ub1804'
key="$key boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
root='x'
insmod part_gpt
search -f ${src}/casper/vmlinuz -n -s
if [ $root = x ]
then msg="$src not exist!"; avload='configfile'; src="${prefix}/grub.cfg"
else msg="Load $src from $root"; avload='linux'; avinit="initrd ${src}/casper/initrd"
if [ -e "${src}/casper-rw" ]; then key="persistent persistent-path=$src $key"; fi
src="${src}/casper/vmlinuz ${key}"
fi
echo "$msg"; sleep 4
${avload} ${src}
${avinit}
}
С таким конфигом результат был такой:
Пользователь добавил сообщение 16 Марта 2019, 23:13:54:
И что делать дальше не понятно.
loopback loop (hd0,1)$isofile
Возможное место для ошибки. Если подключены более одного устройства, то не всегда первый диск может оказаться первым.
Если я правильно понимаю то (hd0,1) означает первый раздел первого диска и если на нем не найдётся образа то он и не загрузиться.
Вопрос: как написать, чтобы он искал на всех дисках?
initrd (loop)/casper/initrd
Вы точно знаете, что в этом образе файл тазывается initrd? Последние несколько лет был initrd.lz.
Да я посмотрел при копировании файлов.
Чтобы упростить загрузку из исо-образа придумали технологию "loopback bootable". Суть ее в том, что образе есть файл /boot/grub/looback.cfg. В нем прописан конфиг загрузчика для загрузки из исо-образа.
С этим надо ещё разбираться.
Вот только, когда копировали вы допустили ошибку. Нет пареметра "ignore_uuid". Я сам на нем обжигался несколько раз. Поэтому в обновленной версии кода внес его в переменную key непосредственно в пункте меню.
Строка должна выглядеть так:
key="elevator=noop ignore_uuid boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
Т.е. в этом куске:
menuentry 'Ubuntu 18.04' {
src='/opt/ub1804'
key="$key boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
root='x'
insmod part_gpt
search -f ${src}/casper/vmlinuz -n -s
if [ $root = x ]
then msg="$src not exist!"; avload='configfile'; src="${prefix}/grub.cfg"
else msg="Load $src from $root"; avload='linux'; avinit="initrd ${src}/casper/initrd"
if [ -e "${src}/casper-rw" ]; then key="persistent persistent-path=$src $key"; fi
src="${src}/casper/vmlinuz ${key}"
fi
echo "$msg"; sleep 4
${avload} ${src}
${avinit}
}
я в место
key="$key boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
должен написать
key="elevator=noop ignore_uuid boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
Я не зря указал ссылку, где находится обновленный код.
Эх, мне бы с ранешним разобраться, а потом уже и новый пытать.
Пользователь добавил сообщение 16 Марта 2019, 23:14:55:
И что делать дальше не понятно.
loopback loop (hd0,1)$isofile
Возможное место для ошибки. Если подключены более одного устройтсва, то не всегда первый диск может оказаться первым.
Если я правильно понимаю то (hd0,1) означает первый раздел первого диска и если на нем не найдётся образа то он и не загрузиться.
Вопрос: как написать, чтобы он искал на всех дисках?
initrd (loop)/casper/initrd
Вы точно знаете, что в этом образе файл тазывается initrd? Последние несколько лет был initrd.lz.
Да я посмотрел при копировании файлов.
Чтобы упростить загрузку из исо-образа придумали технологию "loopback bootable". Суть ее в том, что образе есть файл /boot/grub/looback.cfg. В нем прописан конфиг загрузчика для загрузки из исо-образа.
С этим надо ещё разбираться.
Вот только, когда копировали вы допустили ошибку. Нет пареметра "ignore_uuid". Я сам на нем обжигался несколько раз. Поэтому в обновленной версии кода внес его в переменную key непосредственно в пункте меню.
Строка должна выглядеть так:
key="elevator=noop ignore_uuid boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
Т.е. в этом куске:
menuentry 'Ubuntu 18.04' {
src='/opt/ub1804'
key="$key boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
root='x'
insmod part_gpt
search -f ${src}/casper/vmlinuz -n -s
if [ $root = x ]
then msg="$src not exist!"; avload='configfile'; src="${prefix}/grub.cfg"
else msg="Load $src from $root"; avload='linux'; avinit="initrd ${src}/casper/initrd"
if [ -e "${src}/casper-rw" ]; then key="persistent persistent-path=$src $key"; fi
src="${src}/casper/vmlinuz ${key}"
fi
echo "$msg"; sleep 4
${avload} ${src}
${avinit}
}
я в место
key="$key boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
должен написать
key="elevator=noop ignore_uuid boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
Я не зря указал ссылку, где находится обновленный код.
Эх, мне бы с ранешним разобраться, а потом уже и новый пытать.
Пользователь добавил сообщение 16 Марта 2019, 23:15:31:
И что делать дальше не понятно.
loopback loop (hd0,1)$isofile
Возможное место для ошибки. Если подключены более одного устройтсва, то не всегда первый диск может оказаться первым.
Если я правильно понимаю то (hd0,1) означает первый раздел первого диска и если на нем не найдётся образа то он и не загрузиться.
Вопрос: как написать, чтобы он искал на всех дисках?
initrd (loop)/casper/initrd
Вы точно знаете, что в этом образе файл тазывается initrd? Последние несколько лет был initrd.lz.
Да я посмотрел при копировании файлов.
Чтобы упростить загрузку из исо-образа придумали технологию "loopback bootable". Суть ее в том, что образе есть файл /boot/grub/looback.cfg. В нем прописан конфиг загрузчика для загрузки из исо-образа.
С этим надо ещё разбираться.
Вот только, когда копировали вы допустили ошибку. Нет пареметра "ignore_uuid". Я сам на нем обжигался несколько раз. Поэтому в обновленной версии кода внес его в переменную key непосредственно в пункте меню.
Строка должна выглядеть так:
key="elevator=noop ignore_uuid boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
Т.е. в этом куске:
menuentry 'Ubuntu 18.04' {
src='/opt/ub1804'
key="$key boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
root='x'
insmod part_gpt
search -f ${src}/casper/vmlinuz -n -s
if [ $root = x ]
then msg="$src not exist!"; avload='configfile'; src="${prefix}/grub.cfg"
else msg="Load $src from $root"; avload='linux'; avinit="initrd ${src}/casper/initrd"
if [ -e "${src}/casper-rw" ]; then key="persistent persistent-path=$src $key"; fi
src="${src}/casper/vmlinuz ${key}"
fi
echo "$msg"; sleep 4
${avload} ${src}
${avinit}
}
я в место
key="$key boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
должен написать
key="elevator=noop ignore_uuid boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
Я не зря указал ссылку, где находится обновленный код.
Эх, мне бы с ранешним разобраться, а потом уже и новый пытать.
Пользователь добавил сообщение 16 Марта 2019, 23:18:00:
И что делать дальше не понятно.
loopback loop (hd0,1)$isofile
Возможное место для ошибки. Если подключены более одного устройтсва, то не всегда первый диск может оказаться первым.
Если я правильно понимаю то (hd0,1) означает первый раздел первого диска и если на нем не найдётся образа то он и не загрузиться.
Вопрос: как написать, чтобы он искал на всех дисках?
initrd (loop)/casper/initrd
Вы точно знаете, что в этом образе файл тазывается initrd? Последние несколько лет был initrd.lz.
Да я посмотрел при копировании файлов.
Чтобы упростить загрузку из исо-образа придумали технологию "loopback bootable". Суть ее в том, что образе есть файл /boot/grub/looback.cfg. В нем прописан конфиг загрузчика для загрузки из исо-образа.
С этим надо ещё разбираться.
Вот только, когда копировали вы допустили ошибку. Нет пареметра "ignore_uuid". Я сам на нем обжигался несколько раз. Поэтому в обновленной версии кода внес его в переменную key непосредственно в пункте меню.
Строка должна выглядеть так:
key="elevator=noop ignore_uuid boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
Т.е. в этом куске:
menuentry 'Ubuntu 18.04' {
src='/opt/ub1804'
key="$key boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
root='x'
insmod part_gpt
search -f ${src}/casper/vmlinuz -n -s
if [ $root = x ]
then msg="$src not exist!"; avload='configfile'; src="${prefix}/grub.cfg"
else msg="Load $src from $root"; avload='linux'; avinit="initrd ${src}/casper/initrd"
if [ -e "${src}/casper-rw" ]; then key="persistent persistent-path=$src $key"; fi
src="${src}/casper/vmlinuz ${key}"
fi
echo "$msg"; sleep 4
${avload} ${src}
${avinit}
}
я в место
key="$key boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
должен написать
key="elevator=noop ignore_uuid boot=casper cdrom-detect/try-usb=true live-media-path=$src/casper noprompt nosplash --"
Я не зря указал ссылку, где находится обновленный код.
Эх, мне бы с ранешним разобраться, а потом уже и новый пытать.