it-swarm.com.de

Wie starte ich eine ISO-Datei von meinem Laufwerk mit grub2 auf UEFI-Computern?

Ich habe eine Reihe von Live-ISO-Dateien wie GParted , CloneZilla , Boot-Repair , buntu 14.04 32 Bit , ... in /opt heruntergeladen und auf meinem alten BIOS-Rechner konnte ich sie einfach zum Grub-Menü hinzufügen und booten. : -)

Ich habe jetzt eine UEFI-Maschine und alle Informationen, die ich finden kann, sind für BIOS-Maschinen.

Was sind die Schritte, um diese ISO-Dateien von Grub zu booten?

Ich habe es einfach satt, diese ständig auf einen USB-Stick zu "brennen", da ich den benötigten Stick nie finden kann, während mein Computer selbst im totalen Chaos um mich herum viel schwerer zu verlieren ist ... ) : - (

11
Fabby

Nun, die Grundlagen für das Hinzufügen einer ISO-Datei zu grub sind für eine UEFI dieselben wie für eine BIOS-Maschine: Bearbeiten Sie /etc/grub.d/40_custom und fügen Sie ein menuentry -Element hinzu (GParted wird in diesem Beispiel verwendet) die Datei:

menuentry "GParted Live ISO" {
}

Jetzt fügen wir eine Variable hinzu, die das Verzeichnis enthält, in dem wir die ISO gespeichert haben (bisher so gut: keine Unterschiede zu BIOS-Maschinen):

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

Ich verwende /opt, um diese zu speichern, da ich es nicht mag, Verzeichnisse im Stammverzeichnis meines Computers zu erstellen. Entsprechend der Linux File System Hierarchy sollte sich dort ohnehin optionale Software befinden.

Bevor wir die Variable loopback hinzufügen, müssen wir herausfinden, auf welcher Festplatte die Datei gespeichert ist. Daher führen wir Folgendes aus: df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-AMD64.iso | tail -1 und die Ausgabe auf meinem Computer lautet: /dev/sdb2.

Allerdings verwendet Grub (hdX, Y) Notation und dieses ist der Unterschied zwischen UEFI- und BIOS-Maschinen! Starten Sie nun Ihre Maschine neu, gehen Sie in das Grub-Menü und drücken Sie C: Dies bringt Sie zur Eingabeaufforderung des Befehls grub mit andere Befehle als Sie es gewohnt sind , aber die einzige, die wir benötigen, kennen Sie bereits: ls.

Auf meiner Maschine ist die Ausgabe:

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

Huh? 4 Antriebe? Ich habe nur 3! Und es ist keine (hd1,4) Zeile in einem BIOS, sondern (hd1,gpt3) in UEFI und (hd0) hat überhaupt keine Partitionen!

Nun, anscheinend, wenn ein Teil des NVRAM als Speicher verwendet wird und als (hd0) angezeigt wird, müssen Sie damit beginnen, Ihre Laufwerke mit 1 zu nummerieren! Während alle Informationen, die Sie auf finden Beim Booten von ISO-Dateien müssen Sie mit der Nummerierung von 0 beginnen (auf BIOS-Rechnern ist dies immer wahr , auf einigen UEFI-Rechnern ist dies nicht unbedingt der Fall !)

Der Wert für loopback wird zu (hd2,gpt2)$GPartedISOFile, da die ISO-Datei auf meinem Computer /dev/sdb2 war (zweites Laufwerk hd2, zweite Partition gpt2):

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

Ein weiterer Unterschied besteht darin, dass linux und initrd auf BIOS-Maschinen linuxefi und linuxefi auf UEFI-Maschinen heißen, was unser Endergebnis ergibt:

#!/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
}

Also speichere diese Datei und aktualisiere grub mit:

update-grub

Starten Sie nach all den oben genannten Schritten neu, gehen Sie in das Grub-Menü , wählen Sie GParted Live ISO und Sie können jetzt ganz einfach Ihre ISO booten, ohne jemals wieder nach einem USB-Stick suchen zu müssen!

:-)

CloneZilla Live Beispiel (für diese Frage )

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
}
13
Fabby

Eine Alternative ist, einfach eine Konfigurationsdatei wie folgt zu 40_custom hinzuzufügen:

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
} 

Ich mache das so, als würde ich beim Aktualisieren einer ISO immer vergessen, Sudo update-grub auszuführen. Die obigen Einträge müssen sich nie ändern und ich kann nur die Datei livecdimage.cfg bearbeiten, die das gleiche Format wie jede andere 40_custom-Datei hat, aber keine Kopfzeilen enthält und sich in meinem/ISO-Ordner in meiner ISO-Partition befindet.

Ich füge toram als weiteren Boot-Parameter hinzu und auf dem System mit Nvidia füge nomodeset Boot-Parameter hinzu. Muss aber noch oft das/isodevice aushängen.

Isodevice kann nicht gemountet werden, ISO wird gemountet https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1155216

Sudo umount -l -r -f /isodevice

Und das ist Teil meiner livecdimage.cfg-Datei

# 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
oldfred

mkusb MULTIBOOT HACK

Mkusb ist eine großartige Basis für benutzerdefinierte Boot-Drive-Projekte, da es sowohl mit dem BIOS als auch mit UEFI kompatibel ist.

Dieser Hack bootet mehrere ISO-Dateien, einschließlich des Windows-Installationsprogramms, und verfügt über ein grub2-Menü.

Grub2-Menüeinträge für die meisten Betriebssysteme sind über die Google-Suche verfügbar und gehen über den Rahmen dieser Antwort hinaus.

mkusb defaults

Verwenden Sie die mkusb-Standardeinstellungen, wenn Sie ein persistentes USB-Laufwerk erstellen.

mkusb use defaults again

Verwenden Sie die Standardeinstellungen für die mkusb-Persistenz, wenn Sie sich nicht sicher sind, dass die Partitionsgröße später angepasst werden kann, dies jedoch einige Zeit in Anspruch nimmt.

DUS Console

Die DUS-Konsole nach der Installation.

GParted Before

Vor der Änderung der Partition erstellt.

Gparted after

Nach Änderung aufgeteilt - Überschreiben Sie sdb4, die ISO9660-OS-Partition und sdb5, die ext2-casper-rw-Partition, mit einer FAT32-Partition für Persistenzdateien.

Persistence partition

Persistenzpartition - Erstellen Sie einen eindeutigen Namensordner für jedes Betriebssystem (für das Persistenz erforderlich ist).

Persistence folder

Persistenzordner - Fügen Sie jedem Persistenzordner eine casper-rw-Datei und eine optionale home-rw-Datei hinzu. Eine Home-RW-Datei kann durch Umbenennen einer Casper-RW-Datei erstellt werden. Eine Home-RW-Datei ist wie eine separate Home-Partition bei einer vollständigen Installation. Sie kann nach einem Versions-Upgrade wiederverwendet werden.

ISO folder

Erstellen Sie einen Ordner für die ISO-Dateien auf der NTFS-Partition usbdata.

ISO folder contents

Fügen Sie dem ISO-Ordner einige ISOs hinzu.

GRUB location

grub.cfg Ort

grub.cfg

Bearbeiten Sie die Datei grub.cfg, um die ISO-Dateien per Loop zu laden. Fügen Sie Folgendes hinzu: persistent persistent-path=/<persistent-folder-name>/, wenn Sie eine Persistenz wünschen.

Sudo parted -ls /dev/sdb

Sudo trennte sich -ls/dev/sdb

Sudo lsblk -f /dev/sdb

Sudo lsblk -f/dev/sdb

Wenn ein Windows-Installationsprogramm benötigt wird, ist es möglicherweise am einfachsten, mit der mkusb-Funktion "Windows-Installationsprogramm extrahieren" zu beginnen (ich musste die Windows-ISO manuell in TAR extrahieren).

mkusb Windows Installer

Erstellen Sie nach der Installation einen Ordner für ISOs und, falls erforderlich, Ordner für die Persistenz (ähnlich wie oben beschrieben).

mkusb Windows grub

Bearbeiten Sie die Datei /boot/grub/grub.cfg, um alle ISOs per Loop zu laden und alle Persistenzordner anzugeben.

(habe keine Möglichkeit gefunden, eine Windows-ISO-Datei per Loop zu laden).

Wenn der obige als USB-Stick verwendet wird, kann er zum Booten von ISOs verwendet werden, die auf einem Windows-Computer gespeichert sind. Auf dem internen Laufwerk ist kein Grub erforderlich.

5
C.S.Cameron

Drei einfache Schritte

um ISO zum Grub-Menü hinzuzufügen und von dort zu booten.

Installieren Sie zuerst grml-rescueboot

Öffne ein Terminal und gib ein:

Sudo apt install grml-rescueboot

Zweitens verschieben Sie die ISO-Dateien nach /boot/grml/

Im selben Terminal geben Sie ein:

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

Drittens Update Grub

Im selben Terminal geben Sie ein:

Sudo update-grub

Wiederholen Sie den zweiten und dritten Schritt nach Bedarf

Vergessen Sie nicht, veraltete ISO-Dateien aus /boot/grml zu löschen.

Referenz: buntu-Hilfe zum Grub2-ISO-Boot

Hoffe das hilft

3
user68186

MultiBootUSB - QEMU

Wenn Sie ISO-Dateien mit dem geringsten Aufwand starten möchten und keine Persistenz benötigen, enthält MultiBootUSB eine QEMU-Option:

  • Starten Sie MultiBootUSB und wählen Sie die Registerkarte Boot ISO/USB.

  • Ziehen Sie den ISO-Wert auf den Bildbereich "Auswählen" und legen Sie ihn dort ab.

  • Wählen Sie die Größe RAM und klicken Sie auf die Schaltfläche Boot ISO.

Sie müssen die Datei grub.cfg weder bearbeiten noch sich abmelden.

MultiBootUSB-QEMU

2
C.S.Cameron

EINFACHER mkusb ISO Multibooter

Wenn Sie keine Multi-Persistenz benötigen, ist es einfach, Betriebssystem-ISOs auf einem mkusb-Flash-Laufwerk zu multibooten.

Verwenden Sie mkusb, um ein persistentes USB-Laufwerk mit einem Standardbetriebssystem Ihrer Wahl zu erstellen. https://help.ubuntu.com/community/mkusb

Erstellen Sie in der usbdata-Partition sdx1 einen Ordner mit dem Namen ISOs.

Fügen Sie die zu startenden ISOs in diesen Ordner ein.

Fügen Sie Menüeinträge zu /sdx3/boot/grub/grub.cfg hinzu, um die ISOs per Loop zu mounten.

Proben:

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
C.S.Cameron