Quando o Linux Nao Inicia - Kernel Panic e Modo de Emergencia
O Que Voce Vai Aprender
- O significado e a diferenca entre uma tela congelada de
kernel panic, o prompt(initramfs)e o modo de emergencia - Como fazer triagem de qual estagio do boot realmente falhou
- O caminho de recuperacao mais rapido: iniciar um kernel antigo pelo GRUB, reparar
fstabe executarfsck
Conclusao (o modelo de triagem)
O que fazer depende inteiramente de onde o boot parou. Verifique ate onde chegou, de cima para baixo.
grub rescue>/grub>→ parou no bootloader (configuracao ou modulos do GRUB perdidos)- Prompt
(initramfs)→ o filesystem raiz nao pode ser montado (espaco de usuario inicial) Kernel panic - not syncing: ...→ o kernel parou irrecuperavelmente- Shell de emergencia / resgate → o espaco de usuario foi alcancado mas o boot falhou no meio (geralmente
fstab)
Premissas (ambiente alvo)
- Distro: Ubuntu / familia Debian (systemd e GRUB 2)
- Voce pode ver a tela via console fisico ou console serial / VNC em cloud
- A recuperacao precisa de root (o shell de emergencia roda como root)
Em Qual Estagio o Boot Parou?
Conclusao: Leia o texto na tela para identificar o estagio.
grubsignifica bootloader,(initramfs)significa falha na montagem do root,Kernel panicsignifica que o kernel parou, eemergency modesignifica uma falha apos o espaco de usuario iniciar.
O boot do Linux segue aproximadamente esta ordem. Identificar onde parou e o primeiro passo.
| Estagio | Sinal na tela | Causa comum |
|---|---|---|
| 1. Bootloader | grub rescue> / grub> |
Configuracao do GRUB ou /boot perdidos, mudancas de particao |
| 2. Espaco de usuario inicial | Prompt (initramfs) |
Dispositivo raiz nao encontrado, corrupcao de filesystem |
| 3. Kernel | Kernel panic - not syncing: |
Root nao monta, driver ausente, initramfs quebrado |
| 4. systemd | You are in emergency mode / rescue mode |
fstab ruim, montagem obrigatoria falhou, servico falhou |
Iniciar um kernel antigo vale a pena tentar primeiro
Se a maquina parou de iniciar logo apos uma atualizacao de kernel, simplesmente iniciar o kernel anterior em "Advanced options" frequentemente resolve (veja abaixo).
O Que e um Kernel Panic?
Conclusao: Um kernel panic e o kernel parando de proposito apos detectar um erro irrecuperavel. E mais frequentemente causado por nao conseguir montar o filesystem raiz, ou um driver essencial ausente ou initramfs quebrado.
Quando o kernel detecta uma inconsistencia interna fatal, ele decide que continuar corromperia dados e para deliberadamente. Isso e um kernel panic. Diferente de um crash de aplicacao, o sistema inteiro para.
Uma mensagem tipica:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Este e o sinal de que o filesystem raiz nao pode ser montado. Causas comuns:
- Um initramfs quebrado ou desatualizado apos atualizacao de kernel (falta o driver de armazenamento necessario)
- O parametro
root=do kernel aponta para um UUID / dispositivo alterado - Mudancas de armazenamento (LVM / RAID / troca de disco) deixam o root impossivel de encontrar
Uma variante diferente, Kernel panic - not syncing: Attempted to kill init!, significa que o init (systemd) morreu logo apos iniciar. Suspeite de initramfs ou filesystem raiz quebrado.
A tela de panic frequentemente rola para alem. A causa real esta nas primeiras linhas (bem no topo). Em servidores cloud leia o log do console serial; em maquinas fisicas fotografe o topo da tela.
Como Iniciar um Kernel Antigo Pelo GRUB?
Conclusao: Acesse o menu do GRUB, abra "Advanced options" e escolha o kernel anterior. Se uma atualizacao recente de kernel e a causa, isso sozinho ja permite iniciar.
Logo apos uma atualizacao de kernel, iniciar o kernel antigo e a forma mais rapida de triagem.
- Apos ligar, exiba o menu do GRUB (segure
Shift, ou pressioneEscem UEFI, se nao aparecer) - Escolha Advanced options for Ubuntu
- Selecione a versao anterior do kernel e inicie
Uma vez dentro com o kernel antigo, reconstrua o initramfs do kernel atual:
$ sudo update-initramfs -u -k all $ sudo update-grub
Editar uma entrada de boot do GRUB em tempo real
Com uma entrada selecionada, pressione e para editar seus parametros de boot no local.
- Pressione
ena entrada desejada - Mova para o final da linha que comeca com
linux(aposro quiet splash, etc.) - Adicione o parametro necessario (ex:
systemd.unit=rescue.target) - Pressione
Ctrl + XouF10para iniciar
Esta edicao e temporaria e reverte ao reiniciar. Para torna-la permanente, edite /etc/default/grub e execute update-grub.
E Se Parar no Prompt do initramfs?
Conclusao: O prompt
(initramfs)significa que o filesystem raiz nao pode ser montado. Geralmente e corrupcao de filesystem — executefsck, depoisexitpara continuar o boot.
O prompt BusyBox (initramfs) aparece quando o kernel iniciou mas nao conseguiu montar o root. Frequentemente e precedido por uma linha como:
ALERT! /dev/sda1 does not exist. Dropping to a shell!
ou uma inconsistencia de filesystem detectada. Para corrigir:
# Veja quais dispositivos de bloco sao reconhecidos (initramfs) cat /proc/partitions (initramfs) ls /dev/sd* /dev/nvme* # Verifique e repare a particao alvo (deve estar desmontada) (initramfs) fsck /dev/sda1 # Apos o reparo, continue o boot (initramfs) exit
Quando fsck perguntar se deve reparar, responda y como regra. Se houver muitos prompts, use fsck -y /dev/sda1 para aceitar todos. Apos terminar, exit retorna a sequencia normal de boot.
Nunca execute fsck em um filesystem montado — ha risco de corrupcao. Execute-o a partir do estagio (initramfs), do modo de emergencia enquanto o root esta somente leitura, ou de um live USB.
Qual a Diferenca Entre Modo de Resgate e Emergencia?
Conclusao:
rescue.targete semelhante a single-user com filesystems locais montados e servicos basicos, enquantoemergency.targetmonta apenas o root como somente leitura com quase nada rodando. Um fstab ruim leva voce ao modo de emergencia automaticamente.
O systemd tem dois targets de recuperacao. Eles diferem no que voce pode fazer.
| Target | Montagens | Servicos | Uso |
|---|---|---|---|
rescue.target |
Filesystems locais | Conjunto minimo ativo | Semelhante a single-user. Trabalho de recuperacao normal |
emergency.target |
Apenas root, somente leitura | Quase nenhum | Mais minimo. Ultimo recurso quando fstab esta quebrado |
Entrar em modo de resgate / emergencia de proposito
No editor do GRUB (e), adicione ao final da linha linux:
# Modo de resgate (recomendado; suficiente para a maioria das recuperacoes) systemd.unit=rescue.target # Modo de emergencia (mais minimo) systemd.unit=emergency.target
Atalhos (rescue / emergency / os antigos single 1) tambem funcionam, mas a forma systemd.unit= e confiavel. Inicie com Ctrl + X e voce chega em um shell root apos digitar a senha.
Tornar root gravavel no modo de emergencia
No modo de emergencia, o root geralmente esta somente leitura, entao voce nao pode editar arquivos. Remonte como gravavel:
$ mount -o remount,rw /
E Se um fstab Ruim Me Jogou no Modo de Emergencia?
Conclusao: Um erro em
/etc/fstabou uma referencia a um dispositivo ausente para o boot e leva voce ao modo de emergencia. Corrija a linha ofensora, valide commount -ae reinicie.
A razao mais comum para cair no modo de emergencia e /etc/fstab. Um UUID errado em uma nova montagem, um dispositivo desconectado ou um erro de digitacao deixa o systemd esperando por uma montagem ate desistir.
Recuperacao:
# 1. Remonte root como gravavel $ mount -o remount,rw / # 2. Encontre a montagem com falha no log deste boot $ journalctl -xb | grep -i -E 'mount|fstab|dependency' # 3. Corrija o fstab (voce pode comentar temporariamente a linha ruim) $ nano /etc/fstab # 4. Recarregue a configuracao e valide todas as entradas $ systemctl daemon-reload $ mount -a
Se mount -a completar sem erros, o fstab esta saudavel. Qualquer erro significa que aquela linha ainda tem problema.
Prevencao: adicione a opcao nofail a montagens nao essenciais para que um dispositivo ausente nao pare o boot. Util para discos externos e montagens de rede.
UUID=xxxx /mnt/data ext4 defaults,nofail 0 2
Como Ler o Log de Boot?
Conclusao: Apos a recuperacao, leia este boot com
journalctl -xbe o boot anterior com falha comjournalctl -b -1. Comece pelas linhas vermelhas (unidade com falha) eDependency failed.
Uma vez inicializado, confirme o que aconteceu para prevenir repeticao.
# O boot atual completo (-x adiciona texto explicativo) $ journalctl -xb # O boot anterior (com falha) $ journalctl -b -1 # Listar apenas as unidades com falha $ systemctl --failed
Linhas como Dependency failed for ... ou Failed to mount ... apontam para a causa direta da parada. Se erros de I/O de disco estiverem misturados, suspeite de falha de hardware tambem.
Ler o boot anterior (-b -1) precisa de journal persistente. Onde /var/log/journal/ esta ausente, logs desaparecem ao reiniciar. Torne-o persistente primeiro: sudo mkdir -p /var/log/journal && sudo systemctl restart systemd-journald.
O Que Nao Fazer
Conclusao: Executar fsck em um filesystem montado, reinstalar antes de identificar a causa e perder o topo da tela de panic pioram as coisas. Priorize as linhas do topo do log e a identificacao do estagio.
- Executar
fsckem um filesystem montado → corrupcao. Sempre faca somente leitura / desmontado - Julgar pela ultima linha da tela de panic → a causa real esta no topo; atencao ao scroll
- Reinstalar o SO sem fazer triagem → elimina casos corrigiveis com uma linha de fstab ou kernel antigo
- Deixar a linha ruim do
fstabno lugar → voce cai no modo de emergencia em todo reboot - Reiniciar sem journal persistente → o log da falha se perde e a causa vira um misterio