LINUX.ORG.RU

chainloading в iso

 ,


2

1

Сейчас грузил ISO при помощи GRUB4DOS и GRUB2. В первом всё просто:

    map (hd0,0)/images/debian.iso (hd32)
    map --hook
    root (hd32)
    chainloader (hd32)
    boot
А со вторым сначала также, а в конце немного сложнее. Нужно знать, что внутри у диска, где лежат ядро и initrd и как они называются.
Соответственно в первом варианте управление загрузкой передаётся загрузчику из ISO образа (это даёт всякие ништяки типа красивой картинки и менюшек), а во втором грузится непосредственно линукс из этого образа.
Я попробовал взять лайв дебиана и натравить на него chailoader. В GRUB2 chainloader требует, чтобы параметром ему передали путь к загрузчику. Путь я написал такой: "(loop)/isolinux/isolinux.bin". Но что-то не взлетело (а я и не ожидал, что взлетит, ибо упоминаний о таком способе загрузки ISO не нашёл). GRUB2 сказал "error: invalid signature".
ЧЯДНТ?

★★★★★

В GRUB2 chainloader требует, чтобы параметром ему передали путь к загрузчику.

Может, что-то типа "(loop)+1"?

gentoo_root ★★★★★ ()

GRUB2 не перехватывает int13h и не эмулирует диск. Он просто читает файлы внури образов. Решение: запускайте сразу kernel /.../vmlinuz ... initrd ....

AITap ★★★★★ ()
Ответ на: комментарий от AITap

А есть ли вариант, чтобы граб запускал эмулятор дисков?

CYB3R ★★★★★ ()
Ответ на: комментарий от AITap

Вариант нашёлся. Иметь на флешке и grub4dos, и grub2.
Я даже положил их в один каталог, так как файлы не конфликтуют. В grub.cfg у меня прописано следующее:

menuentry "GRUB4DOS" {
 linux16 /boot/grub/grub.exe --config-file=/boot/grub/menu.lst 
}

menuentry "TinyCore" {
 loopback loop /boot/iso/tinycore.iso
 linux (loop)/boot/vmlinuz
 initrd (loop)/boot/core.gz
}
А в menu.lst так:
title TinyCore
find --set-root /boot/iso/tinycore.iso
map /boot/iso/tinycore.iso (0xff)
map --hook
chainloader (0xff)
Конструкция велосипеднейшая, но работает. Теперь гружусь так: plop с дискеты передаёт загрузку grub2 с флешки, который в свою очередь передаёт загрузку grub4dos, который мапит iso, откуда грузится syslinux и грузит kernel и initrd.

CYB3R ★★★★★ ()

Я уже делал мультизагрузочный диск (помещал Ubuntu 32/64 и Fedora 32/64).

Я распаковывал файлы в свои папки, и в grub-legacy создавал пункты (вернее брал из загрузчиков тех LiveCD, и добавлял пункты live-media-path или live_dir).

Показать menu.lst сейчас не могу, но копать лучше в эту сторону.

Dukat863 ()
Ответ на: комментарий от Dukat863

Наткнулся на статью с таким вариантом на хабре, мне не понравилось.

CYB3R ★★★★★ ()
Ответ на: комментарий от CYB3R

Они уже два года не могут смерджить реализованный на GSoC El torito.

gadfly ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.