O que é GRUB: Um guia completo para o GNU Boot Manager

Última atualização: 14 outubro 2025
  • GRUB é o gerenciador de boot GNU que seleciona e carrega o sistema operacional, suportando BIOS/UEFI e Multiboot.
  • O GRUB 2 adiciona módulos, suporte aprimorado ao sistema de arquivos, pesquisa de UUID e um menu/terminal gráfico.
  • A configuração é gerenciada via /etc/default/grub e 40_custom, regenerando com update-grub ou grub2-mkconfig.
  • Segurança: Proteja o GRUB com senha, use criptografia LUKS e tenha políticas de senha fortes.

Ilustração geral sobre o GRUB

Se você instalou o GNU/Linux no seu computador ou usa vários sistemas operacionais, provavelmente já ouviu falar do GRUB. É aquele programa pequeno, mas poderoso, que aparece pouco antes do sistema iniciar, permitindo que você escolha o que carregar. Embora muitas vezes passe despercebido, seu papel é crucial para iniciar o sistema operacional e transferir o controle para o kernel sem problemas.

No mundo da inicialização de PCs, o GRUB tornou-se o padrão de facto devido ao seu poder e flexibilidade. Nascido no âmbito do projeto GNU, é agora o gerenciador de inicialização mais difundido no GNU/Linux , compatível com uma ampla gama de arquiteturas e sistemas de arquivos, fácil de usar para iniciantes e, ao mesmo tempo, uma ferramenta multifuncional para aqueles que gostam de ajustar cada detalhe do processo de inicialização.

O que é o GNU GRUB e para que ele serve?

O GNU GRUB (GNU Grand Unified Bootloader) é um gerenciador de inicialização múltipla: um software que o firmware (BIOS ou UEFI) executa quando o computador é ligado para selecionar e carregar um sistema operacional. Ele permite que os usuários selecionem itens de menu, passem parâmetros para o kernel, inicializem a partir da rede e até mesmo interajam com um console para solucionar problemas específicos.

É usado principalmente em distribuições GNU/Linux, embora também tenha sido usado por outros sistemas, como o Solaris em x86. Em sistemas UEFI modernos , o firmware carrega diretamente o executável GRUB localizado na partição do sistema EFI (ESP) , desde que esteja registrado na NVRAM; em BIOS/MBR, o GRUB ocupa os setores iniciais do disco e continua a partir daí.

Além do menu típico, o GRUB está em conformidade com a especificação Multiboot, o que significa que ele pode inicializar kernels compatíveis sem problemas . E uma vez que o kernel esteja na memória, o GRUB transfere o controle e sua tarefa está concluída, o que não é pouca coisa.

Tela de opções de inicialização do GRUB

Ficha técnica e dados do projeto

O GRUB faz parte do ecossistema GNU e é distribuído como software livre sob a licença GNU GPL v3 ou posterior . Seu desenvolvimento é de código aberto, com um repositório oficial, sistema de rastreamento de bugs, site e uma comunidade muito ativa.

Ele é escrito principalmente em C e assembler e roda em diversas plataformas: IA-32, x86-64 e PowerPC, entre outros. A ramificação atual é o GRUB 2 (uma reimplementação do histórico “GRUB Legacy”). A última versão estável lançada é 2.12 (20 de dezembro de 2023). Se quiser verificar sua versão local, execute: grub-install --version e você verá a cadeia correspondente.

Um pouco de história e evolução

O GRUB teve início como uma iniciativa de Erich Stefan Boleyn no contexto do GNU Hurd e do microkernel Mach. Para resolver a disparidade nos métodos de inicialização, foi criada a Especificação Multiboot, que facilitou a comunicação entre os carregadores de inicialização e os kernels. Em 1999, Gordon Matzigkeit e Yoshinori Okuji lideraram a sua adoção como um pacote oficial do Projeto GNU.

Por volta de 2002, um grupo de pesquisadores japoneses iniciou o projeto PUPA (Preliminary Universal Programming Architecture) com o objetivo de reescrever o GRUB para torná-lo mais robusto e modular. Esse esforço resultou no GRUB 2 , enquanto a versão anterior ficou conhecida como "GRUB Legacy" (cuja versão 0.97 foi atualizada pela última vez em 2005). A partir de 2007, diversas distribuições migraram para o GRUB 2 e, no final de 2009, a grande maioria o incluía por padrão.

Diagrama do processo de inicialização do GRUB

Como inicializar seu computador com GRUB (BIOS e UEFI)

Ao ligar o PC, o firmware executa suas verificações (RAM, relógio, dispositivos, ordem de inicialização) e procura um bootloader. Em sistemas com BIOS/MBR, o controle é passado para o Master Boot Record (MBR), os 512 bytes iniciais do discoO GRUB foi dividido em estágios: Estágio 1 (código mínimo em MBR), Estágio 1.5 (em setores posteriores, fazendo a ponte para entender os sistemas de arquivos) e Estágio 2 (menus e funções avançadas). No GRUB 2, esse "1.5" não existe mais; agora existem imagens específicas, como boot.img, core.img e módulos (*.mod) que são combinados de acordo com a instalação.

  Kernel Liquorix no Linux: kernel otimizado para desktop e jogos.

Em UEFI, o processo é mais direto: o firmware executa o binário GRUB EFI da partição EFI , desde que esteja corretamente instalado e registrado. Em ambos os casos, o GRUB apresenta um menu ou console, carrega o kernel escolhido e, em seguida, transfere a execução para ele.

Especificação e compatibilidade de inicialização múltipla

O GRUB implementa o Multiboot, permitindo que kernels compatíveis sejam inicializados sem "truques" específicos. Além disso, para sistemas que não o suportam (como Windows ou DOS ), ele oferece o carregamento em cadeia, direcionando o kernel para o primeiro setor da partição onde seus carregadores de inicialização residem.

Sua compatibilidade com sistemas de arquivos é extensa: Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS , entre outros. Ele também pode ler volumes LVM e arrays RAID, uma vantagem significativa quando a estrutura de armazenamento é complexa.

Recursos e funções em destaque

  • Interface do menu Terminal interativo configurável e altamente flexível, com preenchimento automático de tabulações e atalhos no estilo Bash.
  • Apoio de LBA (Endereçamento de Bloco Lógico) para superar os limites clássicos do BIOS e ler além de 1024 cilindros.
  • Capacidade de inicialização de rede (PXE/TFTP) e terminais remotos, úteis em cenários de gerenciamento centralizado.
  • Descompressão automática e reconhecimento de múltiplos formatos executáveis.
  • Armazenamento persistente de variáveis ​​com salvar_env/carregar_env y grub-editenv (quando a plataforma permitir).
  • Toda a detecção de RAM, independência da geometria do disco e mecanismos de busca por rótulos e UUID.
  • Suporte gráfico para menus e fundos, e um design modular que mantém núcleo.img pequeno e carrega módulos conforme necessário.

Terminologia chave: dispositivos, partições e caminhos

O GRUB nomeia discos e partições à sua maneira. O primeiro disco geralmente é (hd0), a primeira partição (hd0,1) No GRUB 2 (lembre-se: no GRUB 2, a numeração começa em 1; no Legacy, começa em 0). Para se referir a um disco inteiro, a partição é omitida: (hd0).

Para indicar arquivos, o dispositivo é combinado com o caminho: (hd0,1)/ruta/al/archivo. Ele também suporta listas de bloqueio (listas de blocos) quando é necessário indicar a localização exata no disco de um arquivo que não é visível como tal no sistema de arquivos, por exemplo (hd0,1)+1 para o primeiro setor de uma partição, útil com chainloader +1.

O "sistema de arquivos raiz" no GRUB não é o mesmo que o "/" no Linux. É simplesmente a partição raiz da qual o GRUB lê seus arquivos ; uma vez que o kernel do Linux assume o controle, ele define sua própria raiz real, e todo o resto no GRUB se torna irrelevante.

Interfaces GRUB

O GRUB oferece três visualizações principais. A mais familiar é o menu , com entradas pré-configuradas; você pode navegar com as teclas de seta, inicializar com Enter, editar uma entrada com "e" ou abrir o console com "c".

O editor de entrada permite modificar linhas em tempo real (adicionar com "o/O", editar com "e", excluir com "d") e, se tudo estiver correto, inicializar com "b". É ideal para testar parâmetros do kernel sem alterar arquivos.

O console é o modo mais poderoso: ele oferece suporte a preenchimento automático contextual, edição de atalhos e todos os comandos internos do GRUB para localizar discos, carregar o kernel/initrd ou executar o chainloading. Se o arquivo de configuração estiver ausente ou corrompido, o GRUB o direcionará para este console para que você possa resolver o problema manualmente.

Mensagens de erro comuns

Os erros podem aparecer na fase inicial (mais limitados) ou durante o carregamento de menus e módulos (mais descritivos). Abaixo, segue uma compilação de códigos representativos que o GRUB pode exibir, parafraseados para maior clareza :

  • 1: Caminho inválido ou não absoluto; 2: Tipo de arquivo inválido (não é um arquivo regular); 3–4: Dados/cabeçalho corrompidos durante a descompactação; 5: tabela de partição danificada ou inválido.
  • 6: Incompatibilidade Stage1/Stage2; 7: Carregamento abaixo de 1 MB não é suportado; 8: Tentativa de inicialização sem carregar um kernel; 9: Falha de inicialização desconhecida.
  • 10: Recursos de inicialização múltipla não suportados; 11: Dispositivo não reconhecido; 12: Dispositivo inválido; 13: Formato executável não suportado.
  • 14: O sistema de arquivos impede que o arquivo inteiro seja lido; 15: arquivo não encontrado; 16: Estrutura inconsistente do sistema de arquivos.
  • 17: Não é possível montar a partição selecionada; 18: Cilindro fora do intervalo suportado pelo BIOS (típico em unidades mais antigas); 19: Initrd antes do kernel.
  • 20: Módulos antes de um kernel multiboot; 21: O disco selecionado não existe; 22: Partição inexistente; 23: Erro ao interpretar um número.
  • 24: Acesso a um bloco fora da partição; 25: Erro de leitura de disco; 26: Muitos links simbólicos; 27: Comando desconhecido.
  • 28: Item não cabe na memória; 29: Erro de gravação no disco; 30: Argumento inválido; 31: Arquivo não alinhado ao setor (ReiserFS, use sem cauda).
  • 32: Autenticação necessária; 33: Dispositivo serial não configurado; 34: Nenhum setor livre para o Estágio 1.5 após o MBR (conflito com o EZ-BIOS ou partição iniciando muito cedo).
  Depuração de memória no Linux: principais ferramentas e técnicas

Comandos básicos do GRUB

No console, você pode executar comandos interativos muito úteis. Por exemplo, boot inicia o último carregado (kernel ou chainloader) e chainloader <archivo> carrega um setor ou arquivo de uma cadeia; o atalho típico para Windows é chainloader +1.

displaymem exibe o uso da memória de acordo com o BIOS, o que é útil se você não tiver certeza da RAM detectada. Com initrd <archivo> você especifica a imagem inicial do disco RAM necessária para o kernel.

Para instalar no MBR a partir do console GRUB Legacy, você usou install com as rotas para estágio 1, estágio 2 e, opcionalmente, para o arquivo de configuração. Hoje no GRUB 2, a partir do sistema, é normal usar grub-install e regenerar o menu com update-grub/grub2-mkconfig.

Comando kernel especifica o binário do kernel e seus parâmetros, por exemplo: kernel /vmlinuz root=/dev/sda5Geralmente é precedido por root (hdX,Y) o rootnoverify para definir a partição da qual o GRUB fará a leitura.

Arquivos de configuração e diretivas

No GRUB Legacy o menu residia em /boot/grub/menu.lst o grub.conf, com diretivas como color, default, fallback, hiddenmenu, password, timeout, splashimage e blocos title com as ordens para cada sistema.

Um exemplo clássico (parafraseado) incluiria uma seção Linux com root (hd0,2), kernel com a sua parâmetro raiz=/…e boot; e outro para Windows com rootnoverify (hd0,1) y chainloader +1.

No GRUB 2, o arquivo gerado automaticamente é /boot/grub/grub.cfg. Não é recomendado editá-lo manualmente; em vez disso, ele é ajustado /etc/default/grub (valores como GRUB_TIMEOUT, GRUB_DEFAULT, etc.) e entradas personalizadas são adicionadas em /etc/grub.d/40_custom. Então é executado update-grub o grub2-mkconfig para regenerar o menu.

Principais diferenças entre GRUB Legacy e GRUB 2

  • O arquivo de configuração foi de menu.lst/grub.conf a grub.cfg, com sintaxe e comandos renovados e geração automática por meio de grub-mkconfig.
  • Numeração de partição começa em 1 no GRUB 2 (no Legacy começava em 0).
  • Persistência de variáveis ​​com save_env/load_env em algumas configurações.
  • Melhor detecção de rotas e pesquisar por UUID/tags; mais sistemas de arquivos suportados.
  • Leitura direta de LVM e RAID.
  • Gráficos de terminal e menu, e imagens reorganizadas: o estágio 1.5 foi removido; boot.img, core.img e módulos dinâmicos (*.mod).

Segurança e proteção com GRUB

Um gerenciador de inicialização mal protegido é uma peneira. Se alguém com acesso físico puder editar parâmetros do kernel ou executar uma entrada diferente, isso efetivamente desativa suas medidas de segurança . É por isso que é recomendável proteger o GRUB com senhas e implementar as melhores práticas.

Estabelecer um senha forte para limitar modificações de entrada ou acesso ao console. No GRUB 2, use nomes de usuário e senhas com grub-mkpasswd-pbkdf2 e configurar as regras correspondentes nos scripts de /etc/grub.d/.

Inclui também criptografia de disco usando LUKS , de forma que mesmo se alguém roubar o computador, não conseguirá ler os dados. Além disso, garante que as políticas de senha do sistema sejam rigorosas para reduzir ataques de força bruta.

Gerencie seu histórico de logs com sabedoria : aqueles que fornecem pistas para um invasor devem ser minimizados ou centralizados com controles de acesso; aqueles que ajudam a auditar tentativas maliciosas devem ser agregados e analisados ​​em um local seguro.

Para detectar outros sistemas instalados e gerar entradas automaticamente, instale os-proberIsso economizará seu tempo e evitará erros ao recriar o menu.

  Como ativar a Inicialização Segura após uma atualização da BIOS

Instalação e manutenção

Se você não instalou o GRUB durante a instalação da sua distribuição, poderá fazê-lo mais tarde. No GRUB 2, no sistema, execute sudo grub-install /dev/sdX (substitua pelo seu disco) e então sudo update-grub o sudo grub2-mkconfig -o /boot/grub/grub.cfgVocê verá o menu na próxima inicialização.

Em um console GRUB Legacy, o procedimento clássico é indicar a raiz e executar a instalação: root (hd1,0) seguido de setup (hd1,0) para a primeira partição do segundo disco, ou setup (hd1) se você apontar para o MBR desse segundo disco.

