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

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

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

Что шаги должны загрузить эти файлы ISO от личинки?

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

12
задан 1 March 2019 в 13:05

7 ответов

Ну, основы для добавления файла ISO для расчистки являются тем же для UEFI что касается машины BIOS:править /etc/grub.d/40_custom и добавьте a menuentry объект (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 переменная, мы должны узнать, на котором жестком диске хранится файл, таким образом, мы делаем a: df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1 и вывод на моей машине: /dev/sdb2.

Однако использование личинки (hdX, Y) нотация и это - то, где различие между UEFI и машинами BIOS входит! Поэтому теперь перезагрузите свою машину, войдите в меню личинки и нажмите C: Это принесет Вам к командной строке личинки с различными командами, чем Вы привыкли к, но единственный, что нам нужны Вы уже, знает: 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 на BIOS называют машины 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
}

Поэтому теперь сохраните тот файл и обновите личинку с:

update-grub

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

:-)

CloneZilla Живой пример (для этого вопроса)

menuentry "CloneZilla ISO (Works)" {
  set ISOFile="/opt/Live-ISOs/clonezilla-live-20170905-zesty-amd64.iso"
  loopback loop (hd2,gpt2)$ISOFile
  linuxefi (loop)/live/vmlinuz boot=live components config findiso=$ISOFile ip=frommedia toram=filesystem.squashfs union=overlay
  initrdefi (loop)/live/initrd.img
}
14
ответ дан 23 November 2019 в 03:30

Альтернатива должна просто добавить configfile к 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 параметр начальной загрузки. Но все еще часто должны размонтировать / изоустройство.

Неспособный к umount изоустройству размонтировали ISO https://bugs.launchpad.net/ubuntu / + источник/повсеместность / + ошибка/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
}
6
ответ дан 23 November 2019 в 03:30

mkusb МУЛЬТИЗАГРУЖАЮТ ВЗЛОМ

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

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

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

mkusb defaults

Используйте mkusb значения по умолчанию при создании Персистентной Карты памяти.

mkusb use defaults again

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

DUS Console

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

GParted Before

GParted перед модификацией раздела.

Gparted after

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

Persistence partition

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

Persistence folder

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

ISO folder

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

ISO folder contents

Добавьте некоторый ISO к папке ISO.

GRUB location

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

grub.cfg

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

РЕДАКТИРОВАНИЕ 18.04 + В личинке указывает vmlinuz не vmlinuz.efi и initrd не initrd не initid.lz

sudo parted -ls  /dev/sdb

sudo разделенный-ls/dev/sdb

sudo lsblk -f  /dev/sdb

sudo lsblk-f/dev/sdb

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

mkusb Windows Installer

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

mkusb Windows grub

Отредактируйте/boot/grub/grub.cfg к loopmount любой ISO и укажите любые папки персистентности.

(не нашли путь к loopmount файлом Windows ISO).

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

5
ответ дан 23 November 2019 в 03:30

Три легких шага

добавить ISO к меню личинки и начальной загрузке от него.

Во-первых, установка grml-rescueboot

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

sudo apt install grml-rescueboot

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

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

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

В-третьих, личинка обновления

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

sudo update-grub

Повторите вторые и третьи шаги как и, когда необходимо

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

Ссылка: справка Ubuntu на начальной загрузке Grub2 ISO

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

3
ответ дан 23 November 2019 в 03:30

MultiBootUSB - QEMU

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

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

  • Перетащите ISO на Избранном пространстве изображения.

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

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

MultiBootUSB-QEMU

2
ответ дан 23 November 2019 в 03:30

ПРОСТОЙ mkusb мультифутболист ISO

Если Вам не нужна мультиперсистентность, легко мультизагрузить операционную систему ISO на mkusb флеш-накопителе.

Используйте mkusb для создания Персистентной Карты памяти с помощью ОС по умолчанию по Вашему выбору, https://help.ubuntu.com/community/mkusb

Сделайте папку в usbdata разделе sdx1, названной ISOs.

Добавьте ISO, который будет загружен к этой папке.

Добавьте menuentries к/sdx3/boot/grub/grub.cfg к loopmount 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
}
1
ответ дан 23 November 2019 в 03:30

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

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

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

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

Ventoy

0
ответ дан 9 June 2020 в 05:31

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

Похожие вопросы: