Es gibt einen Fehler in Grub 2.04 , stellen Sie also sicher, dass Sie eine frühere oder spätere Version haben.
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 /etc/grub.d/40_custom
Sie ein menuentry
Element und fügen Sie es hinzu (in diesem Beispiel wird GParted verwendet) am Ende der 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 /opt
speichere diese Dateien, da ich keine Verzeichnisse im Stammverzeichnis meines Computers erstellen möchte. Gemäß der Linux-Dateisystemhierarchie sollte sich dort ohnehin optionale Software befinden.
Bevor wir die Add loopback
Variable, müssen wir gespeichert ist, die Festplatte die Datei , um herauszufinden , auf, so dass wir ein tun: df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1
und die Ausgabe auf meinem Rechner ist: /dev/sdb2
.
Allerdings benutzt grub die hdX,Y
Notation ( ) und hier kommt der Unterschied zwischen UEFI- und BIOS-Maschinen ins Spiel! So jetzt einen Neustart Ihrer Maschine, gehen in die Grub - Menü und drücken Sie C: Dieses Sie auf den Befehl grub bringen wird prompt mit verschiedenen Befehle , als Sie es gewohnt sind , aber die einzige, die Sie brauchen , ist: 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 angezeigt wird, wie (hd0)
Sie Ihre Laufwerke mit 1 nummerieren müssen! Während alle Informationen, die Sie zum Booten von ISO-Dateien finden, besagen, dass Sie mit der Nummerierung von 0 beginnen müssen (auf BIOS-Computern ist dies immer der Fall, auf einigen UEFI-Computern muss dies nicht der Fall sein !)
Also für den Wert loopback
wird (hd2,gpt2)$GPartedISOFile
als die auf meinem Rechner Datei ISO war /dev/sdb2
(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 die linux
und initrd
auf BIOS-Maschinen linuxefi
und linuxefi
auf UEFI-Maschinen aufgerufen werden, 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
Nach all dem, starte neu, gehe in das Grub-Menü , wähle GParted Live ISO
und du kannst jetzt ganz einfach deine ISO booten, ohne jemals wieder nach einem USB-Stick suchen zu müssen!
:-)
CloneZilla Live Beispiel (für diese Frage )
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
}