Criar entrada (menuentry) ISO no Grub

Veremos como criar entradas (menuentry) no arquivo /etc/grub/40_custom para imagens ISOs Live e não Live, a fim de que você possa inicializar a ISO pelo disco sem precisar de pendrive.

[ Hits: 224 ]

Por: Buckminster em 07/04/2025


DESENVOLVIMENTO 3



Deixo aqui o conteúdo completo de como ficou o arquivo /etc/grub.d/40_custom (você pode colocar somente uma entrada de acordo com a sua distribuição, para reparos, caso dê alguma coisa errada com o sistema... ou você faça besteira, o que é mais provável de acontecer):

#!/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.
#probe -u $root --set=rootuuid
#set imgdevpath="/dev/disk/by-uuid/$rootuuid"

menuentry 'Debian 12.10.0 LIVE XFCE RAM' {
	insmod ext2
	rmmod tpm
	set isofile='/debina/Downloads/debian-live-12.10.0-amd64-xfce.iso'
	loopback loop (hd1,6)$isofile
        echo    'Loading Debian Live xfce RAM ...'
	linux (loop)/live/vmlinuz-6.1.0-32-amd64 boot=live findiso=$isofile toram components locales=pt_BR.UTF-8 keyboard-model=pc105 keyboard-layouts=br
	echo    'Loading initial ramdisk RAM ...'
	initrd (loop)/live/initrd.img-6.1.0-32-amd64
}
menuentry 'Debian 12.10.0 LIVE GNOME RAM' {
        insmod ext2
        rmmod tpm
        set isofile='/debina/Downloads/debian-live-12.10.0-amd64-gnome.iso'
        loopback loop (hd1,6)$isofile
        echo    'Loading Debian Live gnome RAM ...'
        linux (loop)/live/vmlinuz-6.1.0-32-amd64 boot=live findiso=$isofile toram components locales=pt_BR.UTF-8 keyboard-model=pc105 keyboard-layouts=br 
        echo    'Loading initial ramdisk RAM ...'
        initrd (loop)/live/initrd.img-6.1.0-32-amd64
}
menuentry 'Fedora-KDE 41 Live' {
	rmmod tpm
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod chain
	insmod ext2
        set isofile='/debina/Downloads/Fedora-KDE-Live-x86_64-41-1.4.iso'
        loopback loop (hd1,6)$isofile
        echo    'Loading Fedora Live ...'
        linux (loop)/images/pxeboot/vmlinuz root=live:CDLABEL=Fedora-KDE-Live-41-1-4 rd.live.image verbose iso-scan/filename=$isofile
        echo    'Loading initial ramdisk ...'
        initrd (loop)/images/pxeboot/initrd.img
}
menuentry 'Arch Linux-2025 RAM' {
	insmod ext2
	rmmod tpm
	set isofile='/debina/Downloads/archlinux-2025.03.01-x86_64.iso'
	loopback loop (hd1,6)$isofile
	echo 'Loading Arch Linux-2025 Live ...'
	linux (loop)/arch/boot/x86_64/vmlinuz-linux archisolabel=ARCH_202503 img_dev=/dev/sdb6 img_loop=$isofile earlymodules=loop toram
	echo 'Loading initial ramdisk ...'
	initrd (loop)/arch/boot/x86_64/initramfs-linux.img
}
menuentry 'OpenSuse Leap' {
        rmmod tpm
        load_video
        set gfxpayload=keep
	set gfxmode=auto
        insmod gzio
        insmod part_gpt
        insmod chain
        insmod ext2
        set isofile='/debina/Downloads/openSUSE-Leap-15.6-DVD-x86_64-Media.iso'
        loopback loop (hd1,6)$isofile
        echo 'Loading OpenSuse-2025 Live ...'
        linux (loop)/boot/x86_64/loader/linux boot=isolinux iso-scan/filename=$isofile
        echo 'Loading initial ramdisk ...'
        initrd (loop)/boot/x86_64/loader/initrd
}
menuentry 'Kali-Linux LIVE RAM' {
        insmod ext2
        rmmod tpm
        set isofile='/debina/Downloads/kali-linux-2024.4-live-amd64.iso'
        loopback loop (hd1,6)$isofile
        echo 'Loading Kali-Linux Live ...'
        linux (loop)/live/vmlinuz-6.11.2-amd64 boot=live findiso=$isofile toram components locales=pt_BR.UTF-8 keyboard-model=pc105 keyboard-layouts=br
        echo 'Loading initial ramdisk ...'
        initrd (loop)/live/initrd.img-6.11.2-amd64
}
menuentry 'Ubuntu LIVE RAM' {
        insmod ext2
        rmmod tpm
        set isofile='/debina/Downloads/ubuntu-24.04.2-desktop-amd64.iso'
        loopback loop (hd1,6)$isofile
        echo 'Loading Ubuntu Live ...'
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject toram components locales=pt_BR.UTF-8 keyboard-model=pc105 keyboard-layouts=br
        echo 'Loading initial ramdisk ...'
        initrd (loop)/casper/initrd
}
menuentry 'Linux Mint LIVE RAM' {
        insmod ext2
        rmmod tpm
        set isofile='/debina/Downloads/linuxmint-22.1-cinnamon-64bit.iso'
        loopback loop (hd1,6)$isofile
        echo 'Loading Linux Mint Live ...'
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject toram components locales=pt_BR.UTF-8 keyboard-model=pc105 keyboard-layouts=br
        echo 'Loading initial ramdisk ...'
        initrd (loop)/casper/initrd.lz
}
Sempre depois de alterar o arquivo /etc/grub.d/40_custom execute:

sudo update-grub

ou o comando equivalente da sua distribuição. Sem atualizar o Grub não terão efeito as alterações no arquivo. Reinicie e teste.

Estas duas linhas comentadas logo abaixo do início do arquivo:

#probe -u $root --set=rootuuid
#set imgdevpath="/dev/disk/by-uuid/$rootuuid"

servem mais para o Arch como configuração para o Grub encontrar-se pelo UUID do disco, porém, na configuração acima não foi preciso utilizá-las, é somente para o caso de colocar somente uma única entrada para o Arch. O Arch e o openSUSE não tem distribuições LIVE oficiais. Aquelas entradas ali são para instalação das ISOs oficiais desses sistemas. Para colocar na RAM basta acrescentar o parâmetro "toram".

Alguns parâmetros extras em algumas entradas como, por exemplo, do Fedora e/ou do openSUSE:

load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod chain

você encontra dentro da pasta da imagem ISO descompactada, procure nas pastas pelo arquivo de texto grub.cfg e abra-o com seu editor de texto preferido que você encontrará as entradas (menuentry) padrões das configurações que vem na própria ISO.

Esses parâmetros extras às vezes são necessários para uma boa execução do sistema Live a partir do disco.

Parâmetros obrigatórios como "root=live:CDLABEL=Fedora-KDE-Live-41-1-4 rd.live.image" do Fedora e "archisolabel=ARCH_202503" do Arch você também encontra nesse arquivo grub.cfg dentro da pasta descompactada.

Esses parâmetros são o LABEL que é necessário em algumas distribuições, por isso se faz necessário descompactar a ISO e procurar o arquivo grub.cfg.

A cada nova ISO com uma nova versão da distribuição você deve refazer a entrada no Grub com esses novos parâmetros, pois eles podem mudar a cada nova versão da distribuição.

Repare que algumas entradas tem iso-scan/filename=$isofile e outras findiso=$isofile, pelo que testei é indiferente, mas pode acontecer que alguma distribuição tenha esse parâmetro fixo por padrão, pois não testei com todas e nem teria como.

O parâmetro boot=isolinux, boot=live, etc, é necessário em algumas distribuições e em outras não, verifique o arquivo grub.cfg dentro da pasta descompactada. No Arch e no Fedora, por exemplo, não tem tal parâmetro.

Perceba que, com exceção do openSUSE, esse parâmetro "boot=" refere-se à pasta onde está o arquivo vmlinuz ou parecido, no Debian é a pasta "live", no Ubuntu é a pasta "casper", etc. No openSUSE é boot=isolinux. Lembrando que o openSUSE e o Arch não tem imagens ISO Live oficiais, as imagens que utilizei são imagens ISO para instalação do sistema, baixadas nos sites oficiais.

Seguem abaixo o consumo da RAM com ISOs carregadas na memória RAM e no disco.

Tela do Debian com Gnome Live executado pelo disco.

Vemos o Debian com Gnome ocupando ~5GB na RAM.

Vemos o Debian com XFCE Live executado pelo disco.

Vemos o Debian com Xfce ocupando ~4GB na RAM.

Vemos o Debian com Xfce executado pelo disco, sem ser carregado direto na RAM, ocupando ~1GB na RAM.

Lembrando que basta retirar o parâmetro "toram" que a ISO não será toda carregada na memória RAM, mas somente o necessário, o restante será executado/lido do disco físico.

Em caso de formatação e reparo completo do sistema é aconselhado colocar a imagem toda na RAM, mesmo que você particionou a /home separadamente e não a formatará, pois a instalação completa do sistema mexerá na tabela de partições.

Página anterior     Próxima página

Páginas do artigo
   1. INTRODUÇÃO
   2. DESENVOLVIMENTO 1
   3. DESENVOLVIMENTO 2
   4. DESENVOLVIMENTO 3
   5. CONCLUSÃO
Outros artigos deste autor

Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET

Instalando e Configurando o pgAgent no Linux (pgAdmin e PostgreSQL)

Compilando o Squid3

Squid - Entendendo um pouco as configurações

Manual traduzido do Squid

Leitura recomendada

Configurando servidor MikroTik com Hotspot e páginas de aviso (atraso e bloqueio)

Instalando o Debian 8.3 - Instalação em Modo Texto para uso em Servidores

Configurando uma placa de rede no Linux

Configurando um servidor de backup Bacula

Escolhendo o melhor gerenciador de janelas

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts