grub загрузка iso

Natrio, спасибо за обнаруженные ошибки — забыл в самом начале указать
set root=(hd0,3) .............экспериментировал на текущем разделе, а потому просто забыл об этом..... для общего случая
Дополнил в предыдущем посте. Проверил сейчас на флешке (hd1,1) все вышло ….. и у меня выходит загрузка, как написано — любое отклонение в сторону …. затык или при монтировании или монтируется нормально, но дальше пишет ошибку...проверял много раз.
Насчет UUID я все понял..... и, главное, дошло (проверил) что UUID мелкающий на этапе загрузки, это UUID самого раздела, на котором размещен образ.
Ошибки не исчезают с опытом - они просто умнеют
indeviral
или loopback loop обязателен?
Из описания команд Grub
loopback - монтирует файл как устройство, например loopback loop (hd0,2)/iso/my.iso
PS.... а img_loop , как и img_dev это просто параметры. которые передаются ядру - это насколько я понимаю, может Natrio и поправит
Ошибки не исчезают с опытом - они просто умнеют
vasek
img_loop это же то же самое только на уровне ядра, или это уже поздно? тогда зачем писать?
Ошибки в тексте-неповторимый стиль автора©
indeviral
vasek
img_loop это же то же самое только на уровне ядра, или это уже поздно? тогда зачем писать?
Но смонтировать же устройство необходимо..... ядро, насколько я понимаю, этого не делает, а только принимает параметры...
Ошибки не исчезают с опытом - они просто умнеют
vasek
ядро, насколько я понимаю, этого не делает,
почему делает, просто само ядро тоже необходимо сначала вытащить из образа, короче велосипед какой то получается...
Ошибки в тексте-неповторимый стиль автора©
GRUB это загрузчик, он запускается раньше ядра, и не может ничего монтировать. Команда loopback "подключает" файл образа в качестве псевдоустройства только внутри GRUB.

После её выполнения загрузчик начинает воспринимать образ как устройство, читать его параметры, его разделы, его ФС и его файлы (внутри ФС на образе или его разделах). В том числе, GRUB может прочесть и загрузить из образа ядро и initrd.

И ядро, и любые запускаемые в ОС программы, должны открывать/монтировать образ заново, и явно, как образ. Именно поэтому, чтобы загруженное ядро и программы внутри initrd могли найти свою ФС, они должны уметь искать её в файле образа, а для этого должны получить от загрузчика, через параметры ядра, точное указание и на файл образа, и устройство, на котором он находится.

vasek
set root=(hd0,3)
Переменная root изначально уже содержит тот раздел, с которого загрузился GRUB. Не нужно её менять, если не требуется сменить текущий раздел.
Если изменить её, текущим становится другой раздел. Пути к файлам на текущем разделе, начинаются с корня, а не с раздела.

vasek
любое отклонение в сторону
Точнее, любое ошибочное отклонение.
В принципе, в вики всё есть – и много текста, и действующие примеры, но если это так сложно, я могу привести код конфига с флешки с образами:
$ ls -1F /media/sdb1/
grub/
images/

$ ls -1F /media/sdb1/grub/
arch.cfg
fonts/
grub.cfg
grubenv
i386-pc/
locale/
themes/

$ ls -1F /media/sdb1/images/
archlinux-2015.04.01-dual.iso
archlinux-2015.12.01-dual.iso

grub.cfg :
set menu_color_normal=light-blue/black
set menu_color_highlight=light-cyan/blue

dir=/images
insmod regexp

. $prefix/arch.cfg

arch.cfg :
probe -s root_uuid -u $root # получаем UUID для подстановки в img_dev=

