Grub iso boot linux

How to boot from an .iso file in GRUB2? [duplicate]

Yes, please elaborate on what you mean. This is an interesting topic; booting from an .iso file is potentially very useful.

6 Answers 6

It may be much easier than the impression you get from all the detailed explanations on the web. I just did the following on Ubuntu 12.04 to boot FreeDOS .iso for a firmware update

sudo -s apt-get install grub-imageboot mkdir /boot/images/ cp $YOUR_ISO_FILE.iso /boot/images/ update-grub2 

Sometimes, you may need 2 more steps to do before running update-grub2:

If you never did it before, you need to edit /etc/default/grub so that you see the grub menu on boot:

## To show the menu, disable the hidden_timeout, and set a timeout #GRUB_HIDDEN_TIMEOUT=0 GRUB_TIMEOUT=10 

For some .iso images, you may need to add this option in /etc/default/grub-imageboot : (I needed it for my FreeDOS .iso)

If you did edit one of these config. files, you need to run update-grub2 again.

Update: Here is the resulting menuentry asked by «dma_k»

menuentry "Bootable ISO Image: SV100S2_64_128_120229" < insmod part_msdos insmod ext2 set root='(hd0,msdos6)' search --no-floppy --fs-uuid --set=root 6ca082d0-63d0-48c3-9e5f-2ce5d7a74fe4 linux16 /boot/memdisk iso raw initrd16 /boot/images/SV100S2_64_128_120229.iso >

This was for a FreeDOS image with some firmware update or such.

Thanks, I see. Have you found any limitations with this approach? I have a feeling that memdisk can only load images say less then 1GB, something more heavy (e.g. Win7 DVD ISO) is causing problems.

I’m assuming you want to add a .iso entry to the GRUB menu and boot it ?

I found this info on Ubuntu Forums

Problem is (as I found out the hard way today) that it’s still impossible to install from a grub-mounted iso because the installer crashes when trying to unmount the iso. *sigh

I came across here because I got tired of burning countless bootable ISO 9660 images and thus wanted to use GRUB 2 to bootstrap a FreeDOS one for updating the firmware/microcode of Seagate HDDs. As a complement or alternative to mivk’s answer (using memdisk of syslinux), the following was what I had done to leverage the power of GRUB 2:

  1. Install the syslinux-common package (for using memdisk within it; grub-imageboot is a non-essential hooking package)
  2. Press the ‘c’ key (mnemonic for command) to activate the command prompt of GRUB 2’s builtin mini-shell (or, more precisely, the minimal BASH-like shell)
  3. Issue the 3 lines of commands in the GRUB 2’s mini-shell:
 linux16 (hd0,gpt2)/usr/lib/syslinux/memdisk iso raw initrd16 (hd0,gpt3)/myUserAccount/download/Barracuda-ALL-GRCC4H.iso boot # where Barracuda-ALL-GRCC4H.iso is a FreeDOS-based ISO 9660 image, and # the mathematical 2-tuples or ordered pairs, (hd0,gpt2) and (hd0,gpt3), # are GRUB 2's respective device notations for my rootfs partition # (e.g., /dev/sda2) and home partition (e.g., /dev/sda3). # NOTE: This procedure also applies to Seagate's SeaTools (based on # FreeDOS as well); just substitute the file SeaToolsDOS223ALL.iso # for Barracuda-ALL-GRCC4H.iso. 

By manipulating commands directly in the mini-shell, this procedure is more flexible and smipler than most of the aforesaid methods since you do not have to bother to tweak and update those GRUB 2’s configurations every time you wanna try a different Linux distro or a BSD-based live CD.

Читайте также:  Linux узнать guid пользователя

Currently, it is these 4 lines of commands that one can use as a generic pattern in the GRUB 2’s mini-shell, i.e., the loopback-linux-initrd-boot sequence plus some argument(s) passed to the given kernel, for example, to bootstrap as many popular Linux ISO images as possible (in this case is with 3 kernel commandline arguments for System Rescue CD):

 loopback lb (hd0,gpt3)/myUserAccount/download/systemrescuecd-x86-3.7.0.iso linux (lb)/isolinux/rescue64 isoloop=systemrescuecd-x86-3.7.0.iso setkmap=us docache initrd (lb)/isolinux/initram.igz boot 

N.B. The loopback part of the generic pattern is not, strictly speaking, mandatory for Linux, when you intend to install a Linux distro such as a Debian derivative without wasting an optical disc.

Источник

Интересная фича Grub2: загрузка из ISO-файла

Собственно, захотелось мне посмотреть на Unity. По картинкам и видео – вроде ничего. Да вот беда. В виртуальной машине его не запустишь — 3D требует. Сам я KDEшник. Основной ОС на ноутбуке является kubuntu. Ну, думаю, можно поставить второй системой. Свободное место, вроде, есть.

Ок. Качаю образ Natty, прожигаю а вот хрен. Оказалось, не работает мой CD-ROM. Ноут уже довольно старенький. Загрузки с флешек в биосе тоже нет. После кратковременной паники было найдено решение.

Оказалось, что grub2 научился понимать формат ISO 9660 и может загружать ОС прямо из ISO-образа, расположеного на жестком диске. Как выяснилось далее, не все системы готовы к такому повороту событий. Многие по тем или иным причинам приходят в замешательство при загрузке. К счастью, Ubuntu не является одной из них.

Ну, приступим. Первым делом добавляем новый пункт меню в Grub2. Для этого правим /etc/grub.d/custom_40, добавляя в конец файла следующие строки:

