Как запустить 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
Выбор этого пункта загрузит вам Live-систему так же, как если бы вы загружались с DVD или USB-диска.


Вот и все, удобства вам =)

Комментарии

  1. Чтобы всё было идеально, пишите "чтобы" вместо "что бы" :)

    ОтветитьУдалить
  2. Чтобы всё было идеально, пишите "чтобы" вместо "что бы" :)

    ОтветитьУдалить
  3. стремно как то пробовать)) но замануха интересная

    ОтветитьУдалить
  4. а у меня такого файла нет, kubuntu 15.04

    ОтветитьУдалить
    Ответы
    1. Опечатка просто
      /etc/grub.d/40_custom
      тут файл.. слеш пропустил )

      Удалить
  5. Ответы
    1. единое нажатие на левый Shift при загрузке вызывает GRUB
      правда "угадать" этот момет достаточно сложно..а многократное нажатие он не воспринимает %)

      Вообще можно поковырятся в настройках GRUB2 и заставить его выводить меню постоянно
      http://forum.ubuntu.ru/index.php?topic=74165.0
      поменяв "GRUB_HIDDEN_TIMEOUT_QUIET"

      Удалить
  6. При загрузке gos-3.1-gadgets.iso после загрузки ядра вываливается в шелл ash с приглашением (initramfs)> и загрузка останавливается, хотя initrd (loop)/casper/initrd.gz прописан верно!

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Ubuntu без Unity. Как все начиналось, и что имеем сейчас

Pidgin IM, подключение аккаунтов Telegram и Вконтакте

HP2727 сканирование в сеть