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: 387 ]

Por: Buckminster em 07/04/2025


DESENVOLVIMENTO 1



Faça o download da imagem ISO (Live ou não) da sua distribuição preferida, por exemplo, em /home/seu_usuario/Downloads ou outra pasta de sua escolha. Extraia os arquivos clicando com o botão direito na pasta > Extrair aqui ou algo parecido.

Será feita a extração dos arquivos, pois uma imagem iso é, grosso modo, um arquivo compactado.

Imagem iso e sua pasta com os arquivos extraídos.

Entre na pasta, por exemplo, debian-live-12.10.0-amd64-gnome, dentro encontrará a pasta "live". Entre na pasta live. Dentro encontrará os arquivos "vmlinuz-6.1.0-32-amd64" e "initrd.img-6.1.0-32-amd64". O número 6.1.0-32 é a versão do Kernel Linux da versão 12.10.0 do Debian.

No Ubuntu os arquivos vmlinuz e initrd.img estão na pasta "casper". Isso muda de acordo com a distribuição, então você terá de descompactar a imagem iso e procurar nas pastas os dois arquivos vmlinuz-alguma_versão e initrd.img-alguma_versão.

Até aqui o processo é tranquilo, aliás, veremos que o processo todo é fácil, um pouco trabalhoso, mas é fácil, além disso, você fará uma única vez e durará um bom tempo até você trocar de imagem iso. Depois de estar de posse das informações necessárias pode deletar a pasta descompactada, caso quiser.

De posse dessas informações, vamos começar.

Abra o terminal e atualize o sistema e instale/atualize para o Grub2, caso quiser, senão somente atualize o sistema (aqui é o Debian, você dê os comandos referentes ao teu sistema):

sudo apt update
sudo aptitude safe-upgrade
sudo apt install grub2

Abra o terminal e entre no arquivo /etc/grub.d/40_custom (este arquivo é o arquivo correto a ser alterado). Esse arquivo está presente na esmagadora maioria das distribuições Linux que usam o Grub. Caso você não encontrar na sua distribuição, procure na internet qual o arquivo equivalente. Esse processo descrito aqui foi feito no Debian.

add_img 40_custom.png]

Entrando no arquivo /etc/grud.d/40_custom

# vim /etc/grub.d/40_custom

ou

# nano /etc/grub.d/40_custom

Para editar no vim pressione a tecla Insert, faça a alteração > Esc > para salvar e sair Shift + :, solte o Shift e digite wq ficando assim no canto inferior esquerdo :wq > Enter. Não pressione a tecla +, é somente a tecla Shift e a tecla : (dois pontos). Para salvar sem sair no vim digite somente w e dê enter.

Para salvar no nano pressione ctrl+o (letra o) e dê Enter; para sair ctrl+x.

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.

Visão do interior do arquivo sem as configurações.

O arquivo 40_custom é o arquivo indicado para se fazer as entradas que aparecerão no menu do Grub na inicialização, sendo que depois de atualizar o Grub com update-grub ou outro comando relativo, essas informações serão gravadas no arquivo /boot/grub/grub.cfg. Junto com o arquivo /etc/default/grub, esses três são os arquivos principais do Grub, porém, somente faça alterações no /etc/default/grub e no /etc/grub.d/40_custom.

NÃO altere o arquivo /boot/grub/grub.cfg.

Na sequência do artigo tem as configurações do /etc/grub.d/40_custom para usar com várias distribuições. Como exemplo vamos analisar as seguintes linhas acrescentadas no arquivo original após a última linha:

menuentry 'Debian 12.10.0 LIVE RAM' {
insmod ext2
set isofile='/debina/Downloads/debian-live-12.10.0-amd64-xfce.iso'
rmmod tpm
loopback loop (hd1,6)$isofile
    echo 'Loading Linux Live ...'
linux (loop)/live/vmlinuz-6.1.0-32-amd64 boot=live findiso=$isofile components locales=pt_BR.UTF-8 keyboard-model=pc105 keyboard-layouts=br toram
echo 'Loading initial ramdisk ...'
initrd (loop)/live/initrd.img-6.1.0-32-amd64
}

Abaixo o conteúdo está numerado como exemplo para maiores explicações.

1- menuentry 'Debian 12.10.0 LIVE' {
2- insmod ext2
3- set isofile='/debina/Downloads/debian-live-12.10.0-amd64-xfce.iso'
4- rmmod tpm
5- loopback loop (hd1,6)$isofile
6- echo 'Loading Linux Live ...'
7- linux (loop)/live/vmlinuz-6.1.0-32-amd64 boot=live findiso=$isofile components locales=pt_BR.UTF-8 keyboard-model=pc105 keyboard-layouts=br toram
8- echo 'Loading initial ramdisk ...'
9- initrd (loop)/live/initrd.img-6.1.0-32-amd64
10- }

Na linha 1, menuentry, você pode colocar o que quiser entre as aspas, e abrimos a chave. Pode colocar aspas duplas ou simples, escolha uma e padronize no arquivo todo, sugiro aspas simples.

Na segunda linha (linha 2) não altere, pois estamos carregando o módulo do sistema ext2 que é o sistema de arquivos temporário. Não se preocupe, esse ext2 tem nada a ver com os sistemas que você escolhe quando particiona um Linux. Ele é somente para carregar o sistema de arquivos provisório, aliás, ele é o sistema de arquivos temporário.

Na linha 3 estamos setando a variável "isofile" com o caminho para a imagem iso. No caminho coloque somente a partir do nome do usuário, não acrescente /home no começo. Não aconselho a colocar a iso na partição /boot, pois ocupa um espaço desnecessário, além do que a partição /boot não é própria para isso, coloque onde tenha espaço para isso.

Na linha 4 chamamos o módulo "rmmod" para desabilitar o famigerado tpm do BIOS, caso tiver. Lembram, no começo, que o initrd chama os módulos quando acionado na inicialização.

Na linha 5 fazemos um "loopback loop" (loop de retorno) que nada mais é do que fazer o dispositivo chamado "device" corresponder ao conteúdo da imagem do sistema de arquivos no arquivo, ou seja, lê a imagem indicada no caminho, descompacta e carrega ela passando-a como ramDisk para o Kernel. "Dispositivo" (device) aqui pode ser qualquer coisa relacionada ao computador, seja hardware (dispositivo físico) ou software (dispositivo virtual).

Veja tirado das páginas do manual do Grub (links ao final):

"No entanto, o próprio SO deve ser capaz de encontrar sua raiz. Isso geralmente envolve a execução de um programa de espaço do usuário antes que a raiz real seja descoberta. Isso é obtido pelo GRUB carregando uma pequena imagem especialmente feita e passando-a como ramdisk para o kernel."

"'device' é uma unidade especificada na sintaxe GRUB (consulte Sintaxe do dispositivo ) e 'file' é um arquivo do sistema operacional, que normalmente é um arquivo de dispositivo."

A parte (hd1,6) da linha 5 veremos adiante o que você tem de colocar ali.

A parte $isofile da linha 5 chama a variável isofile onde armazenamos o caminho para a imagem iso. Caso quiser pode chamar de $fileiso, $arquiviso, etc.

Na linha 6 damos um "echo", ou seja, é um comando presente em várias linguagens de programação que exibe uma mensagem que você verá no Grub durante a inicialização do sistema.

Na linha 7 chamamos o vmlinuz desejado, no caso, o live, e configuramos alguns parâmetros opcionais como o locale para fins de horário e o layout do teclado para fins de podermos digitar sem ter de adivinhar onde foi parar a barra, o ponto de interrogação, etc. Esses parâmetros são opcionais, algumas distribuições em suas imagens ISOs Live já oferecem essas opções ao inicializar a iso Live.

IMPORTANTE:
O parâmetro "toram" ao final da linha 7 indica que é para carregar a imagem live na memória ram.

Mais adiante veremos que é interessante colocar duas entradas iguais, uma sem o parâmetro toram (to ram - para a ram) ao final e outra com o parâmetro, assim podemos escolher no menu do Grub.

Colocando na RAM o carregamento e a execução, o sistema live tem um desempenho melhor, porém, caso você tiver pouca RAM física não é aconselhável, então faça as duas entradas iguais, somente uma sem toram e a outra com, pois não custa nada e você pode testar qual fica melhor e eliminar uma depois.

Na linha 8 damos outro "echo".

Na linha 9 chamamos o initrd. Na linha 10 fechamos as chaves com chave de ouro!

O número de linhas para cada entrada (menuentry) pode ser diferente, esse número de 10 linhas não é fixo, vai de acordo com cada distribuição e configurações, mas é tranquilo.

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.

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

DHCP com controle de IP e compartilhamento no Debian Squeeze

Como um monte de letras de um código fonte transforma-se em voltagens?

Compilação do Kernel

Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg

Problema no GRUB no Debian Squeeze 6.0.7 [Resolvido]

Leitura recomendada

Gnome + Enlightenment = Enlightened Gnome

PHP5 + Apache2 no Ubuntu 7.04, com suporte ao MySQL e SQL Server

Load balance e alta disponibilidade com Bonding

Partições Linux - Faça direito!

Comando sudo - instalação e configuração

  
Comentários
[1] Comentário enviado por Carlos_Cunha em 07/04/2025 - 18:29h

Muito bom!!
Parabéns, excelente Artigo!!!


#-------------------------------------------------------------------------------------#
"Falar é fácil, me mostre o código." - Linus Torvalds
#-------------------------------------------------------------------------------------#

[2] Comentário enviado por meinhardt_jgbr em 08/04/2025 - 11:38h

Excelente é o mínimo que se pode dizer do seu artigo. Parabéns e obrigado pela riqueza de informações que permitem entender o processo de inicialização.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts