grub загрузка iso

lampslave, думаю нужно временно приостановиться, чтоб обдумать, да продолжить в Новом Году......
Спасибо за содействие и ссылки ......
Ошибки не исчезают с опытом - они просто умнеют
Только что специально скачал свежий archlinux-2015.12.01-dual.iso
Код для GRUB, который я писал в вики, успешно его опознал и загрузил, не потребовав каких-либо изменений.

Итак, ещё раз:
Не нужно ничему ничего присваивать!

Образ Arch требует для загрузки параметров ядра:

archisolabel=метка_образа
img_dev=/dev/линуксовое_устройство_раздела_физического_носителя
img_loop=/путь/к/образу/от_корня_устройства
(У меня этот путь в переменной $iso)
earlymodules=loop
(как есть, просто слово loop)

Оба оставшихся параметра GRUB может определить автоматически.
loopback loop $iso
probe -s isolabel -l loop
После подключения образа его метка записывается в переменную isolabel , и далее подставляется так:
archisolabel=$isolabel
В моём коде \$isolabel заэкранирована, чтобы подстановка метки происходила не при формировании кода пункта меню, а "на лету", при его выполнении.
Если генерация готового кода с заранее подставленными параметрами, просматриваемого по клавише e, не требуется, можно использовать более традиционный menuentry { ... } вместо menuentry --source="..." , и ничего не экранировать.


Далее, команда
probe -s root_uuid -u $root
записывает в переменную root_uuid , соответственно, UUID раздела с образом, после чего её можно использовать так:
img_dev=/dev/disk/by-uuid/$root_uuid
Natrio
Только что специально скачал свежий archlinux-2015.12.01-dual.iso
Код для GRUB, который я писал в вики, успешно его опознал и загрузил, не потребовав каких-либо изменений.
Работает !
Немного офтопа: почему у каждого дистра это сделано по своему? Как всегда не могут договорится или по каким-то историческим причинам какие остались в прошлом?
Мало видеть нам начало - надо видеть и конец.
Если видишь ты создание - значит где-то есть ТВОРЕЦ
alsoijw
Как всегда не могут договорится или по каким-то историческим причинам какие остались в прошлом?
по тем же причинам по которым и пользователи не могут договорится и выбрать лучшее...
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
alsoijw
почему у каждого дистра это сделано по своему?
У некоторых этой возможности вообще нету. Нестандартная она, вот и делают все, как умеют.
Не стал откладывать на Новый Год, решил добить проблему в этом году......
Пришлось посидеть - толи у меня такой образ старый (2015-06-01) то ли что другое ….. но смысл в том, что у меня label автоматом не берет, пришлось прописывать только в ручную.
Вообщем, Vadim, если надумаешь делать, то можешь попробовать следующим способом, без всяких побочных утилит (возможно будут нюансы и придется корректировать, так как я экспериментировал на старом образе)
Примечание — все делал для 32-bit, для 64-bit — вместо i686 прописать x86_64...., метку label смотреть командой file /name iso/
1. Загрузка в командную строку Grub ( e …. F2 )
2. Команды (образ archlinux-2015.06.01-dual.iso находится на 1 диске, 3 разделе, в корне)
PS.... самая первая команда для общего случая, которую забыл (т.е. заходишь в командную строку GRUB из любого места)
set root=(hd0,3)
1-ая loopback loop (hd0,3)/archlinux-2015.06.01-dual.iso
2-ая probe -s root_uuid -u $root
3-я linux (loop)/arch/boot/i686/vmlinuz archisolabel=\ARCH_201506 img_dev=/dev/disk/by-uuid/$root_uuid img_loop=archlinux-2015.06.01-dual.iso earlymodules=loop
4-ая initrd (loop)/arch/boot/i686/archiso.img
5-ая boot
Можно и изменить и совершенствовать, но для меня был важен результат. Ubuntu загружать таким образом намного проще.

PS.....Забыл самое главное - Natrio, спасибо за разъяснение, помогло

PSS.... Vadim, если боишься испортить утилитой dd флешку, можешь просто скопировать образ на флешку (лучше в корень) и загрузиться с образа таким способом (команда ls поможет понять какой диск прописать (hdX,Y) - X ведет отсчет от 0, Y от 1)
Ошибки не исчезают с опытом - они просто умнеют
Еще один вопрос — для полного понимания......как прописать в ручную uuid
Вытащил из образа UUID=2015-06-01-15-28-10-00 и когда образ монтируется, то lsblk -f этот UUID и показывает.
Но вот как этот UUID правильно прописать, да и этот ли UUID, не понял - пробовал несколько способов - затык на стадии монтирования.
UPD..... в процессе загрузки образа приостанавливал загрузку и заметил что в логах фигурирует другой UUID, но после окончательной загрузки фигурирует уже приведенный выше....
Ошибки не исчезают с опытом - они просто умнеют
vasek, в вашем предыдущем посте присутствуют явные нестыковки.

vasek
Команды (образ archlinux-2015.06.01-dual.iso находится на 1 диске, 3 разделе, в корне)
1-ая loopback loop (hd0,3)/archlinux-2015.06.01-dual.iso
2-ая probe -s root_uuid -u $root
Если (hd0,3) это $root загрузчика (текущий раздел, или тот, с которого стартовал GRUB), то достаточно
loopback loop /archlinux-2015.06.01-dual.iso
Если это другой раздел – тогда нужно
probe -s root_uuid -u (hd0,3)

Так или иначе, команда probe -s переменная раздел сама читает UUID заданного раздела в переменную, которую можно подставлять в параметры ядра.

Та же самая команда probe, только с ключом -l вместо -u , читает с указанного раздела метку.
Разумеется, если вместо раздела loop с образом, он должен быть уже подключён до этой команды.

Если порядок верный, значит переменная неправильно подставлена, например, не к месту заэкранирована – при ручном выполнении команд нельзя экранировать переменные, если вы хотите, чтобы их значение подставлялось – см. основы шелл-кода.

UUID не та вещь, которую стоит прописывать вручную. Он не для людей, а для роботов, его имеет смысл программно читать с раздела, чтобы передать из загрузчика в ОС. В любом случае, указать образу UUID можно только если он это поддерживает.
Natrio
а разве это не одно и тоже
loopback loop (hd0,3)/archlinux-2015.06.01-dual.iso
и
img_loop=archlinux-2015.06.01-dual.iso

или loopback loop обязателен?
Ошибки в тексте-неповторимый стиль автора©
 
Зарегистрироваться или войдите чтобы оставить сообщение.