Как загрузить файл ISO с моего диска, используя grub2 на машинах с UEFI?

У меня есть куча живых ISO-файлов, таких как GParted, CloneZilla, Boot-Repair, Ubuntu 14.04 32 bit,... загруженных в /opt и на моей старой машине с BIOS я всегда мог добавлять их в меню grub и загружать их. :-)

Теперь у меня есть UEFI-машина, и вся информация, которую я могу найти, относится к компьютерам с BIOS.

Каковы шаги для загрузки этих файлов ISO из Grub?

Мне просто надоело постоянно "записывать" их на флешку, потому что я никогда не смогу найти флешку, в которой я нуждаюсь, тогда как сам мой компьютер гораздо сложнее потерять в общем хаосе вокруг меня...) :-(

6 ответов

Решение

Что ж, основы для добавления ISO-файла в grub для UEFI те же, что и для компьютера с BIOS: edit /etc/grub.d/40_custom и добавить menuentry item (в этом примере используется GParted) в конец файла:

menuentry "GParted Live ISO" {
}

Теперь мы собираемся добавить переменную, содержащую каталог, в котором мы сохранили ISO (пока все хорошо: никаких различий с машинами BIOS):

menuentry "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
}

я использую /opt хранить их, так как я не люблю создавать каталоги в корне моей машины и в соответствии с иерархией файловой системы Linux, где в любом случае должно находиться дополнительное программное обеспечение.

Прежде чем мы добавим loopback переменная, нам нужно выяснить, на каком жестком диске хранится файл, поэтому мы делаем: df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1 и вывод на моей машине: /dev/sdb2,

Однако grub использует нотацию (hdX,Y), и именно здесь возникает разница между машинами с UEFI и BIOS! Итак, перезагрузите компьютер, перейдите в меню grub и нажмите C: это приведет вас к командной строке grub с другими командами, к которым вы не привыкли, но единственная, которая нам нужна, вы уже знаете: ls,

На моей машине вывод:

(hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2) ... (hd3) ...

А? 4 диска? У меня только 3! И это не (hd1,4) линия на BIOS, но (hd1,gpt3) в UEFI и (hd0) не имеет разделов вообще!

Ну, очевидно, когда часть NVRAM используется в качестве хранилища и отображается как (hd0) вам нужно начать нумерацию дисков с 1! В то время как вся информация, которую вы найдете при загрузке файлов ISO, говорит о том, что вы должны начинать нумерацию с 0 (на компьютерах с BIOS это всегда так, но на некоторых машинах с UEFI это не всегда так!)

Таким образом, значение для loopback становится (hd2,gpt2)$GPartedISOFile как файл ISO на моей машине был /dev/sdb2 (второй диск hd2, второй раздел gpt2):

menuentry "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
  loopback loop (hd2,gpt2)$GPartedISOFile
}

Другое отличие состоит в том, что linux а также initrd на биосе машины называются linuxefi а также linuxefi на машинах UEFI, что дает нам наш конечный результат:

#!/bin/sh
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 "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
  loopback loop (hd2,gpt2)$GPartedISOFile
  linuxefi (loop)/live/vmlinuz boot=live components config findiso=$GPartedISOFile ip=frommedia toram=filesystem.squashfs union=overlay username=user
  initrdefi (loop)/live/initrd.img
}

Теперь сохраните этот файл и обновите grub:

update-grub

После всего вышеперечисленного перезагрузитесь, зайдите в меню grub, выберите GParted Live ISO и теперь вы можете легко загрузить свой ISO без необходимости искать флешку!

:-)

Альтернатива - просто добавить файл конфигурации в 40_custom следующим образом:

menuentry 'Live ISOs on SSD' {
configfile (hd0,3)/ISO/livecdimage.cfg
} 

menuentry 'Live ISOs on HDD (boot on SSD)' {
configfile (hd1,3)/ISO/livecdimage.cfg
} 

Я делаю это так, как при обновлении ISO, я всегда забываю запустить sudo update-grub, Приведенные выше записи никогда не нужно менять, и я могу просто отредактировать livecdimage.cfg, который имеет тот же формат, что и любой 40_custom, но без строк заголовка, и находится в моей папке /ISO в моем разделе ISO.

Я добавляю toram как еще один параметр загрузки и в системе с Nvidia добавляем параметр загрузки nomodeset. Но все равно часто приходится размонтировать / isodevice.

Невозможно размонтировать isodevice, размонтировать ISO. https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1155216

sudo umount -l -r -f /isodevice

И это часть моего файла livecdimage.cfg

# livecdimage.cfg
# Add this to 40_custom to load this file:
# menuentry 'Live ISOs' {
# configfile (hd1,3)/iso/livecdimage.cfg
#} 
# Add iso names to livecdimage.cfg
#for i in `ls *.iso`;do echo "# "$i>>livecdimage.cfg; done;

