C'è un bug in grub 2.04 quindi assicurati di avere una versione precedente o successiva.
Bene, le basi per aggiungere un file ISO a grub sono le stesse per una UEFI come per una macchina BIOS: modifica /etc/grub.d/40_custom
e aggiungi un menuentry
elemento (GParted è usato in questo esempio) nella parte inferiore del file:
menuentry "GParted Live ISO" {
}
Ora aggiungeremo una variabile contenente la directory in cui abbiamo archiviato gli ISO (finora, tutto bene: nessuna differenza con le macchine BIOS):
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
}
Sto usando /opt
per archiviarli perché non mi piace creare directory nella radice della mia macchina e secondo la Gerarchia del file system Linux è lì che dovrebbe risiedere comunque il software opzionale.
Prima di aggiungere la loopback
variabile, abbiamo bisogno di sapere su quale disco fisso il file viene memorizzato, quindi facciamo un: df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1
e l'uscita sulla mia macchina è: /dev/sdb2
.
Tuttavia grub usi ( hdX,Y
) notazione e questo è dove la differenza tra le macchine UEFI BIOS e viene in! Così ora riavviare la macchina, andare nel menu di GRUB e premere C: Questo vi porterà al comando grub richiesta con diversi comandi di quanto siete abituati a , ma l'unico che ti serve è: ls
.
Sulla mia macchina l'output è:
(hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2) ... (hd3) ...
Eh? 4 unità? Ne ho solo 3! E non è una (hd1,4)
linea su un BIOS ma (hd1,gpt3)
in UEFI e (hd0)
non ha affatto partizioni!
Bene, apparentemente quando parte della NVRAM viene utilizzata come memoria e si presenta come (hd0)
è necessario iniziare a numerare le unità da 1! Considerando che tutte le informazioni che trovi sull'avvio dei file ISO indicano che devi iniziare la numerazione da 0 (sui computer BIOS questo è sempre vero , questo non è necessariamente il caso su alcuni computer UEFI !)
Quindi il valore per loopback
diventa (hd2,gpt2)$GPartedISOFile
come il file ISO sulla mia macchina era /dev/sdb2
(seconda unità hd2
, seconda partizione gpt2
):
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
loopback loop (hd2,gpt2)$GPartedISOFile
}
Un'altra differenza è che l' linux
e initrd
sulle macchine del BIOS sono chiamati linuxefi
e linuxefi
su macchine UEFI, che ci dà il nostro risultato finale:
#!/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
}
Quindi ora salva quel file e aggiorna grub con:
update-grub
Dopo tutto quanto sopra, riavvia, vai nel menu di grub , scegli GParted Live ISO
e ora puoi facilmente avviare il tuo ISO senza dover mai più cercare una chiavetta USB!
:-)
Esempio di CloneZilla Live (per questa domanda )
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
}