Як запустити файл ISO з мого диска за допомогою grub2 на машинах UEFI?


12

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

Зараз у мене є машина UEFI, і вся інформація, яку я можу знайти, стосується машин BIOS.

Які кроки для завантаження цих ISO-файлів із grub?

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


1
Я пішов цим шляхом деякий час назад, і це приголомшливо.
Органічний мармур

1
Мені подобається використовувати окремий розділ, по одному на кожному диску, щоб полегшити встановлення на інший накопичувач або встановити повний диск на флешки. help.ubuntu.com/community/Grub2/ISOBoot Приклади: help.ubuntu.com/community/Grub2/ISOBoot/Examples Я знаходжу правильний шлях до моменту встановлення розділів та отримання детальних параметрів завантаження як двох основних проблем щодо отримання це працювати. Шлях навіть може змінитися, якщо флеш-накопичувач підключений. І, дивлячись на ISO, щоб побачити його завантажувальну строфу і шлях, може допомогти вам розібратися в деталях.
Олдфред

1
Раніше я багато використовував цей метод 'grub-n-iso', і він добре працює :-), але тепер я тестую iso-файли в окремому комп'ютері для тестування, і клонуюсь з iso-файлів, щоб швидко прискорити USB3, або створити стійке живе USB манжети з mkusb . (Я зберігаю свої USB-підвіски у маленькій пластиковій коробці.)
sudodus

VBox запускає ISO файли ОК, використовуйте стан збереження машини під час виходу, MultiBootUSB має можливість перетягування ISO завантаження та QEMU з менеджером віртуальної машини швидко запустить iso.
CSCameron

1
Наразі використовуйте лише grub2 2.02 для циклу кріплення ISO. Grub2 2.04 видає помилки пам'яті. bugs.launchpad.net/ubuntu/+source/grub2/+bug/1851311 Ubuntu 18.04 все ще має 2.02.
Олдфред

Відповіді:


14

У грі 2.04 є помилка, тому переконайтеся, що у вас є попередня або пізніша версія.

Ну а основи додавання ISO-файлу до grub такі ж, як для UEFI, як і для машини BIOS: редагуйте /etc/grub.d/40_customта додайте 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змінну, нам необхідно з'ясувати , на який жорсткий диск файл зберігається, тому ми робимо: 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
}

Тож тепер збережіть цей файл та оновіть grub за допомогою:

update-grub

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

:-)

Приклад CloneZilla Live (для цього питання )

menuentry "CloneZilla ISO" {
  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
}

Ви ще створили Clonezilla? Це трохи інакше, я можу розмістити це, якщо ви ще цього не зрозуміли.
Органічний мармур

1
Я збираюся опублікувати ще одну відповідь для всіх тих, кого я додам завтра для людей "gimme the codez" ... @OrganicMarble
Fabby

+1, але це, ймовірно, безпечно відмовитися 2від update-grub2цих днів.
WinEunuuchs2Unix

@ WinEunuuchs2Unix Це в моїй історії ... Я просто набираю, upd↑а потім копіюю-вставляю. Дякуємо за нагадування Оновлено!
Фабі

6

Альтернативою є просто додати конфігураційний файл до 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 unmount 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
}

Мені подобається Перезавантаження та зупинка! :-) +1 Чому ви додаєте insmod? Ви також можете подзвонити мені в чаті
Fabby

inmod, напевно, не потрібен. З grub2 деякі функції були вбудовані, а деякі - addin (insmod). Ймовірно, на початку мені знадобився insmod gpt, коли я почав використовувати gpt в 2010 році або до того, як ПК був UEFI, а grub2 був новим і лише для BIOS / MBR, хоча завантажився з gpt з BIOS.
Олдфред

Дякую за відповідь. Хіба не було б краще видалити ці рядки з відповіді?
Фабі

1
Дозвольте мені відредагувати власну строфу і побачити, чи 18,04 чоботи. Я сподіваюся, що буде. Я також хотів оновити свій запис завантажуваного ISO, який зараз дуже старий, тому повернемося трохи.
Олдфред

1
Завантажений добре. Я забув, що у мене підключений флеш-накопичувач 18.04, і він стає hd0 у моїй системі, тому під час завантаження я повинен вручну редагувати вхід до одного hdX, щоб мати правильний диск. Моє завантаження .25 не працює, просто змінивши на .30. Мені довелося заглянути в ISO і побачити його grub.cfg і використовувати ці параметри та команди циклу grub, і тоді воно спрацювало.
Олдфред

5

mkusb MULTIBOOT HACK

Компанія Mkusb створює чудову базу для власних проектів завантаження через свої можливості як з BIOS, так і з UEFI.

Цей хак завантажує декілька файлів ISO, включаючи інсталятор Windows, і має меню grub2.

Додаткові меню Grub2 для більшості ОС доступні за допомогою Пошуку Google і виходять за рамки цієї відповіді.

mkusb за замовчуванням

Використовуйте mkusb за замовчуванням під час створення стійкого USB-накопичувача.

mkusb знову використовувати параметри за замовчуванням

Використовуйте параметри постійної стійкості mkusb, якщо сумніваєтесь, розмір розділу можна відрегулювати пізніше, але потребує часу.

Консоль DUS

Консоль DUS після встановлення.

GParted раніше

GParted перед зміною розділу.

Гпартер після

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

Наполегливий розділ

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

Папка стійкості

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

Папка ISO

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

Вміст папки ISO

Додайте декілька ISO у папку ISO.

Місцезнаходження GRUB

grub.cfg розташування

grub.cfg

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

EDIT 18.04+ В грубі вкажіть vmlinuz не vmlinuz.efi і initrd не initrd не initid.lz

sudo розлучився -ls / dev / sdb

sudo розлучився -ls / dev / sdb

sudo lsblk -f / dev / sdb

sudo lsblk -f / dev / sdb

Якщо потрібен інсталятор Windows, можливо, найпростіше почати з функції mkusb "вилучення інсталятора Windows" (мені довелося витягнути ISO ISO в TAR вручну),

mkusb Windows Installer

Після встановлення створіть папку для ISO і, якщо потрібно, папки для збереження (аналогічно вищевикладеній процедурі).

mkusb Windows grub

Відредагуйте /boot/grub/grub.cfg, щоб визначити будь-які ISO та вказати будь-які постійні папки.

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

Якщо вищезазначене використовується як USB-накопичувач, його можна використовувати для завантаження ISO, що зберігається на комп'ютері, що працює лише під Windows. На внутрішньому накопичувачі грядка не потрібна.


І як ти повертаєш їх на HDD / SDD ??? Питання полягає в тому, щоб зараз хотіти їх на USB-накопичувачі, чи я щось пропустив?
Фабі

1
@Fabby, це не лише для USB-накопичувачів. Якщо у вас новий привід SATA, ви можете запустити, як описано в цій відповіді, і дозволити mkusb встановити його надійну систему завантаження, яка працює в режимі UEFI і BIOS. Цей привід SATA можна встановити внутрішньо або підключити зовнішньо через USB або eSATA. Можна додавати як "умовно встановлені системи", так і нові ISO-файли, які завантажуються через "grub-n-iso".
sudodus

Гаразд, я все одно не розумію: я хочу, щоб ці ISO були введені /opt/. Як це зробити? (+1 тим часом за зусилля, хоча ...)
Fabby

1
@Fabby: Я думаю, що замість створення нової папки для ISO, як показано вище, вкажіть на розташування ISO в / opt /, in grub.cfg, grub on pendrive може завантажувати ISO на жорсткому диску. Я спробую це спробувати.
CSCameron

@Fabby: Якщо ISO увімкнено / вимкнено / вбудований внутрішній диск, на зовнішньому диску буде працювати та сама запис меню, яку ви використовуєте на внутрішньому диску. Можливо, є переваги завантаження грабу на USB-накопичувачі, наприклад, не переповнення або пошкодження внутрішнього меню.
CSCameron

3

Три простих кроки

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

Спочатку встановіть 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

Сподіваюсь, це допомагає


/boot- це найгірше місце для їх розміщення. Вибачте, заглянув у grml, мав би згадати про це. +1 за зусилля, хоча
Fabby

Дякуємо @Fabby за +1! Це може бути не найкращим способом зробити це, але це здається найпростішим, ІМХО.
user68186

1
Ось чому +1: хороша відповідь для нетехнічних користувачів.
Фабі

2

MultiBootUSB - QEMU

Якщо ви хочете завантажувати ISO файли з найменшим клопотом і не потребуєте наполегливості, MultiBootUSB включає опцію QEMU:

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

  • Перетягніть ISO на область вибору зображення.

  • Виберіть розмір оперативної пам’яті та натисніть кнопку Boot ISO.

Вам не потрібно редагувати grub.cfg або навіть виходити з системи.

MultiBootUSB-QEMU


Вишуканий! Я спробую це спробувати пізніше!
Фабі

@Fabby: Існує версія Windows MBUSB та версія Linux. Я не міг отримати версію Windows для завантаження ISO, тільки USB. Версія Linux 9.2.0 для мене чудово працює.
CSCameron

2

ПРОСТИЙ 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
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.