menuentry «Ubuntu Live» set root=(hd0,7)
loopback loop /ubuntu-11.04-desktop-amd64.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-11.04-desktop-amd64.iso noeject noprompt —
initrd (loop)/casper/initrd.lz
>

И что же мы тут наворотили:
В “set root” указываем раздел, в котором находится образ iso
В “loopback loop” создаем loop-устройство, к которому монтируем файл нашего iso (посмотрите, например, мануал mount, раздел “Loop Device”, если не знаете, что это за устройство loop).
Две следующие строчки указывают нахождение ядра и образа initrd относительно корня loop устройства (путь к файлам ядра и initrd внутри ISO-образа).

Если кто попытается повторить, имейте в виду:

1. В set root=(hd0,7) следует заменить 7 на номер раздела на вашей машине, в котором находится iso-шный образ системы. Например, если Вы загрузили ubuntu-11.04-desktop-amd64.iso в раздел /dev/sda1, строчка изменится на set root=(hd0,1).
2. Я загрузил ISO в корень своего home-раздела (коим является (hd0,7). Если у Вас образ окажется в какой-нибудь папке, указывайте полный путь к образу относительно корня.

Читайте также:  Astra linux центр сертификации

Обновляем конфигурационный файл grub2:
update-grub

Собственно далее я создал новый раздел для будущей второй системы при помощи fdisk, и перезагрузился.

Как и ожидалось, в меню загрузки появился новый пункт “Ubuntu Live”, который и был незамедлительно выбран. При загрузке никаких приключений не произошло, однако вместо Unity меня встретил Gnome 🙂 Дрова для моей nvidia в дистр не включены.

Самое время начать установку. Жму install. После выбора разделов для /, swap и /home меня ждал очередной фейл. Ubiquity на отрез отказался продолжать, аргументируя тем, что у меня есть подмонтированный раздел. Для того, чтобы создать loop-устройство с нашим образом Ubuntu, grub2 сначала смонтировал раздел, на котором находился этот самый образ. И не важно, что этот раздел никак не фигурировал среди претендующий на какую бы то ни было модификацию при установке, инсталлятор Ubiquity был непреклонен и установку продолжать отказывался.

После непродолжительного поиска в гугле оказалось, что я не первый, кто с этим столкнулся. Проблема решалась удалением строчки с примонтированным разделом (в моем случае это был /dev/sda7) из /etc/mtab. Сделать это нужно было до начала установки. После ее удаления все пошло как по маслу. Установка завершилась успешно, я поставил драйвер видеокарты и после перезагрузки… TA-DA.

image

После успешного опыта с Ubuntu, я решил посмотреть насколько универсален данный метод загрузки. Вынужден сообщить, что у многих дистрибутивов с ним не все так гладко.
Во-первых, в основной системе (в той, чьим загрузчиком мы пользуемся), должен быть установлен grub2. Grub и остальные загрузчики не умеют грузить систему из ISO на диске.

Проблема так же в том, что разработчики дистрибутива, который мы загружаем данным методом, должны явно предусмотреть вариант загрузки из ISO-файла. В Ubuntu, если вы глянете на сточку конфигурационного файла grub2, в которой указывается путь к ядру, увидите, что ядру передается специальный параметр iso-scan/filename, который явно указывает, что система грузится из ISO-файла.

Работает загрузка из ISO-файла в дистрибутивах основаных на Ubuntu (Mint, Kubuntu, Mythubuntu, BackTrack. ). Есть поддержка загрузки из ISO-файла в Gentoo, SystemRescueCD, нескольких менее именитых дистрибутивах: Sidux, Grml, Xbmc. Так же этим методом можно пользоваться для загрузки маленьких дистрибутивов, которые после распаковки initrd полностью помещаются в память и не используют файлы в образе. Например, у СentOS, Debian (да наверное и у многих других дистрибутивов) есть так называемые “netinstall”-образы, которые содержат только минимум и все пакеты устанавливаются по сети.

Fedora пока не “умеет” загружаться этим методом (хотя баг в их багтрекере висит и работа в этом направлении идет). Так же этот метод пока не работает в Arch и Debian.

Источник

Grub 2 (загрузка с *.iso и *.img)

На ubuntuforums попался рецепт, как с помощью Grub 2 загрузить компьютер с iso-образа, лежащего на винте. Это может быть удобно, когда нет привода в компьютере или просто лень диск записывать. Кроме того, что не нужно вставлять диск в привод, сам процесс загрузки проходит заметно быстрее. К сожалению, не все загрузочные образы подходят для такой загрузки. Умеют такой «фокус», например, Ubuntu 9.10 и новее, Gparted CD, Parted Live CD, SystemRescue CD и некоторые другие. Кроме *.iso возможна загрузка с некоторых *.img-образов.

Читайте также:  Все графические оболочки линукс

В данном примере предлагается размещать файлы загрузочных образов в директорию /boot/iso/ и в Grub 2 указывать их как, например, (hd0,1)/boot/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 . Главное, не забыть сделать его исполняемым.

#!/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 >

После внесения любых изменений в этот файл необходимо выполнить команду:

Для загрузки с 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 | sed -e "s/^/\t/" cat EOF done fi

После чего, как уже писалось, необходимо выполнить:

chmod +x /etc/grub.d/50_memdisk update-grub

Теперь, если мы поместим образы *.img в /boot/images , они автоматически появятся в меню загрузки.

Источник

Оцените статью
Adblock
detector