Há um erro no grub 2.04, portanto, verifique se você possui uma versão anterior ou posterior.
Bem, o básico para adicionar um arquivo ISO ao grub é o mesmo para um UEFI e para uma máquina BIOS: edite /etc/grub.d/40_custom
e adicione um menuentry
item (GParted é usado neste exemplo) na parte inferior do arquivo:
menuentry "GParted Live ISO" {
}
Agora vamos adicionar uma variável que contém o diretório em que armazenamos o ISO (até agora, tudo bem: sem diferenças com as máquinas BIOS):
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
}
Estou usando /opt
para armazená-los, pois não gosto de criar diretórios na raiz da minha máquina e de acordo com a Hierarquia do sistema de arquivos do Linux , onde é onde o software opcional deve residir.
Antes de adicionar a loopback
variável, precisamos descobrir em qual disco rígido o arquivo é armazenado, por isso fazemos um: df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1
ea saída na minha máquina é: /dev/sdb2
.
No entanto GRUB usa ( hdX,Y
) notação e este é o lugar onde a diferença entre as máquinas UEFI BIOS e entra! Então agora reiniciar a máquina, ir para o menu grub e pressione C: Isto irá levá-lo ao comando grub tempo com comandos diferentes do que você está acostumado , mas o único que você precisa é: ls
.
Na minha máquina, a saída é:
(hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2) ... (hd3) ...
Hã? 4 unidades? Eu só tenho 3! E não está (hd1,4)
alinhado no BIOS, mas (hd1,gpt3)
no UEFI e (hd0)
não possui partições!
Bem, aparentemente quando parte da NVRAM é usada como armazenamento e aparece quando (hd0)
você precisa começar a numerar suas unidades como 1! Enquanto todas as informações encontradas na inicialização de arquivos ISO dizem que é necessário começar a numerar de 0 (em máquinas BIOS, isso sempre é verdade , isso não é necessariamente o caso em algumas máquinas UEFI !)
Portanto, o valor para loopback
torna-se (hd2,gpt2)$GPartedISOFile
como o arquivo ISO na minha máquina era /dev/sdb2
(segunda unidade hd2
, segunda partição gpt2
):
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
loopback loop (hd2,gpt2)$GPartedISOFile
}
Outra diferença é que as máquinas BIOS linux
e initrd
nas chamadas são chamadas linuxefi
e linuxefi
nas máquinas UEFI, o que nos dá o resultado final:
#!/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
}
Então agora salve esse arquivo e atualize o grub com:
update-grub
Depois de tudo isso, reinicie, entre no menu grub , escolha GParted Live ISO
e agora você pode facilmente inicializar seu ISO sem precisar procurar um pen drive novamente!
:-)
Exemplo do CloneZilla Live (para esta pergunta )
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
}