Способы загрузки ISO-образов через загрузчик GRUB2

В данном уроке мы рассмотрим процесс загрузки ISO-файлов, которые находятся на вашем жестком диске, с использованием загрузчика GRUB2. Обычно для загрузки образов Linux ISO требуется создание живого DVD или USB-накопителя. Это можно выполнить как с помощью графических приложений, так и через командную строку. Однако что делать, если у вас нет оптического диска или флешки, либо ваш компьютер не поддерживает запись ISO-образов на диск?

Загрузка ISO-образов через загрузчик GRUB2.

GRUB приходит на выручку

GRUB2 (GRand Unified Bootloader) представляет собой основной загрузчик для операционных систем на базе Linux. Он обладает возможностью загружать ISO-образ Linux, который хранится на жестком диске, без необходимости использования USB-накопителей или DVD-дисков. В отличие от него, GRUB Legacy (версия 0.x) не поддерживает данную функцию. Существует множество дистрибутивов Linux, которые можно загрузить непосредственно из ISO-файла.

  • GRUB2 совместим с различными файловыми системами, такими как ext4, HFS+ и NTFS, что позволяет вам размещать ваш ISO-файл на любой из этих систем.
  • GRUB2 способен непосредственно считывать файлы с устройств LVM и RAID.
  • GRUB2 поддерживает сетевые функции. Вы можете загружать ISO-образы через сеть, применяя протокол TFTP.

Для загрузки ISO-файлов с помощью GRUB2 требуется дистрибутив Linux, на котором установлен этот загрузчик. Указанные далее шаги подходят как для классического BIOS, так и для UEFI. Важно отметить, что при использовании UEFI необходимо отключить функцию secure boot в настройках прошивки, иначе может возникнуть ошибка “can not find command loopback”.

Приступим!

Загрузка ISO-образов Ubuntu через GRUB2

Загрузите ISO-образ Ubuntu на свой компьютер с Linux, затем запустите терминал и измените файл /etc/grub. d/40_custom, используя текстовый редактор командной строки, такой как Nano.

sudo nano /etc/grub. d/40_custom

Первая строка данного файла — #! /bin/sh, что сигнализирует о том, что он является скриптом оболочки. В этом файле есть возможность добавлять пользовательские записи в меню загрузки GRUB.

grub 40_custom

Сделайте копию этого текста и вставьте его в нижнюю часть данного документа.

menuentry "ubuntu-20.04.2.0-desktop-amd64.iso" < insmod ext2 set isofile color: #ff0000;">/home/linuxbabe/Downloads/ubuntu-20.04.2.0-desktop-amd64.iso"петля обратного вызова"hd0,5)$isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash initrd (loop)/casper/initrd >

Загрузка ISO-образов через загрузчик GRUB2 с использованием btrfs.

  • menuentry: Данная запись будет показана в меню загрузки GRUB2. Вы можете выбрать для нее любое название.
  • Команда insmod загружает модуль. Поскольку файл ISO находится в моем домашнем каталоге на файловой системе ext4, необходимо использовать модуль ext2. Если же файл находится на разделе NTFS, следует использовать insmod ntfs. Имейте в виду, что GRUB может не поддерживать файловые системы XFS и Btrfs, поэтому не рекомендуется размещать файл ISO на разделах с этими файловыми системами.
  • Установите переменную isofile: укажите путь к вашему ISO-образу. В данном случае я использую ISO-образ Ubuntu 20.04 Desktop, который хранится в папке «Загрузки».
  • loopback: Подключите файл ISO. hd0 указывает на первый жесткий диск в системе, а 5 означает, что ISO-файл расположен на пятом разделе этого диска.
  • Команда Linux инициирует загрузку ядра Linux из определенного местоположения. casper/vmlinuz. efi представляет собой ядро Linux, содержащееся в ISO-образе Ubuntu.
  • Команда initrd отвечает за загрузку начального ramdisk из заданного пути. Ее использование возможно лишь после выполнения команды linux. Начальный ramdisk представляет собой упрощённую корневую файловую систему, размещённую в оперативной памяти. В образе ISO Ubuntu файл initrd находится по пути casper/initrd. lz.

