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
}
Другие вопросы по тегам