Как запустить ISO-образ системы напрямую с HDD используя GRUB2
Большинство дистрибутивов Linux поддерживают запуск окружения в Live-режиме и как правило, вы можете использовать ваш USB-диск, чтобы протестировать систему без установки. И хотя это достаточно просто - скопировать данные на USB диск для запуска, но иногда необходимо использовать один и тот же ISO образ достаточно часто. GRUB 2 может быть сконфигурирован таким образом, что вам не нужно будет записывать образ на USB-диск, вы сможете запускать его прямо из загрузочного меню.
Краткий перевод статьи: How to Run ISO Files Directly From the HDD with GRUB2
Подготовка GRUB
По сути, ISO образ содержит полный образ системы. Все что вам нужно - это указать правильные пути для GRUB2, где он сможет найти нужный файл, ядро, файловую систему, initramdisk или initram (в зависимости от дистрибутива).
В этом примере, мы запустим Kubuntu 15.04 в режиме live, настройку будем производить в Ubuntu 14.04.
В это примере файл:
kubuntu-15.04-desktop-amd64.iso
Находится в:
/home/maketecheasier/TempISOs/
на диске /dev/sda1
Что бы GRUB2 искал файл в нужном месте, нужно отредактировать файл:
/etc/grub.d/40-custom
Данный файл позволяет добавлять собственные пункты в меню GRUB2. Файл по умолчанию. уже содержит несколько строк
Что бы запустить наш образ, добавьте следующий код ниже закомментированной секции, без изменений оригинальной части файла
menuentry "Kubuntu 15.04 ISO" { set isofile="/home/maketecheasier/TempISOs/kubuntu-15.04-desktop-amd64.iso" loopback loop (hd0,1)$isofile echo "Starting $isofile..." linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash initrd (loop)/casper/initrd.lz }
Разберемся в коде
Посмотрим переменную
$menuentry
.
Необходимо задать путь к файлу с образом:
isofile="/path/to/file/name-of-iso-file-.iso"
.
В следующей строке вы должны указать loopback устройство, как правило просто задать верный номер раздела:
loopback loop (hd0,1)$isofile
Здесь hd0,1 означает первый HDD, первый раздел (/dev/sda1)
Дело в том, что наименования GRUB немного запутано. Перечисление дисков начинается с 0 (0,1,2.. итд), а разделы именуются начиная с 1 (1, 2, 3..итд).
По этому первый раздел первого диска, который обычно в системе выглядит как /dev/sda1, становится hd0,1 в GRUB2. Например второй диск и 3 раздел, для GRUB будут выглядеть как hd1,3.
Следующая важная строка:
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash
Ответственная за загрузку образа ядра. В новых сборках Ubuntu Live CD, он находится в директории
/casper
и называется vmlinuz.efi
.
Если вы используете другую систему, .efi может иметь другое имя и располагаться в другом месте (вы можете проверить, заранее открыв образ с помощью менеджере архивов и заглянув в папку /casper)
Последняя опция
quiet splash
Стандартна для GRUB, если хотите, можете изменять ее или не использовать вовсе
И наконец
initrd (loop)/casper/initrd.lz
Загружает initrd, который отвечает за загрузку RAMDisk'а в память при старте системы
Загрузка в Live-систему
Что бы все работало, осталось только обновить информацию GRUB, используя команду:
sudo update-grub
После перезагрузкивы увидите новый пункт в меню GRUB, который позволит вам загрузиться в указанный ISO
Выбор этого пункта загрузит вам Live-систему так же, как если бы вы загружались с DVD или USB-диска.
Вот и все, удобства вам =)
Чтобы всё было идеально, пишите "чтобы" вместо "что бы" :)
ОтветитьУдалитьЧтобы всё было идеально, пишите "чтобы" вместо "что бы" :)
ОтветитьУдалитьстремно как то пробовать)) но замануха интересная
ОтветитьУдалитьа у меня такого файла нет, kubuntu 15.04
ОтветитьУдалитьОпечатка просто
Удалить/etc/grub.d/40_custom
тут файл.. слеш пропустил )
У меня не заходит в gnu grub
ОтветитьУдалитьединое нажатие на левый Shift при загрузке вызывает GRUB
Удалитьправда "угадать" этот момет достаточно сложно..а многократное нажатие он не воспринимает %)
Вообще можно поковырятся в настройках GRUB2 и заставить его выводить меню постоянно
http://forum.ubuntu.ru/index.php?topic=74165.0
поменяв "GRUB_HIDDEN_TIMEOUT_QUIET"
При загрузке gos-3.1-gadgets.iso после загрузки ядра вываливается в шелл ash с приглашением (initramfs)> и загрузка останавливается, хотя initrd (loop)/casper/initrd.gz прописан верно!
ОтветитьУдалить