Editar diretamente /boot/grub/grub.cfg Isso não é uma boa ideia no GRUB 2, mesmo que seja tecnicamente possível. A rota recomendada é mudar /etc/default/grubusar /etc/grub.d/40_custom para conteúdo próprio e regeneração.

Perguntas práticas e atalhos úteis

Como saber qual é a partição de boot em /dev/sda? Em sistemas BIOS/MBR: sudo fdisk -l /dev/sda (veja o asterisco para “Boot”). Em GPT/UEFI: lsblk -o NAME,FSTYPE,PARTTYPE,PARTFLAGS,MOUNTPOINT e procure a partição EFI (FAT32, digite EF00/flags esp). Também sudo efibootmgr -v exibe as entradas de inicialização gravadas.

Como obtenho o UUID de uma partição? Com blkid o lsblk -f. Por exemplo: sudo blkid /dev/sda2 retorna seu UUID e outros metadados.

Como faço para que o GRUB 2 espere 10 segundos antes de inserir a entrada padrão? ajustar /etc/default/grub com GRUB_TIMEOUT=10 (e, se aplicável, GRUB_TIMEOUT_STYLE=menu) e executa sudo update-grub o grub2-mkconfig.

Comandos do GRUB Legacy para instalar na primeira partição do segundo disco? Abra o console e execute: root (hd1,0) e, em seguida, setup (hd1,0). Se você quisesse o MBR, seria setup (hd1).

Etapas para alterar a configuração do GRUB 2? 1) Editar /etc/default/grub (por exemplo., GRUB_DEFAULT, GRUB_TIMEOUT), 2) adicionar entradas em /etc/grub.d/40_custom se precisar deles, 3) regenere com update-grub/grub2-mkconfig, 4) reinicie e teste.

Onde colocar menus personalizados no GRUB 2? En /etc/grub.d/40_custom (ou arquivos próprios em /etc/grub.d/ com as devidas permissões). Nunca edite manualmente /boot/grub/grub.cfg exceto em caso de emergência.

Onde as entradas foram armazenadas no GRUB Legacy? En /boot/grub/menu.lst o grub.conf, de acordo com a distribuição.

Como acesso o console do GRUB pelo menu? Pressione a tecla "c" no GRUB 2 ou Legacy. Para editar uma entrada específica, pressione "e". Ambos os atalhos são muito úteis quando você precisa diagnosticar problemas rapidamente.

Exemplos de opções comuns

Seleção de inicialização padrão: GRUB_DEFAULT=0 o primeiro inning começa; com GRUB_DEFAULT=saved lembra a última configuração utilizada. Após a alteração, gere a configuração novamente.

Tempo de espera: GRUB_TIMEOUT=4 ajusta o atraso do menu; com 0 começa sem pausar; em alguns cenários você pode ocultar o menu com GRUB_TIMEOUT_STYLE=hidden para um começo mais limpo.

Atualização do menu: no Debian/Ubuntu e derivados, sudo update-grub; em outros, sudo grub2-mkconfig -o /boot/grub/grub.cfg. Assegure-se de ter os-prober instalado se você quiser detectar outros sistemas automaticamente.

Embora o GRUB também apareça em contextos fora do GNU/Linux, lembre-se de que ele não é um serviço de suporte. Se o seu problema for específico do Windows, a solução mais prática é procurar fóruns dedicados a esse sistema para obter ajuda especializada.

O GRUB evoluiu de um simples menu de inicialização para um verdadeiro ambiente de pré-sistema, capaz de inicializar múltiplos sistemas operacionais, gerenciar discos complexos e ajudar na recuperação do sistema com apenas alguns comandos. Com a configuração adequada e algumas medidas de segurança (senhas do GRUB, criptografia LUKS, políticas de chaves bem gerenciadas e registros de logs), você terá um processo de inicialização robusto, flexível e, acima de tudo, controlado.

Kit de inicialização UEFI
Artigo relacionado:
UEFI Bootkit: Bootkitty no Linux e o legado do BlackLotus