menuentry "Ubuntu 16.04.4 xenial amd64" {
    set isofile="/ISO/ubuntu-16.04.4-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile 
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

menuentry "Ubuntu 18.04 Bionic amd64" {
    set isofile="/ISO/bionic-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile 
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

# spacer line
menuentry " " {
set root= 
}

menuentry "Reboot" {
    reboot
}

menuentry "Halt" {
    halt
}

MKUSB MULTIBOOT HACK

Mkusb является отличной базой для проектов пользовательских загрузочных дисков благодаря своим возможностям как с BIOS, так и с UEFI.

Этот хак загружает несколько файлов ISO, включая установщик Windows, и имеет меню grub2.

Пункты меню Grub2 для большинства ОС доступны с помощью поиска Google и выходят за рамки этого ответа.

Используйте значения по умолчанию для mkusb при создании постоянного USB-накопителя.

Используйте mkusb persistence по умолчанию, если сомневаетесь, размер раздела можно изменить позже, но это займет время.

Консоль DUS после установки.

GParted перед изменением раздела.

Gparted после модификации - перезаписать sdb4, раздел ОС ISO9660 и sdb5, раздел ext2 casper-rw, разделом FAT32 для файлов персистентности.

Раздел постоянства - создайте папку с уникальным именем для каждой ОС (для этого требуется постоянство)

Папка постоянства - добавьте файл casper-rw и необязательный файл home-rw в каждую папку постоянства. Файл home-rw можно создать, переименовав файл casper-rw. Файл home-rw похож на отдельный домашний раздел при полной установке, его можно использовать повторно после обновления версии.

Создайте папку для файлов ISO в разделе USB-данных NTFS.

Добавьте несколько ISO в папку ISO.

местоположение grub.cfg

Отредактируйте grub.cfg, чтобы подключить файлы ISO. Включают: persistent persistent-path=/<persistent-folder-name>/ если ты хочешь упорства

sudo разделил -ls /dev/sdb

sudo lsblk -f /dev/sdb

Если требуется установщик Windows, возможно, проще всего начать с функции mkusb "Извлечение установщика Windows" (мне пришлось извлечь Windows ISO в TAR вручную),

После установки создайте папку для ISO и, если необходимо, папки для сохранения (аналогично процедуре выше).

Отредактируйте /boot/grub/grub.cfg, чтобы выполнить циклическое подключение любых ISO и указать любые постоянные папки.

(не нашли способ зацикливать файл Windows ISO).

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

Три простых шага

добавить ISO в меню grub и загрузиться с него.

Сначала установите grml-rescueboot

Откройте терминал и введите:

sudo apt install grml-rescueboot

Во-вторых, переместите ISO-файлы в /boot/grml/

В этом же терминале введите:

sudo mv ~/Downloads/<filename.iso> /boot/grml/

В-третьих, обновить Grub

В этом же терминале введите:

sudo update-grub

Повторите второй и третий этапы по мере необходимости

Не забудьте удалить устаревшие файлы ISO из /boot/grml,

Справка: Справка Ubuntu по загрузке Grub2 ISO

Надеюсь это поможет

ПРОСТО mkusb ISO мультибутер

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

Используйте mkusb для создания постоянного USB-накопителя с использованием операционной системы по умолчанию, https://help.ubuntu.com/community/mkusb

Создайте папку в разделе usbdata sdx1 с именем ISO.

Добавьте ISO для загрузки в эту папку.

Добавьте пункты меню в /sdx3/boot/grub/grub.cfg для циклического подключения ISO.

Образцы:

menuentry "Ubuntu-18.04 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/ubuntu-18.04-desktop-amd64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile splash --
        initrd (loop)/casper/initrd.lz
}

menuentry "GParted 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/gparted-live-0.31.0-1-amd64.iso"
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components noswap noeject toram=filesystem.squashfs ip='' nosplash findiso=$isofile splash --
    initrd (loop)/live/initrd.img
}

menuentry "Clonezilla 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/clonezilla-live-2.5.5-38-amd64.iso"
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live live-config nolocales edd=on nomodeset ocs_live_run=\"ocs-live-general\" ocs_live_extra_param=\"\"   ocs_live_keymap=\"\" ocs_live_batch=\"no\" ocs_lang=\"\" vga=788   ip=frommedia nosplash toram=filesystem.squashfs findiso=$isofile splash --
    initrd (loop)/live/initrd.img
}

MultiBootUSB - QEMU

Если вы хотите загружать ISO-файлы с наименьшими хлопотами и не нуждаетесь в постоянстве, MultiBootUSB включает опцию QEMU:

  • Запустите MultiBootUSB и выберите вкладку Boot ISO/USB.

  • Перетащите ISO в область выбора изображения.

  • Выберите размер оперативной памяти и нажмите кнопку Boot ISO.

Вам не нужно редактировать grub.cfg или даже выходить из системы.

Это может быть именно то решение, которое вам нужно.

https://www.ventoy.net/en/index.html

Этот загрузочный USB-производитель создает два раздела на USB-накопителе. Один из них - это раздел 32 МБ FAT 32 EFI. Другой - раздел exfat, который по размеру равен остальной части USB-накопителя. Вы можете скопировать любое количество ISO, включая Windows, в корневую папку или любую подпапку. Вы также можете использовать этот раздел для обычного хранения.

Выберите этот USB-накопитель в меню загрузки, и он покажет все поддерживаемые ISO в виде списка для выбора. По моему опыту, это сработало для Ubuntu, Kubuntu, Mint, Clonezilla и Windows.

Другие вопросы по тегам