Имейте в виду, что GRUB не делает различий между IDE и SCSI. В ядре Linux:

  • /dev/hda обозначает первый жесткий диск, подключенный через интерфейс IDE.
  • /dev/sda соответствует первому жесткому диску SCSI или SATA.
  • /dev/nvme0n1 представляет собой первый NVMe SSD, тогда как /dev/nvme1n1 соответствует второму NVMe SSD.

В GRUB первый жесткий диск обозначается как hd0, независимо от используемого интерфейса. Кроме того, стоит отметить, что в GRUB номера разделов начинаются с 1, а не с 0.

Читайте также:  Как контролировать температуру процессора в Linux и что с этим нужно знать

Если файл ISO расположен на расширенном разделе диска MBR, то номер этого раздела будет начинаться с 5, а не с 1. К примеру, первый логический раздел в рамках расширенного раздела получит номер 5, а второй – номер 6. Чтобы узнать номер вашего раздела, можно воспользоваться командами lsblk или sudo parted — l в терминале.

Сохраните изменения и закройте файл. (Для сохранения файла в текстовом редакторе Nano нажмите Ctrl+O, затем подтвердите нажатием Enter. Чтобы выйти, используйте Ctrl+X.)

После этого обновите меню загрузки GRUB, выполнив следующую команду:

sudo grub-mkconfig - o /boot/grub/grub.cfg

Для Fedora, CentOS, RHEL и OpenSUSE используется следующая команда:

sudo grub2-mkconfig - o /boot/grub2/grub.cfg

В системах Debian, Ubuntu и Linux Mint вы можете применить следующую команду для обновления меню загрузчика GRUB.

sudo update-grub

Вы можете не заметить новую запись в меню сразу, однако она станет доступна после перезагрузки компьютера.

sudo shutdown - r now

Внизу меню загрузки GRUB2 вы сможете найти вашу пользовательскую запись. Если GRUB не удается загрузить ваш ISO файл, пожалуйста, проверьте файл /etc/grub. d/40_custom на наличие ошибок или пропусков.

загрузить файл ISO Ubuntu через Grub

В файле /etc/grub. d/40_custom возможно добавить любое количество пунктов меню по вашему усмотрению.

ISO-образ Debian

Загрузите ISO-образ живого CD Debian. После этого запустите терминал и внесите изменения в файл /etc/grub. d/40_custom, используя текстовый редактор, например, Nano.

sudo nano /etc/grub. d/40_custom

В данном файле можно внести изменения в меню загрузки GRUB, добавив пользовательские записи. В нашем случае необходимо создать запись для загрузки ISO-образа Debian.

menuentry "debian-live-10.8.0-amd64-lxqt. iso" < insmod ext2 set isofile color: #ff0000;">/home/linuxbabe/Downloads/debian-live-10.8.0-amd64-lxqt. iso"петля обратного вызова"hd0,5$isoфайл linux (loop)/live/vmlinuz-4.19.0-14-amd64 загрузка=live поискiso=$isofile initrd (loop)/live/initrd. img4.19.0-14-amd64 >

Имейте в виду, что файлы vmlinuz и initrd. img содержат номер версии. Рекомендуется смонтировать ISO-образ Debian и выяснить, требуется ли обновление версии. После этого сохраните изменения и закройте файл, затем обновите меню загрузки GRUB.

sudo grub-mkconfig - o /boot/grub/grub.cfg

sudo grub2-mkconfig - o /boot/grub2/grub.cfg

Образ ISO для Arch Linux

Загрузите ISO-образ Arch Linux. После этого запустите терминал и внесите изменения в файл /etc/grub. d/40_custom, используя текстовый редактор, например, Nano.

sudo nano /etc/grub. d/40_custom

В данном документе мы можем внести индивидуальные записи в меню загрузки GRUB. В этом конкретном случае мы собираемся добавить запись для загрузки ISO-образа Arch Linux.

