Как я могу загрузить файл ISO в GRUB? Файл ISO находится в разделе reiserfs, и GRUB может получить к нему доступ (это уже проверено).
2 ответа
Самая большая проблема с загрузкой 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