grub: загрузка с ISO
Как я могу загрузить файл ISO в GRUB? Файл ISO находится в разделе reiserfs, и GRUB может получить к нему доступ (это уже проверено).
3 ответа
Самая большая проблема с загрузкой ISO-файла заключается в том, что ISO-образы, предназначенные для загрузки, почти всегда предназначены для загрузки с компакт-диска. Как объясняется в блоге Марко относительно Grub 2 (выделено мое):
GRUB может читать изображения ISO9660 (”iso”). Например, он может загрузить первые несколько секторов и загрузить его. Но большинство людей не понимают, "что тогда?". Что будет делать загруженная операционная система? Скорее всего, он будет искать компакт-диск, который он не найдет, и потерпит неудачу.
Таким образом, самый простой и простой способ загрузки из некоторого случайного файла ISO - это загрузить его на виртуальную машину (VirtualBox, VMware или Virtual PC) в качестве виртуального компакт-диска и загрузить его там. Это должно почти всегда работать, потому что для виртуальной машины это не файл ISO - это настоящий CD на реальном оборудовании CD.
Загрузка из файла ISO на голом металле намного сложнее. То, как вы это сделаете, зависит от того, какую версию Grub вы используете, и результаты могут отличаться в зависимости от того, какой ISO вы используете и как он был настроен для загрузки. Вот почему большинство инструментов boot-ISO-from-USB (Unetbootin, WinToFlash и т. Д.) Обычно извлекают содержимое ISO на диск - потому что таким образом к ним можно обращаться напрямую, не путая загружаемую ОС.
Grub 1
... Точно сказать не могу. Если возможно, пункты меню будут, вероятно, очень похожи на Grub4DOS, хотя я думаю, что команда "map --hook" является улучшением Grub4DOS. С другой стороны, Grub имеет более широкую поддержку файловой системы, чем Grub4DOS.
В примечании к Grub с reiserfs (неподтвержденным) указывается, что вам "нужно смонтировать раздел с notail
чтобы это работало ".
Memdisk является опцией; увидеть ниже.
Grub4DOS
Grub4DOS предлагает некоторую экспериментальную "эмуляцию CD", которая работает с некоторыми ISO. К сожалению, Grub4DOS читает только файловые системы FAT32/NTFS. Загрузите Grub4DOS.
Вот пример записи ( источник):
title fdfullcd.iso (0xFF)
find --set-root /fdfullcd.iso
map /fdfullcd.iso (0xFF)
map --hook
root (0xFF)
kernel /isolinux/data/memdisk
initrd /isolinux/data/fdboot.img
Предположительно, Win7 ISO можно загрузить с помощью этой записи:
title Windows 7
map (hd0,0)/win7.iso (hd32)
map --hook
chainloader (hd32)
Другие ISO- образы могут быть загружены с помощью Memdisk:
title Boot Hardware Detection Tool from iso image (with 'iso' parameter)
kernel /memdisk iso
initrd /hdt.iso
Вы также можете использовать конфигуратор меню, например MultiBootISOs.exe из PenDriveLinux. Поместите ISO-образы на флэш-накопитель и запустите утилиту для установки загрузчика и настройки меню загрузки.
Вот эпизод Hak5 по установке Grub4DOS.
Grub 2
Вот несколько примеров записей Grub2. chainloader не работает для загрузки ISO в настоящее время, поэтому эти записи должны (1) использовать loopback для "монтирования" ISO и (2) добавить что-то вроде iso-scan или findiso в строку linux, которая определяет файл ISO.
К сожалению, нет общего способа сделать это. Каждая отдельная загрузочная запись должна быть настроена в соответствии с содержимым целевого ISO. Большинство Linux LiveCD используют ISOLINUX в качестве загрузчика; найдите isolinux.cfg и изучите эту загрузочную запись, чтобы увидеть, что она обычно загружает.
Пример записи ( источник):
menuentry "Ubuntu Live 9.10 32bit" {
loopback loop /boot/iso/ubuntu-9.10-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-9.10-desktop-i386.iso noeject noprompt --
initrd (loop)/casper/initrd.lz
}
menuentry "Grml small 2009.10" {
loopback loop /boot/iso/grml-small_2009.10.iso
linux (loop)/boot/grmlsmall/linux26 findiso=/boot/iso/grml-small_2009.10.iso apm=power-off lang=us vga=791 boot=live nomce noeject noprompt --
initrd (loop)/boot/grmlsmall/initrd.gz
}
Если вы пытаетесь загрузить не-Linux LiveCD, вам может не повезти. Опять же, Memdisk может помочь:
menuentry "Boot Hardware Detection Tool from iso" {
linux16 /memdisk iso
initrd16 /hdt.iso
}
Вы можете использовать dd из терминала для записи iso-файла в раздел. Только будьте осторожны, если вы используете дд неправильно, вы можете стереть все. Это должно выглядеть примерно так: dd if=Desktop/LinuxCDFile.iso of=/Path/To/Partition
Есть прекрасный набор примеров и настроек для многих популярных ISO- загрузок Grub 2.
menuentry "Focal Desktop iso" {
set isofile="/iso/focal-desktop-amd64.iso"
rmmod tpm // For GPT only
loopback loop (hd0,5)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd
}