for iso in $dir/archlinux-*-dual.iso ; do      # ищем образ(ы) Arch по шаблону
 if [ ! -f "$iso" ] ; then continue; fi        # только если образ существует
 regexp -s build 'archlinux-(.+)-dual' "$iso"  # получаем из имени образа дату сборки
 for arch in i686 x86_64 ; do                  # делаем для обеих архитектур
 
  menuentry "Arch Linux ISO $build $arch" --source="\
loopback loop $iso
probe -s isolabel -l loop
linux (loop)/arch/boot/$arch/vmlinuz archisolabel=\$isolabel img_dev=/dev/disk/by-uuid/$root_uuid img_loop=$iso earlymodules=loop
initrd (loop)/arch/boot/$arch/archiso.img"

 done
done

Установка GRUB на флешку:
grub-install --boot-directory=/media/sdb1 /dev/sdb

После загрузки с этой флешки GRUB сам находит в каталоге images все образы Arch, и показывает меню, по два пункта на каждый образ – для i686 и x86_64.
Natrio
Переменная root изначально уже содержит тот раздел, с которого загрузился GRUB. Не нужно её менять, если не требуется сменить текущий раздел.
Это понятно - я расписал для общего случая, чтобы не думать где находишься.....
Поставил перед собой задачу - загрузиться с образа не имея никаких сторонних утилит типа grml-rescueboot и соответствующим образом настроенного grub.cfg …..... и для себя выяснил, что делать загрузочную флешку с установочным диском Arch или править конфиги Grub вообщем то и не обязательно — можно всегда, на всякий аврийный случай, спокойно загрузиться с образа, размещенного или на жестком диске или на флешке......
Natrio, еще раз спасибо за пояснения …...
Ошибки не исчезают с опытом - они просто умнеют
Вот немного почитал и сделал себе меню в grub для manjaro-fluxbox-openrc-15.11-x86_64
menuentry "manjaro-fluxbox-openrc-15.11-x86_64.iso" {
set isofile="/boot/iso/manjaro-fluxbox-openrc-15.11-x86_64.iso"
loopback loop (hd0,2)$isofile
linux (loop)/manjaro/boot/x86_64/manjaro img_dev=/dev/sda2 img_loop=$isofile misobasedir=manjaro misolabel=MJRO1511 nouveau.modeset=1 i915.modeset=1 radeon.modeset=1
initrd (loop)/manjaro/boot/x86_64/manjaro.img
}
menuentry "manjaro-fluxbox-openrc-15.11-x86_64.iso nonfree" {
set isofile="/boot/iso/manjaro-fluxbox-openrc-15.11-x86_64.iso"
loopback loop (hd0,2)$isofile
linux (loop)/manjaro/boot/x86_64/manjaro img_dev=/dev/sda2 img_loop=$isofile misobasedir=manjaro misolabel=MJRO1511 nouveau.modeset=0 i915.modeset=1 radeon.modeset=0 nonfree=yes overlay=nonfree
initrd (loop)/manjaro/boot/x86_64/manjaro.img
}
причём первый пункт меню загружает iso с драйвером nouveau,второй - с драйвером nvidia.И прекрасно работает.
Буду дальше читать и эксперементировать.
Ну а сейчас-за стол.
Всех с новым годом!
Linux Forever!
Дык , я угадал , или все неправильно ?

PS С Новым Годом !
teplovoz
частично угадал.Систему я обычно устанавливаю с виртуалбокс на реальное железо,никакие флешки и диски мне не нужны.Устанавливается всё,вплоть до винды,только x86_64 системы в виртуалбокс у меня не загружаются,процессор не такой наверное.
С помощью загрузки iso грубом сегодня установил x86_64 систему ,хотя тоже не без проблем:
Установщик должен применить изменения к разделам, но не может этого сделать из-за невозможности отключения разделов на следующих точках подключения:
/isodevice
сделал sudo umount /isodevice ,думал всё развалиться,но на удивление всё прошло гладко,система установилась,сейчас из неё пишу
p.s
вот ещё рабочие конфигурации груб для большого количества дистрибутивов.
Штук пять проверил(только версии дисков переписал в конфигурации на новые)-все работают.
Linux Forever!
 
Зарегистрироваться или войдите чтобы оставить сообщение.