Grub 2 (загрузка с *.iso и *.img)
Рубрика: Дополнительные материалы -> Изучаем Linux -> Администрирование
Метки: CD | DVD | Live-DVD | Ubuntu | Администрирование | Комплект инструментов | Приятные мелочи | Учебные материалы
Просмотров: 55426
На ubuntuforums попался рецепт, как с помощью Grub 2 загрузить компьютер с iso-образа, лежащего на винте. Это может быть удобно, когда нет привода в компьютере или просто лень диск записывать. Кроме того, что не нужно вставлять диск в привод, сам процесс загрузки проходит заметно быстрее. К сожалению, не все загрузочные образы подходят для такой загрузки. Умеют такой "фокус", например, Ubuntu 9.10 и новее, Gparted CD, Parted Live CD, SystemRescue CD и некоторые другие. Кроме *.iso возможна загрузка с некоторых *.img-образов.
В данном примере предлагается размещать файлы загрузочных образов в директорию /boot/iso/ и в Grub 2 указывать их как, например, (hd0,1)/boot/iso/<имя_образа.iso>.
Поскольку 'rescue CD' как правило грузятся в память компьютера, тип файловой системы, где лежат образы, не имеет большого значения. Ведь Grub 2 уже с него умеет загружаться.
После того как вы скопируете образы в /boot/iso/, остаётся лишь прописать их в меню Grub 2.
Обратите внимание, если вы хотите загружать образы из домашней директории. У большинства пользователей /home - это отдельный раздел. Соответственно, необходимо указывать путь не в виде (hdA,B)/home/user/iso/name.iso, а примерно так: (hdX,Y)/user/iso/name.iso. Думаю, это понятно.
Итак, создаём нужные пункты в grub-меню. Открываем для правки файл /etc/grub.d/40_custom. Все добавленные в него записи появятся последними пунктами меню. Если вы хотите добавить записи выше, то нужно их писать в файл с меньшим номером, например - 06_custom. Главное, не забыть сделать его исполняемым.
Пример /etc/grub.d/40_custom:
#!/bin/sh echo "Adding 40_custom." >&2 exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry "Lucid ISO" { loopback loop (hd0,1)/boot/iso/ubuntu-10.04-desktop-i386.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu-10.04-desktop-i386.iso noprompt noeject initrd (loop)/casper/initrd.lz } menuentry "Karmic 64-bit ISO" { loopback loop (hd0,1)/boot/iso/ubuntu-9.10-desktop-amd64.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu-9.10-desktop-amd64.iso noprompt quiet splash initrd (loop)/casper/initrd.lz } menuentry "Gparted Live ISO" { loopback loop (hd0,1)/boot/iso/gparted-live-0.6.1-2.iso linux (loop)/live/vmlinuz boot=live union=aufs noswap noprompt ip=frommedia findiso=/boot/iso/gparted-live-0.6.1-2.iso toram=filesystem.squashfs initrd (loop)/live/initrd.img } menuentry "SystemRescue CD ISO" { loopback loop (hd0,1)/boot/iso/systemrescuecd-x86-1.5.8.iso linux (loop)/isolinux/rescue64 setkmap=us isoloop=/systemrescuecd-x86-1.5.8.iso initrd (loop)/isolinux/initram.igz } menuentry "Parted Magic ISO" { loopback loop (hd0,1)/boot/iso/pmagic-5.2.iso linux (loop)/pmagic/bzImage iso_filename=/boot/iso/pmagic-5.2.iso boot=live load_ramdisk=1 prompt_ramdisk=0 noeject noprompt initrd (loop)/pmagic/initramfs } menuentry "Boot IMG - Seagate Tools" { linux16 /memdisk bigraw initrd16 /SeaTools.img }
После внесения любых изменений в этот файл необходимо выполнить команду:
sudo update-grub
Для загрузки с img-образов необходим файл memdisk. Он поставляется с пакетом syslinux. Последний обычно установлен в системе. Файл нужно скопировать в /boot. Для debian/ubuntu это будет выглядеть так:
cp /usr/lib/syslinux/memdisk /boot/
Так же, процесс добавления img-образов можно автоматизировать, создав файл /etc/grub.d/50_memdisk со следующим кодом:
#!/bin/sh set -e IMAGES=/boot/images . /usr/lib/grub/grub-mkconfig_lib if test -e /boot/memdisk ; then MEMDISKPATH=$( make_system_path_relative_to_its_root "/boot/memdisk" ) echo "Found memdisk: $MEMDISKPATH" >&2 find $IMAGES -name "*.img" | sort | while read image ; do IMAGEPATH=$( make_system_path_relative_to_its_root "$image" ) echo "Found floppy image: $IMAGEPATH" >&2 cat << EOF menuentry "Bootable floppy: $(basename $IMAGEPATH | sed s/.img//)" { EOF prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/" cat << EOF linux16 $MEMDISKPATH bigraw initrd16 $IMAGEPATH } EOF done fi
После чего, как уже писалось, необходимо выполнить:
chmod +x /etc/grub.d/50_memdisk update-grub
Теперь, если мы поместим образы *.img в /boot/images, они автоматически появятся в меню загрузки.
Не люблю Ubuntu и поэтому спрашиваю: известно ли вам, чем отличается образ компакт-диска, который может быть использованным таким образом, от того, который не может быть использованным таким образом? Наличием GRUB 2 в качестве используемого менеджера загрузки в нем? Или что?
> Теперь, если мы поместим образы *.img в /boot/images, они автоматически появятся в меню загрузки.
Имеется ввиду, что sudo update-grub все равно делать придется?
хм, как-то не подумал об этом, когда переводил.
Судя по всему, надо.
Хотя, с другой стороны, не каждый же день эти образы добавляются :)
эх, скачал Fedora 14. Хотел посмотреть на это чудо. Ну, думаю, пропишу в груб. Перепробовал ряд способов, толку 0 :(
Вот ссылка на обсуждение проблемы:
https://bugzilla.redhat.com/show_bug.cgi?id=557426
там в конце человек приводит свой grub.cfg с кучей примеров, но ни один не работает ((( Обидно ((
Ну чтоб можно было загружаться на других компьютерах, можно использовать флэшку на которой установнег Grub4dos. Подробнее там greenflash.su
да при чём тут флешка, Рома? Речь же о другом совсем.
Мне не нужны другие компы. У меня есть ноут, за которым я постоянно работаю. Слил я образ, прописал его в grub 2 и теперь могу грузиться с него. С Fedora такое не прокатывает :( глюк там какой-то :(
А с образа венды так можно загрузиться?
Вопрос в том как подбирать параметр для указания пути к iso для дистрибутивов не упомянутых в статье. уж больно большой список вариантов: iso-scan/filename, findiso, isoloop, iso_filename. Как вообще определять поддерживается такой способ загрузки? Правильно ли я понимаю, что вариант зависит от конкретного ядра в дистрибутиве?
строчка
меня смущает. Мы же ложили образ в папку /boot/iso, а не /iso. У меня при таком написании как у вас GRUB ругался на отсутствие образа, но стоило мне исправить строчку на
как все тут же заработало!
ничего не должно смущать. Либо делаем всё с пониманием, либо методом перебора. Если /boot - это отдельный раздел, то никаких /boot в пути не должно быть. Если же /boot находится на одном разделе с /, то, разумеется, надо дописывать boot в путь. И (hdA,B) соответствующие для обоих случаев.
Кстати, я пояснял эту ситуацию для /home:
GRUB2 наше всё. С его помощью наконец-то создал мультизагрузочную флешку, о чём давно мечтал.
Скажите, а Windows XP Live iso можно таким образом подгрузить?
Ответы насчет Windows. Админы, уж простите, а то они этими вопросами постоянно будут донимать.
Чтобы "с образа венды так можно загрузиться" и "а Windows XP Live iso можно таким образом подгрузить" - поищите, скачайте iso-файл Windows PE (или XPE). Есть повсюду, наверное лучший "Windows-liveCD", что можно предложить. Для загрузки с iso-образов для Windows-7 скачайте программу EasyBCD. Там еще проще. Grub4Dos также идет с примерами. По инструкции создаете каталог grub4dos и файл "grldr" и "menu.lst" в корневой каталог диска копируете(где windows xp), а в файл boot.ini (WinXP) вставляете строчку C:\GRLDR="Start GRUB".
Вопрос по теме. У меня, к сожалению нет Grub2 (наверное такового я вообще не видел, т.к. Ubuntu как-будто поставляется с 1.99). В лайф-сиди Ubuntu в меню присутствует программа проверки памяти, представлена файлом memtest.bin, может ли это быть dos-программа? Если да, то у меня есть .ima-файл с MsDOS6.22 как загрузиться с него?
... возращаясь к "венде", вот рабочий пример запуска windowsxpe.iso лежащего в корневом каталоге windos-диска (запускает его grub4dos). В текст "menu.lst" добавляем:
title Multi Boot
fallback 7
find --set-root /MultyBoot1_CD-USB_2k10_conty9.iso
map /MultyBoot1_CD-USB_2k10_conty9.iso (0xff) || map --mem /MultyBoot1_CD-USB_2k10_conty9.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2
Может кое-где в командах ошибки, но лично проверял на множестве компьютеров - работает, если оперативной памяти больше 256 Мбайт. Этот файл постоянно ношу на флешке и копирую на компы (без DVD-ROM), чтобы запустить Windows XPE из файла. Скажу честно, редко, но сбои были.
Сорри за оффтоп.
ребята, вопрос, а Freebsd исошник тоже можно так продгрузить ?
Vovans,так будет работать?
Grub2Win
Исо файл на диске C: (hd0,1)
Файл grub.cfg :
Установил свежую Ubuntu при помощи dd сделал образ диска. Теперь хочу загрузиться с этого образа согласно инструкции выше chmod +x /etc/grub.d/50_memdisk
Но Grub2 у меня зависает с ошибкой "out of memory"
Как исправить?