Programação Por Equipe DevBras

Capa do artigo: Personalizar o GRUB sem quebrar o boot: tempo, sistema padrão e volta segura

Personalizar o GRUB sem quebrar o boot: tempo, sistema padrão e volta segura

Mude o tempo do menu, o sistema padrão e a última escolha do GRUB editando o arquivo certo, regenere a configuração e saiba voltar atrás se a máquina não subir.

O notebook tem Ubuntu e Windows. Toda manhã, o menu do GRUB espera 10 segundos, sobe o Ubuntu e você, que queria o Windows para a reunião, reinicia de novo. Você edita /boot/grub/grub.cfg, funciona, e na semana seguinte uma atualização de kernel desfaz tudo. A resposta curta: a configuração que você edita fica em /etc/default/grub; depois você roda sudo update-grub (Debian e Ubuntu) ou grub2-mkconfig (Fedora e derivados) para gerar o menu de verdade.

O grub.cfg é um arquivo gerado. Ele é reescrito a cada atualização de kernel. Mexer nele é como editar o HTML que o seu build gera: dura até o próximo build.

Como o GRUB monta o menu

O GRUB é o carregador de boot: o primeiro programa que roda depois do firmware e decide qual sistema iniciar. O menu que você vê vem do grub.cfg. Esse arquivo é produzido por scripts em /etc/grub.d/, que leem as variáveis de /etc/default/grub, procuram os kernels instalados e, se o os-prober estiver ativo, detectam outros sistemas, como o Windows.

Ou seja, há três camadas: variáveis (o que você muda no dia a dia), scripts geradores (que você quase nunca toca) e arquivo gerado (que você nunca edita). Quem entende isso para de achar que "o GRUB não salvou".

As variáveis que valem a pena mudar

  • GRUB_TIMEOUT: segundos de espera antes de subir a entrada padrão.
  • GRUB_TIMEOUT_STYLE: menu mostra a lista; hidden esconde e espera o tempo em silêncio; countdown mostra só a contagem.
  • GRUB_DEFAULT: a entrada padrão. Pode ser um número (começando em 0), o título da entrada ou saved.
  • GRUB_SAVEDEFAULT: com true e GRUB_DEFAULT=saved, o GRUB lembra a última escolha.
  • GRUB_CMDLINE_LINUX_DEFAULT: parâmetros passados ao kernel na entrada normal, como quiet splash.
  • GRUB_DISABLE_OS_PROBER: a partir do GRUB 2.06, o os-prober vem desligado por padrão em várias distribuições. Se o Windows sumiu do menu, defina essa variável como false.

Como mudar passo a passo

  1. Faça uma cópia datada do arquivo atual.
  2. Edite /etc/default/grub mudando uma coisa de cada vez.
  3. Regenere a configuração e leia a saída do comando.
  4. Confira as entradas geradas.
  5. Reinicie e confirme o comportamento antes da próxima mudança.

Exemplo: lembrar a última escolha e esperar 3 segundos

Primeiro, o backup:

sudo cp /etc/default/grub /etc/default/grub.bak-2026-10-17

Depois, edite o arquivo com sudo nano /etc/default/grub e deixe estas linhas assim (as demais ficam como estão):

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=3
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_DISABLE_OS_PROBER=false

O arquivo é lido como script de shell. Aspas que não fecham ou espaço em volta do = quebram a geração. Agora regenere:

# Debian, Ubuntu, Mint
sudo update-grub

# Fedora, RHEL e derivados
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Leia a saída. Ela lista os kernels encontrados e, com o os-prober ativo, uma linha indicando o Windows Boot Manager. Se o Windows não aparece aqui, não vai aparecer no menu. Para ver os títulos exatos das entradas geradas:

sudo grep -E "^(menuentry|submenu)" /boot/grub/grub.cfg

Reinicie. O menu aparece por 3 segundos; escolha o Windows uma vez e, no próximo boot, ele já vem selecionado.

Escolher o sistema só para o próximo boot

Com GRUB_DEFAULT=saved, você pode mandar a máquina subir o Windows uma única vez, direto do Linux, usando o título que o grep mostrou:

sudo grub-reboot "Windows Boot Manager (on /dev/nvme0n1p1)"
sudo reboot

O título acima é um exemplo; copie o da sua máquina. No Fedora, os comandos equivalentes têm o prefixo grub2-. E lá os parâmetros de kernel costumam ser ajustados com grubby, porque as entradas seguem o padrão BLS, em arquivos separados; confira a documentação da sua distribuição antes de editar.

O que deixar quieto

Não apague kernels antigos no primeiro dia. A entrada "Opções avançadas" guarda as versões anteriores, e elas são a sua volta quando o kernel novo não monta o disco ou não reconhece a placa de vídeo. Deixe o gerenciador de pacotes removê-los no ritmo dele.

Não copie temas ou scripts de fórum para dentro de /etc/grub.d/ sem ler. Entradas personalizadas ficam em /etc/grub.d/40_custom, e um erro ali pode impedir a geração do menu inteiro. E não esconda o menu com tempo zero se você tem dual boot: no Ubuntu, com o menu oculto, ainda dá para chamá-lo segurando Shift (BIOS) ou apertando Esc (UEFI) durante a inicialização, mas o tempo para acertar a tecla é curto.

Como voltar se a máquina não subir

Se o menu aparece mas a entrada falha, selecione a entrada e aperte e: você edita os parâmetros só para aquele boot, sem gravar nada, e inicia com Ctrl+X ou F10. Se o menu nem aparece, entre pelo pendrive de instalação no modo "experimentar" e restaure o backup a partir de um chroot (ajuste as partições para as da sua máquina):

sudo mount /dev/nvme0n1p2 /mnt
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
for d in dev proc sys; do sudo mount --bind /$d /mnt/$d; done
sudo chroot /mnt
cp /etc/default/grub.bak-2026-10-17 /etc/default/grub
update-grub
exit

Se o problema for o sistema não montar a raiz depois do GRUB, o caso é outro: veja kernel panic "Unable to mount root fs".

Erros comuns

  • Editar o grub.cfg direto. A próxima atualização de kernel apaga a mudança.
  • Esquecer de rodar update-grub. O arquivo foi salvo, o menu continua igual e você acha que não funcionou.
  • Usar GRUB_DEFAULT numérico com dual boot. Quando entra um kernel novo, a posição das entradas muda e o padrão aponta para outra coisa.
  • Apagar kernels antigos para "limpar" o menu. Some a rota de volta quando o kernel novo falha.
  • Mudar cinco coisas de uma vez. Se o boot quebrar, você não sabe qual delas causou.
  • Não guardar o arquivo anterior. A recuperação vira tentativa e erro com um pendrive.

Checklist

  • Existe uma cópia datada de /etc/default/grub.
  • As mudanças foram feitas em /etc/default/grub, não no grub.cfg.
  • O comando de regeneração rodou sem erro e listou todos os sistemas.
  • O padrão usa saved ou o título da entrada, não uma posição numérica frágil.
  • Os kernels anteriores continuam no menu de opções avançadas.
  • Você tem um pendrive de instalação à mão e sabe quais são as partições raiz e EFI.
  • A máquina foi reiniciada e testada depois de cada mudança.

Rode agora ls /etc/default/grub* na sua máquina: existe uma versão anterior do arquivo guardada ao lado, pronta para voltar se o próximo boot der errado?

Avalie este artigo

Referência: https://www.todoespacoonline.com/w/2015/06/como-personalizar-o-grub-no-ubuntu/