- grub2 загрузка windows_boot.iso
- Интересная фича Grub2: загрузка из ISO-файла
- Загрузка с ISO образа в Grub
- Что нам понадобится
- Загрузка с ISO образа в Grub
- Загрузка windows с iso образа в Grub
- Завершение настройки Grub
- Выводы
- Как загрузить компьютер с ISO-образа на жестком диске с помощью Grub
- Требования
- Правка конфигурационных файлов
- Что дальше?
grub2 загрузка windows_boot.iso
суть такова, есть образ загрузочного диска офтопика (xp.iso) на жестком (hd1,5), есть usb-флешка с grub2. подскажите как правильно прописать grub.cfg где-то нашел:
loopback loop (hd1,5)/xp.iso
выдает error: invalid file name «
гугл молчит, маны читал
> loopback loop (hd1,5)/xp.iso
что, уже и так можно? О_О
AFAIK, не один из существующих загрузчиков не умеют грузить образы с El Torito.
Те которые можно (с линуксом) имеют гибридный El Torito/Grub загрузчик.
> что, уже и так можно? О_О
можно, это grub2 =)
s/не один/ни один/
А, я винду с линупсом спутал. Там ядро и initrd вообще в отдельных строчках указываются.
Хотя нет.. я и адрес к iso как-то по-другому задавал. ой, не вспомню сейчас.
> chainloader (loop)
Гуглите дальше, там сказано, что загрузку с (loop) они ниасилили. Мне пришлось пользоваться memdisk от syslinux.
Более того, винда отвалится с BSOD 0x7b, ибо перейдёт в защищённый режим процессора и вся эмуляция диска пойдёт прахом.
>Мне пришлось пользоваться memdisk от syslinux.
И что, получилось загрузить любую isoшку таким способом?
Гуглите дальше, там сказано, что загрузку с (loop) они ниасилили
Ливцд-образы Линуксов, у которых была ядрёная опция isofrom, у меня успешно грузились таким макаром.
Вот пример: http://michael-prokop.at/blog/2009/05/25/boot-an-iso-via-grub2/
> Ливцд-образы Линуксов,
Именно. Там грузили с (loop) ядро и initrd. А человеку нужно загрузить загрузочный сектор ISO-образа, что разработчики GRUB2 ниасилили и посчитали ненужным.
И что, получилось загрузить любую isoшку таким способом?
Расковырял Frenzy, выложил запакованный образ файловой системы на флешку, остатки собрал обратно и запустил memdisk’ом. Работает.
> загрузить загрузочный сектор ISO-образа, что разработчики GRUB2 ниасилили и посчитали ненужным
Да, действительно, вы абсолютно правы
буду курить memdisk, хотя, насколько я понимаю, он тоже не панацея
Интересная фича 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). Если у Вас образ окажется в какой-нибудь папке, указывайте полный путь к образу относительно корня.
Обновляем конфигурационный файл grub2:
update-grub
Собственно далее я создал новый раздел для будущей второй системы при помощи fdisk, и перезагрузился.
Как и ожидалось, в меню загрузки появился новый пункт “Ubuntu Live”, который и был незамедлительно выбран. При загрузке никаких приключений не произошло, однако вместо Unity меня встретил Gnome 🙂 Дрова для моей nvidia в дистр не включены.
Самое время начать установку. Жму install. После выбора разделов для /, swap и /home меня ждал очередной фейл. Ubiquity на отрез отказался продолжать, аргументируя тем, что у меня есть подмонтированный раздел. Для того, чтобы создать loop-устройство с нашим образом Ubuntu, grub2 сначала смонтировал раздел, на котором находился этот самый образ. И не важно, что этот раздел никак не фигурировал среди претендующий на какую бы то ни было модификацию при установке, инсталлятор Ubiquity был непреклонен и установку продолжать отказывался.
После непродолжительного поиска в гугле оказалось, что я не первый, кто с этим столкнулся. Проблема решалась удалением строчки с примонтированным разделом (в моем случае это был /dev/sda7) из /etc/mtab. Сделать это нужно было до начала установки. После ее удаления все пошло как по маслу. Установка завершилась успешно, я поставил драйвер видеокарты и после перезагрузки… TA-DA.
После успешного опыта с 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.
Загрузка с ISO образа в Grub
Есть не так уж много вариантов использования нескольких дистрибутивов Linux на одной машине. Вы можете установить их все на жесткий диск, на виртуальную машину или сохранить в виде ISO образа и загружаться в реальном времени.
Первый и второй способы не очень выгодны так как требуют очень много места на жестком диске, с другой стороны, для третьего способа нужно иметь CD диск или USB флешку для хранения образа и загрузчика. Но есть еще один вариант — хранить ISO образ на жестком диске, и загружаться с него по мере надобности. Здесь не нужно столько дискового пространства как при установке, и не нужен внешний носитель информации. В этой статье будет рассмотрена загрузка с ISO образа в Grub.
Что нам понадобится
В этой статье мы будем использовать загрузчик Grub, впрочем, он и так используется в большинстве дистрибутивов Linux. Также нам понадобится ISO образ, с которого будем загружаться и вы должны знать на каком разделе он размещён. Удобнее всего разместить его на загрузочном разделе. Чтобы узнать какой раздел диска у вас загрузочный выполните:
Загрузочный раздел будет помечен знаком * в колонке Загрузочный или Boot. Например, у меня /dev/sda2 или как пишется в Grub hd0,2 — загрузочный.
Разделы /dev/sda1 и /dev/sdb3 будут называться в Grub hd0,1 и hd1,3 соответственно. В синтаксисе Grub именование дисков начинается с нуля, а именование разделов с единицы.
Загрузка с ISO образа в Grub
Сначала откройте файл /etc/default/grub и закомментируйте там эту строку если она там есть:
Перед строчкой должна стоять решетка. Сохраните изменения, а затем откройте файл /etc/grub.d/40_custom. Здесь мы добавим пункт для загрузки с образа, синтаксис выглядит следующим образом:
menuentry «Заголовок пункта» <
set isofile = «Адрес ISO файла»
loopback loop Раздел в форме записи Grub на котором расположен ISO $isofile
Параметры загрузки ядра
>
Перед тем, как переходить к настройке Grub надо выяснить ещё один момент. Как в оригинальном образе выполняется загрузка дистрибутива. Обычно в каждом загрузочном образе есть папка Grub в которой можно посмотреть файл grub.cfg или другой подобный, например loopback.cfg и узнать какими строками там загружается ядро:
Только перед путями к файлам надо добавить адрес (loop). Путь к образу надо указывать от начала того диска, на котором он расположен. Например, если диск расположен в корне загрузочного раздела, который монтируется в /boot, то и путь будет /файл.iso, а не /boot/файл.iso. Теперь можно переходить к примеру, запись для загрузки Puppy Linux будет выглядеть вот так:
menuentry «Puppy 20.04 Live» <
set isofile=»/puppylinux.iso»
loopback loop (hd0,2)$isofile
linux (loop)/vmlinuz pfix=fsck pmedia=cd findiso=»/puppylinux.iso»
initrd (loop)/initrd.gz
>
Каждый дистрибутив индивидуален и надо с каждым разбираться отдельно. Если вы хотите запускать Gparted:
menuentry «GParted Live amd64» <
set isofile=»/gparted-live-0.18.0-2-amd64.iso»
loopback loop (hd0,2)$isofile
loopback loop $isofile
linux (loop)/live/vmlinuz boot=live config union=aufs noswap noprompt ip=frommedia toram=filesystem.squashfs findiso=$
initrd (loop)/live/initrd.img
>
Или даже Fedora Linux:
menuentry «Fedora Live» <
set isofile=»/Fedora.iso»
loopback loop (hd0,2)$isofile
loopback loop $isofile
linux (loop)/isolinux/vmlinuz0 root=live:CDLABEL=Fedora-Live rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0 iso-scan/filename=$
initrd (loop)/isolinux/initrd0.img
>
Обратите внимание, что опции будут меняться в зависимости от дистрибутива и расположения в нем загрузочных файлов. Кроме того, важно то где размещен ISO образ, если ваш домашний каталог зашифрован лучше его хранить на загрузочном разделе, как в примерах выше.
Хотите больше? Можно загрузится с ISO для автоматического выполнения каких-либо действий. Например, если вы параноик и хотите иметь возможность быстро стереть свой жесткий диск можно использовать DBAN. Но будьте осторожны так как это сотрет все данные без возможности восстановления.
menuentry «Darik’s Boot and Nuke» <
set isofile=»/dban.iso»
loopback loop (hd0,1)$isofile
linux (loop)/dban.bzi nuke=»dwipe» silent
>
Есть еще много вещей, которые можно сделать с помощью загрузки ISO образа в Grub, неважно хотите ли вы очень быструю Live систему или иметь возможность уничтожить все кончиком пальца.
Загрузка windows с iso образа в Grub
Если вам нужна загрузка Windows с ISO образа Grub, то это делается тоже не очень сложно, но немного по другому. Сначала нужно скачать syslinux и извлечь оттуда memdisk в папку /boot/. Это должна быть папка, куда установлены файлы Grub. Дальше добавьте в конфигурационный файл 40-grub.conf такие строки:
menuentry «Boot Windows» <
search -f «—set-root /Windows.iso»
insmod memdisk
linux16 /boot/memdisk iso
initrd16 /Windows.iso
>
Образ Windows должен лежать в корне одного из разделов и называться Windows.iso, дальше команда search автоматически найдет этот раздел и установит его в качестве корня. Потом останется только загрузка windows с iso образа grub.
Завершение настройки Grub
Мы все подготовили, теперь остается обновить конфигурацию загрузчика Grub, чтобы новые пункты добавились в /boot/grub/grub.cfg и появились в меню загрузки. Для Ubuntu команда будет выглядеть вот так:
В других дистрибутивах может понадобится команда:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Затем можно перезагрузиться и посмотреть что получилось:
Если что-то пошло не так, вы можете нажать клавишу E и редактировать этот пункт меню чтобы попытаться исправить проблему прямо в загрузчике.
Выводы
Теперь вы знаете как выполняется загрузка iso образа grub, здесь нет ничего сложного, но зато это очень полезная возможность получить несколько систем на своем компьютере, затратив при этом минимум памяти и времени на их установки. Если у вас остались вопросы, спрашивайте в комментариях!
Как загрузить компьютер с ISO-образа на жестком диске с помощью Grub
Если вам требуется использовать в работе несколько дистрибутивов Linux, это можно реализовать несколькими способами. Вы можете установить все дистрибутивы на жесткий диск, использовать виртуальные машины или загружаться с ISO-образа в live-режиме. Третий вариант наименее требователен к дисковому пространству — вам нужен только ISO-образ на жестком диске, и вы загружаетесь с него в live-режиме, получая полнофункциональную среду для работы. Я покажу как сделать это, используя популярный загрузчик Grub.
Требования
Естественно, вам потребуется Grub, но он и так используется в подавляющем большинстве дистрибутивов Linux. Вам также нужен ISO-образ, с которого вы будете загружаться, на вашем жестком диске. И вы должны знать, где расположен ваш загрузочный раздел, и как выразить его название на языке Grub. Для этого воспользуйтесь командой:
Загрузочный раздел помечен символом «*». У меня это /dev/sda1, что на языке Grub записывается как (hd0,1).
Соответственно sda2 будет (hd0,2), sdb1 будет (hd1,1) и так далее.
Правка конфигурационных файлов
Сначала откройте файл /etc/default/grub, и проверьте, что следующая строка:
действительно закомментирована, то есть перед ней стоит «#».
Сохраните файл и откройте /etc/grub.d/40_custom.
В этот файл вы внесете аргументы для загрузки ISO-образа. Структура файла следующая:
Например, если вы хотите загружать из ISO-образа Ubuntu, вам необходимо добавить в этот файл следующий текст:
Если вы захотите вместо этого запустить Gparted:
Обратите внимание, что аргументы меняются в зависимости от дистрибутива. Их описание нетрудно найти в интернете. Кроме того, проверьте, где хранится ваш образ. Если ваша домашняя директория зашифрована, или недоступна по какой-либо другой причине, лучше поместить образ в загрузочную директорию, как показано в примере, если там достаточно дискового пространства.
В конце не забудьте сохранить файл 40_custom и обновить настройки grub с помощью команды:
Что дальше?
Хотите узнать больше? Поигравшись с аргументами, вы можете настроить загрузку так, чтобы дистрибутив, загружающийся с ISO-образа, начал немедленно выполнять какую-либо задачу. Например, вы законченный параноик, и хотите иметь возможность быстрого стирания жесткого диска. Это можно сделать с помощью чего-нибудь типа DBAN . Теперь будьте предельно осторожны, так как приведенная ниже конфигурация при выборе этой опции сотрет ваш диск без возможности восстановления.
покажет вам опции DBAN и позволит выбрать стирание жесткого диска.
Будьте осторожны, так как это также очень опасно для ваших данных.
Подводя итоги, можно сказать, что возможность загрузки с ISO-образа может помочь вам во многих вещах, начиная от быстрой загрузки образа и заканчивая быстрым стиранием данных. Все зависит от вашей фантазии.