grub: загрузка с ISO

41

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

Альберт
источник
какая версия grub?
Квик-кихот
1
На этот же вопрос ответили здесь .
dma_k
1
Ubuntu: askubuntu.com/questions/340156/…
Сиро Сантилли 新疆 15 中心 法轮功 六四 事件

Ответы:

55

Самая большая проблема с загрузкой 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
}
шарлатан
источник
@albert: я использую Grub2 на флеш-накопителе и разочарован одними и теми же вещами, так что собрать их было несложно. Я смотрю на другой ваш вопрос, но я никогда не пробовал "прожигать" ISO на разделы раньше, так что это может быть ... интересно.
шарлатан-кихот
Конечно, я могу загрузить его внутри VMware (и я тоже это сделал), но это мне мало помогает, потому что это Windows, и когда я устанавливаю его через VMware на свой диск, он не загружается позже (глупая Windows ...).
Альберт
Можете ли вы дать мне предложение, какой вариант я должен попробовать в первую очередь, то есть Grub1, Grub2 или Grub4DOS? Я могу просто установить все, что нужно, это не будет проблемой.
Альберт
@albert: вы спрашиваете в связи с вашим предыдущим вопросом? я считаю, что лучше всего использовать метод извлечения; Установщик Windows - это один из тех ISO, у которых возникают проблемы, когда они не загружаются с аппаратного обеспечения. Вы можете попробовать Memtest, но я не знаю много об этом. вы, вероятно, хотите получить флешку и использовать ее; см. superuser.com/questions/66948/… или superuser.com/questions/62193/install-win7-from-usb
квик-квик
1
@quackquixote, Относительно ваших смелых слов «Что будет делать загруженная операционная система? Скорее всего, она будет искать компакт-диск, который он не найдет и не даст сбой» , Почему ОС должна искать компакт-диск? Это уже идеальный iso-файл, и все, что нужно для загрузки ОС, уже находится в iso-файле, так почему же он не может пропустить поиск CDROM?
Pacerier
1

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

Наос Парт
источник
Но раздел должен быть основным, чтобы быть загрузчиком Windows Loader.
Повелитель огня
Это работает только иногда, как правило, результат не является загрузочным.
Дэвид Тонхофер
1
@Firelord: Ну, не используйте Windows Loader. Используйте Grub. Да, он тоже загружает Windows, если вам действительно нужно.
Evi1M4chine