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

Por: Buckminster em 07/04/2025


INTRODUÇÃO



Como criar uma entrada iso no Grub

Nível intermediário.

O Grub (Grand Unified Bootloader) é um bootloader, ou seja, um carregador de inicialização.

Isso é tudo o que você precisa saber sobre o Grub no momento, pois o Grub não é o escopo do artigo, o escopo é como criar uma entrada (menuentry) no arquivo /etc/Grub/40_custom, porém, primeiro segue uma explicação necessária sobre o processo de inicialização do Linux.

O binário do kernel do UNIX é chamado UNIX. Quando o kernel, em tempos antanhos, passou a ter suporte para memória virtual foi renomeado de "vmunix". O "vmlinuz" é derivado de "Virtual Memory LINUx gZip". O Kernel Linux, como é compactado geralmente com uma extensão z, gz, ou xz como é hoje, passou a se chamar "vmlinuz" e continua até hoje, mesmo tendo, algumas vezes, outra extensão. O "vmlinuz" é um arquivo compactado e inicializável do Kernel Linux, porém, não é apenas um arquivo compactado, ele também tem um descompactador embutido no código, além de outras coisas.

O initrd (Initial ramDisk - Disco RAM Inicial) fornece a capacidade de carregar um disco RAM pelo carregador de inicialização. Este disco RAM inicial pode então ser montado como um sistema de arquivos raiz temporário e pode ser executado a partir dele. Depois, um novo sistema de arquivos raiz pode ser montado a partir de um dispositivo diferente. A raiz anterior (do initrd) é então movida para um diretório e pode ser desmontado posteriormente.

Grosso modo, o initrd é uma porção de diversos arquivos/ferramentas/módulos, cada qual com sua função, por exemplo, a ferramenta insmod está incluída no initrd, e esse conjunto é juntado nesse pacote chamado initrd que é também um sistema de arquivos temporário carregado na memória RAM durante o processo de inicialização do Linux para que o Kernel possa montar o sistema de arquivos raiz real (aquele que você escolhe durante o particionamento na instalação do sistema, seja ext4, Btrfs, etc.

Apesar de que cada distribuição tem sua própria maneira de lidar com isso, geralmente é feito desta maneira no Linux, pois até os nomes do "vmlinuz" e "initrd" podem variar.

O initrd.img é um link simbólico para o initrd que é carregado pelo bootloader junto com a imagem do kernel e é essencial para o processo de inicialização que os sistemas Linux modernos usam. O initrd serve como um sistema de arquivos raiz provisório até que o sistema de arquivos raiz real seja montado. Por isso, às vezes, quando aparece aquela mensagem "you need to load the kernel first - você precisa carregar o kernel primeiro" é porque o "vmlinuz" (o kernel) não foi encontrado ou a assinatura é inválida ou está corrompido, etc. O bootloader (no caso, o Grub) não encontrou o kernel para carregar e montar.

O processo de inicialização se dá, resumidamente, da seguinte maneira:

  1. Quando você liga o computador, o BIOS da placa-mãe procura um bootloader (como o Grub, se houver) que, por sua vez, carrega o vmlinuz e o initrd na memória. Isso acontece após você escolher um sistema no menu do Grub ou após o sistema padrão configurado carregar automaticamente;
  2. A rotina programada no vmlinuz descompacta o kernel na memória;
  3. Depois da descompactação o controle é passado para o Kernel que então monta o initrd como seu sistema de arquivos raiz inicial temporário;
  4. O initrd assume o controle e carrega os módulos necessários que são cruciais para que o Kernel acesse o hardware para montar o sistema de arquivos real (ext4, NFS, Btrfs, etc);
  5. Então o Kernel carrega os drivers necessários e depois que os drivers foram carregados, o Kernel monta o sistema de arquivos raiz real e continua o processo de inicialização.

Fiz essa breve explicação para entendermos o processo de inicialização necessário para criarmos as entradas para as imagens iso no Grub e também evitar os avisos de erro durante a inicialização do Linux, como, por exemplo: "você precisa carregar o kernel primeiro", "memória insuficiente - out of memory", "Invalid magic number", "servidor não encontrado", etc.

O erro "you need to load the kernel first - você precisa carregar o kernel primeiro" geralmente significa que tem algum parâmetro errado em relação aos caminhos para o vmlinuz. Em caso de Live pelo pendrive pode significar também que o Secure Boot e/ou o TPM estão está habilitados, a imagem está corrompida, etc. Este é um erro bastante genérico que, para solucioná-lo, você deve ir pelo processo de eliminação.

O erro "memória insuficiente - out of memory" é auto-explicativo, porém, em caso de ISO carregada na RAM a partir do disco pode significar que não tem espaço suficiente na RAM ou, caso a ISO tenha sido colocada na partição /boot (não recomendado) pode significar que não tem espaço suficiente na partição /boot para descompactar os arquivos.

O erro "Invalid magic number" geralmente significa algum erro de verificação do hash (não necessariamente imagem corrompida, somente o hash) ou, em último caso, a imagem está mesmo corrompida. Essa mensagem "número mágico inválido" provavelmente foi uma brincadeira dos desenvolvedores, como os "poderes de super-vaca" do aptitude. O erro "servidor não encontrado" geralmente significa que algum caminho para a imagem foi digitado errado, o hdx,x está errado, o computador está sem internet, a imagem não conseguiu conexão com a internet, etc.

A causa desses erros podem variar, procurei dar em linhas gerais de acordo com a mensagem e com a experiência.Passados os prolegômenos, vamos colocar a mão no mouse!

    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

Compilando o Squid3

Compilação do Kernel

Encapsulando BIND 9 e Apache 2 para obter maior segurança

Instalar OBS Studio e VLC no Slackware 15

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

Leitura recomendada

Tutorial Apache + PHP + MySQL no OPENBSD 3.5

Servidor de ICQ free no SuSE

Servidor VPN PPTP com autenticação de usuários no Active Directory

Entendendo o processo de boot

Calculando máscara de sub-rede e broadcast

  
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