Как загрузить файл 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.