41

Как я могу загрузить файл ISO в GRUB? Файл ISO находится в разделе reiserfs, и GRUB может получить к нему доступ (это уже проверено).

2 ответа2

54

Самая большая проблема с загрузкой 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
}
1

Вы можете использовать dd из терминала, чтобы записать ISO-файл в раздел. Просто будьте осторожны, если вы используете дд неправильно, вы можете стереть все. Это должно выглядеть примерно так: dd if = Desktop/LinuxCDFile.iso of =/Path/To/Partition

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .