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

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

Instalação do PostgreSQL com Apache 2, PHP 5, OpenSSL no Debian Wheezy 7.7 64 bits com systemd e chroot

Como ter o ChatGPT no seu site em PHP

Antivírus ClamAV com proteção em tempo real

Compilando o Squid3

Instalação do PAP (PostgreSL, Apache2 e PHP7) no Debian Jessie

Leitura recomendada

Incrementando as funções do KDE com "servicemenus"

Instalação e Configuração do Zabbix 3 e Agentes (Linux/Windows)

Adaptador Bluetooth no Slackware

Apache 2.4 - A diretiva Options

Removendo dependências desnecessárias no Debian

  
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