menuentry "archlinux-2021.03.01-x86_64.iso" < insmod ext2 set isofile color: #ff0000;">/home/linuxbabe/Downloads/archlinux-2021.03.01-x86_64.iso"петля обратного вызова"hd0,5) $isofile linux (loop)/arch/boot/x86_64/vmlinuz-linux archisolabel=ARCH_202103 img_dev=/dev/sda5 img_loop=$isofile earlymodules=loop initrd (loop)/arch/boot/x86_64/initramfs-linux. img >

Имейте в виду, что при загрузке более свежей версии ISO-образа Arch Linux, например archlinux-2021.04.01-x86_64.iso, необходимо обновить archisolabel на ARCH_202104. Чтобы узнать, какое название метки должно быть, смонтируйте ISO-образ Arch Linux в файловом менеджере. Метка будет отображаться в этом менеджере.

Загрузка ISO-образа Arch Linux с помощью GRUB.

Возможно, вам потребуется изменить значение img_dev, которое указывает на устройство, где расположен ваш ISO-файл.

Сохраните изменения и закройте файл. После этого обновите меню загрузки GRUB.

sudo grub-mkconfig - o /boot/grub/grub.cfg

sudo grub2-mkconfig - o /boot/grub2/grub.cfg

Образ ISO Clonezilla Live

Clonezilla — это бесплатный и открытый инструмент, предназначенный для надежного резервного копирования и восстановления данных с дисков. Для начала загрузите ISO-образ Clonezilla live. После этого откройте терминал и внесите изменения в файл /etc/grub. d/40_custom с помощью текстового редактора, например, Nano.

sudo nano /etc/grub. d/40_custom

В этом документе есть возможность включить индивидуальные записи в меню загрузки GRUB. В данном случае мы планируем добавить запись для загрузки ISO-образа Clonezilla Live.

menuentry "clonezilla-live-20210127-groovy-amd64.iso" < insmod ext2 set isofile color: #ff0000;">/home/linuxbabe/Downloads/clonezilla-live-20210127-groovy-amd64.iso"петля обратного вызова"hd0,5)$isofile linux (loop)/live/vmlinuz boot=live findiso=$isofile initrd (loop)/live/initrd. img >

Сохраните изменения и закройте файл. После этого обновите меню загрузки GRUB.

sudo grub-mkconfig - o /boot/grub/grub.cfg

sudo grub2-mkconfig - o /boot/grub2/grub.cfg

ISO-образ RHEL 8/CentOS Stream

Сначала загрузите ISO-образ. Для RHEL 8 ознакомьтесь со следующей статьей, чтобы понять, как получить ISO-образ.

  • Как бесплатно загрузить и установить RHEL8 (Red Hat Enterprise Linux)

ISO-образ CentOS Stream доступен для загрузки на официальном сайте.

После этого запустите терминал и внесите изменения в файл /etc/grub. d/40_custom, используя текстовый редактор, например, Nano.

Читайте также:  Как установить Kodi на Ubuntu и настроить для комфортного просмотра медиа

sudo nano /etc/grub. d/40_custom

В этом документе есть возможность внести пользовательские записи в меню загрузки GRUB. В данном случае мы собираемся добавить запись для загрузки ISO-образа RHEL 8/CentOS/Fedora.

menuentry "rhel-8.3-x86_64-boot. iso" < insmod ext2 set isofile color: #ff0000;">/home/linuxbabe/Downloads/rhel-8.3-x86_64-boot. iso"петля обратного вызова"hd0,5) $isofile linux (loop)/isolinux/vmlinuz noeject inst. stage2=hd:/dev/sda5:$isofile initrd (loop)/isolinux/initrd. img >

В указанном коде /dev/sda5 обозначает пятый раздел первого жесткого диска, на котором располагается ISO-образ. После этого сохраните изменения и закройте файл. Затем выполните обновление меню загрузки GRUB.

sudo grub-mkconfig - o /boot/grub/grub.cfg

sudo grub2-mkconfig - o /boot/grub2/grub.cfg

Образ ISO для Fedora

ISO-образ Fedora доступен для загрузки на официальном сайте проекта. После этого запустите терминал и внесите изменения в файл /etc/grub. d/40_custom, используя текстовый редактор, например, Nano.

sudo nano /etc/grub. d/40_custom

В этом документе имеется возможность вставить пользовательские записи в меню загрузки GRUB. В данном случае нам необходимо добавить запись для загрузки ISO-образа Fedora.

menuentry "Fedora-Workstation-Live-x86_64-33-1.2.iso" < insmod ext2 set isofile color: #ff0000;">/home/linuxbabe/Downloads/Fedora-Workstation-Live-x86_64-33-1.2.iso"петля обратного вызова"hd0,5) $isofile linux (loop)/isolinux/vmlinuz root=liveFedora-WS-Live-33-1-2 rd. live. image verbose iso-scan/filename=$isofile initrd (loop)/isolinux/initrd. img >

В указанном коде CDLABEL представляет собой название, которое отображается в файловом менеджере при монтировании ISO-образа.

Метка CD-образа ISO Fedora

Сохраните изменения и закройте файл. После этого обновите меню загрузки GRUB.

sudo grub-mkconfig - o /boot/grub/grub.cfg

sudo grub2-mkconfig - o /boot/grub2/grub.cfg

Live ISO OpenSUSE Leap

Загрузите образ ISO OpenSUSE Leap live. Затем запустите терминал и измените файл /etc/grub. d/40_custom, используя текстовый редактор, такой как Nano.

sudo nano /etc/grub. d/40_custom

В этом документе есть возможность добавления пользовательских пунктов в меню загрузчика GRUB. В частности, мы собираемся создать запись для загрузки ISO-образа OpenSUSE Leap Live.

menuentry "openSUSE-Leap-15.2-KDE-Live-x86_64-Build31.383-Media. iso" < insmod ext2 set isofile color: #ff0000;">/home/linuxbabe/Downloads/openSUSE-Leap-15.2-KDE-Live-x86_64-Build31.383-Media. isoЦиклический возврат (hd)0,5) $isofile linux (loop)/boot/x86_64/loader/linux boot=isolinux root=liveopenSUSE_Leap_15.2_KDE_Live rd. live. image verbose iso-scan/filename=$isofile initrd (loop)/boot/x86_64/loader/initrd >

В указанном коде CDLABEL представляет собой название, которое отображается в файловом менеджере при монтировании образа ISO.

ярлык live CD openSUSE Leap

Сохраните изменения и закройте файл. После этого обновите меню загрузки GRUB.

sudo grub-mkconfig - o /boot/grub/grub.cfg

sudo grub2-mkconfig - o /boot/grub2/grub.cfg

Образ Kali Linux в формате Live ISO

Сначала загрузите образ ISO Kali Linux в режиме live. Затем запустите терминал и внесите изменения в файл /etc/grub. d/40_custom с помощью текстового редактора, такого как Nano.

sudo nano /etc/grub. d/40_custom

В этом документе мы можем внести индивидуальные записи в меню загрузки GRUB. В данном примере мы намерены добавить запись для загрузки образа Kali Linux Live ISO.

menuentry "kali-linux-2021.1-live-amd64.iso" < insmod ext2 set isofile color: #ff0000;">/home/linuxbabe/Downloads/kali-linux-2021.1-live-amd64.isoЦиклический возврат (hd)0,5)$isofile linux (loop)/live/vmlinuz boot=live findiso=$isofile initrd (loop)/live/initrd. img >

Сохраните изменения и закройте файл. После этого обновите меню загрузки GRUB.

sudo grub-mkconfig - o /boot/grub/grub.cfg

sudo grub2-mkconfig - o /boot/grub2/grub.cfg

Образ ISO для живой системы Linux Mint

Скачайте ISO-образ Linux Mint. После этого запустите терминал и внесите изменения в файл /etc/grub. d/40_custom, используя текстовый редактор, например, Nano.

sudo nano /etc/grub. d/40_custom

В этом документе можно внести пользовательские записи в меню загрузки GRUB. В данном примере мы намерены добавить запись для загрузки образа ISO Linux Mint.

menuentry "linuxmint-20.1-cinnamon-64bit. iso" < insmod ext2 set isofile color: #ff0000;">/home/linuxbabe/Downloads/linuxmint-20.1-cinnamon-64bit. isoЦиклический возврат (hd)0,5)$isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash initrd (loop)/casper/initrd. lz >

Сохраните изменения и закройте файл. После этого обновите меню загрузки GRUB.

sudo grub-mkconfig - o /boot/grub/grub.cfg

sudo grub2-mkconfig - o /boot/grub2/grub.cfg

Определение названия файла ядра Linux и initrd.

Ядро Linux и файл initrd (начальный ramdisk) могут отличаться в различных образах Linux ISO. Для Ubuntu ядро расположено по пути /casper/vmlinuz, а файл initrd находится по адресу /casper/initrd. Если вам не известно, где их найти, вы можете открыть ISO-образ с помощью архиватора. На следующем изображении представлен файл образа ISO Arch Linux.

Файл начального RAM-диска Grub

Отобразить меню загрузки GRUB.

Некоторые дистрибутивы Linux, например, Ubuntu, не показывают меню загрузки GRUB, если на жестком диске установлена только одна операционная система. Чтобы вывести это меню, необходимо изменить файл конфигурации.

sudo nano /etc/default/grub

Определите следующую строку, которая указывает GRUB на скрытие загрузочного меню.

GRUB_TIMEOUT_STYLE=hidden

Вставьте знак # в начале, чтобы сделать эту строку комментарием.

Читайте также:  Полное руководство по восстановлению диска в Linux с помощью утилиты FSCK и восстановлению потерянных файлов

#GRUB_TIMEOUT_STYLE=hidden

После этого найдите следующую строку.

GRUB_TIMEOUT=0

Поставьте значение 10 вместо 0, чтобы получить 10 секунд для выбора пункта в меню загрузки GRUB.

GRUB_TIMEOUT=10

Сохраните изменения в файле и закройте его. После этого обновите настройки GRUB.

sudo update-grub

Изменение последовательности загрузки в GRUB

Если вы хотите, чтобы ISO-файл загружался в GRUB по умолчанию, вам следует внести изменения в файл конфигурации.

sudo nano /etc/default/grub

Найдите следующую строку, которая обеспечивает выбор первого элемента в меню загрузки GRUB.

GRUB_DEFAULT=0

Пожалуйста, предоставьте текст, который вы хотите перефразировать.

GRUB_DEFAULT="clonezilla-live-20210127-groovy-amd64.iso"

Если в файле /etc/grub. d/40_custom присутствует пункт menuentry «clonezilla-live-20210127-groovy-amd64.iso», то GRUB автоматически будет выбирать этот пункт. Не забудьте обновить GRUB, чтобы изменения начали действовать.

sudo update-grub

Вы можете оставить порядок загрузки стандартным, однако загрузить ISO-файл лишь для следующей загрузки, воспользовавшись:

sudo grub-reboot clonezilla-live-20210127-groovy-amd64.iso

sudo grub2-reboot clonezilla-live-20210127-groovy-amd64.iso

sudo shutdown - r now

Дополнительные рекомендации

При наличии SATA-диска и NVMe SSD в вашем компьютере, SATA-диск будет определён как первичный, а NVMe SSD — вторичный. Аналогичная ситуация возникает и с USB-накопителем по сравнению с NVMe SSD. Если в системе есть оптический диск, GRUB может распознать его как первый диск.

Если при попытке GRUB загрузить ISO-образ возникает указанная ошибка, вероятнее всего, вы ошибочно указали путь к ISO-файлу для оптического привода.

can not get C/H/S value

Если ваша файловая система охватывает весь диск, указывать номер раздела в GRUB не потребуется. К примеру, у меня есть ISO-образ на втором диске. Так как я не создавал разделы на этом диске, в конфигурационном файле GRUB я могу просто указать (hd1).

loopback loop (hd1)$isofile

Если при обновлении меню загрузки GRUB появляется сообщение об ошибке, вы можете не обращать на него внимания.

grub-probe: error: cannot find a GRUB drive for /dev/loop11p3. Check your device. map.

Образ Windows 10 в формате ISO

Да, вы можете создать загрузочный USB с Windows 10 на Ubuntu или другом Linux-дистрибутиве. Если у вас нет USB-накопителя, вы можете использовать GRUB2 для загрузки ISO образа Windows 10 с жесткого диска. Сначала скачайте ISO файл Windows 10. Учтите, что на компьютерах с Windows эта ссылка для скачивания может быть недоступна, она предназначена для пользователей Linux.

GRUB2 не способен загрузить ISO образ Windows 10 напрямую. Для этого потребуется создать отдельный раздел с файловой системой NTFS, используя утилиту для работы с разделами, например GParted, и распаковать ISO образ Windows 10 в этот раздел. Так как размер последней версии ISO файла Windows 10 составляет 5.8 ГБ, новый NTFS раздел должен иметь объем не менее 7 ГБ и быть выделен исключительно для этой задачи, без хранения других данных.

Загрузка Windows 10 ISO с помощью GRUB в BIOS.

Найдите файл с образом Windows 10 в проводнике и откройте его, используя встроенную программу для монтирования дисков.

Установите образ ISO Windows 10 в Ubuntu.

Откройте смонтированную файловую систему, выделите все каталоги и файлы, а затем скопируйте их на раздел, отформатированный в NTFS.

Загрузка ISO-образа Windows 10 через GRUB2.

Иногда файловый менеджер в Ubuntu может зависнуть, создавая впечатление, что копирование прервалось. Однако процесс продолжается. Просто нужно немного подождать. Когда появится отметка в виде галочки, это будет означать, что копирование успешно завершено.

Создание загрузочной флешки с Windows 10 в Linux

Откройте терминал и используйте текстовый редактор, например, Nano, для редактирования файла /etc/grub. d/40_custom.

sudo nano /etc/grub. d/40_custom

В этом файле можно добавить собственные записи в меню загрузчика GRUB. В данном примере требуется добавить запись для запуска установщика Windows 10. Если ваш компьютер продолжает использовать традиционную прошивку BIOS, вставьте следующий текст в этот файл.

menuentry "Windows-10-Installer. iso" < set root=(hd0,6) insmod part_msdos insmod ntfs insmod ntldr #раскомментируйте следующую строку, если у вашего компьютера несколько жестких дисков. #drivemap - s (hd0) $ ntldr /bootmgr >

Мой NTFS-раздел имеет номер 6, поэтому в качестве корневого я указываю (hd0,6). Чтобы узнать номер вашего NTFS-раздела, можно воспользоваться командой sudo parted — l. Если на вашем компьютере установлено несколько жестких дисков, воспользуйтесь командой drivemap для того, чтобы сделать раздел (hd0,6) первым жестким диском, обеспечивая загрузку Windows.

Если на вашем компьютере установлена прошивка UEFI, вставьте следующий текст в данный файл.

menuentry "Windows-10-Installer. iso" < set root=(hd0,6) insmod part_gpt insmod ntfs insmod chain chainloader /efi/boot/bootx64.efi >

Сохраните изменения и закройте файл. После этого обновите меню загрузки GRUB.

sudo grub-mkconfig - o /boot/grub/grub.cfg

sudo grub2-mkconfig - o /boot/grub2/grub.cfg

Отключите все внешние USB-устройства, а затем перезапустите компьютер. Учтите, что ISO-образ установщика Windows для настольных систем может некорректно функционировать на виртуальных машинах Proxmox KVM.

Завершение

Надеюсь, что этот справочник оказался для вас полезным в процессе загрузки ISO-образов с помощью загрузчика GRUB2. Как всегда, если вам понравился этот материал, подписывайтесь на нашу бесплатную рассылку, чтобы не пропустить новые советы и рекомендации.