На 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, они автоматически появятся в меню загрузки.
Комментариев: 17 RSS
1Zenitur20-10-2010 00:34
Не люблю Ubuntu и поэтому спрашиваю: известно ли вам, чем отличается образ компакт-диска, который может быть использованным таким образом, от того, который не может быть использованным таким образом? Наличием GRUB 2 в качестве используемого менеджера загрузки в нем? Или что?
2ASLok20-10-2010 18:13
> Теперь, если мы поместим образы *.img в /boot/images, они автоматически появятся в меню загрузки.
Имеется ввиду, что sudo update-grub все равно делать придется?
3vovans21-10-2010 20:15
хм, как-то не подумал об этом, когда переводил.
Судя по всему, надо.
Хотя, с другой стороны, не каждый же день эти образы добавляются :)
4vovans03-11-2010 00:36
эх, скачал Fedora 14. Хотел посмотреть на это чудо. Ну, думаю, пропишу в груб. Перепробовал ряд способов, толку 0 :(
Вот ссылка на обсуждение проблемы:
//bugzilla.redhat.com/show_bug.cgi?id=557426
там в конце человек приводит свой grub.cfg с кучей примеров, но ни один не работает ((( Обидно ((
5Роман07-11-2010 10:05
Ну чтоб можно было загружаться на других компьютерах, можно использовать флэшку на которой установнег Grub4dos. Подробнее там greenflash.su
6vovans07-11-2010 10:11
да при чём тут флешка, Рома? Речь же о другом совсем.
Мне не нужны другие компы. У меня есть ноут, за которым я постоянно работаю. Слил я образ, прописал его в grub 2 и теперь могу грузиться с него. С Fedora такое не прокатывает :( глюк там какой-то :(
7sergamena30-12-2010 19:57
А с образа венды так можно загрузиться?
8Guria05-01-2011 23:17
Вопрос в том как подбирать параметр для указания пути к iso для дистрибутивов не упомянутых в статье. уж больно большой список вариантов: iso-scan/filename, findiso, isoloop, iso_filename. Как вообще определять поддерживается такой способ загрузки? Правильно ли я понимаю, что вариант зависит от конкретного ядра в дистрибутиве?
9iPet3o02-02-2011 13:47
строчка
меня смущает. Мы же ложили образ в папку /boot/iso, а не /iso. У меня при таком написании как у вас GRUB ругался на отсутствие образа, но стоило мне исправить строчку на
как все тут же заработало!
10vovans02-02-2011 15:12
ничего не должно смущать. Либо делаем всё с пониманием, либо методом перебора. Если /boot - это отдельный раздел, то никаких /boot в пути не должно быть. Если же /boot находится на одном разделе с /, то, разумеется, надо дописывать boot в путь. И (hdA,B) соответствующие для обоих случаев.
Кстати, я пояснял эту ситуацию для /home:
11Лайт05-02-2011 20:59
GRUB2 наше всё. С его помощью наконец-то создал мультизагрузочную флешку, о чём давно мечтал.
12Лисёнок19-11-2012 14:41
Скажите, а Windows XP Live iso можно таким образом подгрузить?
13vopros17-02-2014 16:15
Ответы насчет 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 как загрузиться с него?
14vopros17-02-2014 16:21
... возращаясь к "венде", вот рабочий пример запуска 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 из файла. Скажу честно, редко, но сбои были.
Сорри за оффтоп.
15Maks07-12-2017 03:55
ребята, вопрос, а Freebsd исошник тоже можно так продгрузить ?
16Эдуард26-03-2019 09:45
Vovans,так будет работать?
Grub2Win
Исо файл на диске C: (hd0,1)
Файл grub.cfg :
17Anon25-02-2020 12:48
Установил свежую Ubuntu при помощи dd сделал образ диска. Теперь хочу загрузиться с этого образа согласно инструкции выше chmod +x /etc/grub.d/50_memdisk
Но Grub2 у меня зависает с ошибкой "out of memory"
Как исправить?
Вы можете войти под своим логином или зарегистрироваться на сайте.