Partição /boot a 100% no Debian ou Ubuntu? Como Limpar Kernels Antigos com Segurança e Automatizar a Manutenção

Partição /boot a 100% no Debian ou Ubuntu? Como Limpar Kernels Antigos com Segurança e Automatizar a Manutenção

O Pânico da Partição /boot a 100%: Um Clássico da Administração Linux

Entras no teu servidor de produção com Debian GNU/Linux ou Ubuntu para fazeres as atualizações habituais de segurança. Disparas o comando de rotina apt update && apt upgrade -y.

A meio do processo, o terminal para de repente e cospe um ecrã vermelho cheio de erros:

update-initramfs: Generating /boot/initrd.img-6.1.0-28-amd64
cpio: write error: No space left on device
dpkg: error processing package linux-image-6.1.0-28-amd64 (--configure):
 installed linux-image-6.1.0-28-amd64 package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 linux-image-6.1.0-28-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

Fazes a verificação do espaço em disco com o comando df -h:

Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p2  1.8T  120G  1.6T   7% /
/dev/nvme0n1p1  488M  488M     0 100% /boot

O BLOQUEIO RECURSIVO DO DPKG COM A /BOOT CHEIA

  • A Partição /boot Está Cheia a 100% (0 Bytes Disponíveis)
  • O APT Tenta Atualizar o Kernel: Invoca o update-initramfs
  • O Kernel Tenta Gravar o Novo Initrd → ERRO DE DISCO CHEIO!
  • O DPKG Entra num Estado Bloqueado de Erro: Não te deixa fazer apt install → Travado pelo pacote incompleto!
  • Não te deixa fazer apt remove → Travado por scripts de pós-remoção!
  • O apt -f install falha → Volta a tentar gravar o initrd e cai!

O teu disco principal tem mais de 1.5 Terabytes de espaço livre, mas como a pasta /boot foi configurada numa partição isolada de 500MB durante a instalação do servidor, todo o gestor de pacotes do sistema operativo fica paralisado.

Se o servidor for reiniciado neste momento exato, corres o risco de a máquina não arrancar porque o novo kernel ficou gravado apenas pela metade.

No nosso serviço de alojamento gerido e nas intervenções de manutenção contínua, resolvemos estes bloqueios a frio e configuramos regras automáticas para garantir que a tua partição /boot se mantém sempre limpa.


O Que Está Dentro da /boot: Porque os Ficheiros se Acumulam

Para resolveres esta falha em segurança, precisas de saber o que guarda cada versão do kernel instalada no teu sistema:

ANATOMIA DOS FICHEIROS DE UMA VERSÃO DO KERNEL

  • Conjunto Completo de um Kernel: linux-image-6.1.0-25-amd64 (~90MB Total) vmlinuz-6.1.0-25-amd64 (~8MB - Binário Comprimido do Kernel) initrd.img-6.1.0-25-amd64 (~65MB - Disco RAM Inicial de Arranque)
  • System.map-6.1.0-25-amd64 (~6MB - Tabela de Símbolos do Sistema) config-6.1.0-25-amd64 (~260KB - Opções de Compilação)

Muitos fornecedores de servidores dedicados criam a partição /boot com apenas 512MB. Como cada kernel ocupa quase 90MB:

  • Kernel 1 (Instalação Inicial): 85MB
  • Kernel 2 (Primeira Atualização): 85MB
  • Kernel 3 (Atualização Trimestral): 85MB
  • Kernel 4 (Correção de Segurança): 85MB
  • Kernel 5 (Kernel Atual Ativo): 85MB
  • Kernel 6 (Nova Atualização): Falha a meio! A partição bate nos 100%!

O Método Seguro em 5 Passos: Como Desbloquear o DPKG

Nunca tentes resolver o problema com o comando irresponsável rm -rf /boot/*! Se fizeres isso, apagas o kernel que está a correr e a configuração do GRUB, transformando um simples problema de espaço num servidor inoperacional.

Segue este procedimento testado e seguro:

1. Vê Qual é o Kernel que Estás a Correr Agora

Antes de tocares em qualquer ficheiro, confirma qual é o kernel ativo na memória RAM do teu servidor:

# Inspeciona a versão exata do kernel em execução
uname -r

A consola vai devolver algo como:

6.1.0-25-amd64

REGRA DE OURO: Não podes NUNCA apagar o kernel indicado pelo comando uname -r.

2. Lista os Pacotes de Kernel Instalados

Inspeciona o que está registado no sistema de pacotes:

# Lista todos os pacotes de imagem e cabeçalhos de kernel
dpkg -l | grep -E "linux-image|linux-headers"

Procura versões antigas marcadas com ii (instaladas) que sejam mais velhas do que a versão que estás a correr (por exemplo, linux-image-6.1.0-20-amd64 e linux-image-6.1.0-21-amd64).

INVENTÁRIO E DECISÃO DE REMOÇÃO DE KERNELS

  • Nome do Pacote
  • Estado O Que Fazer
  • linux-image-6.1.0-20-amd64 ii (Instalado) → REMOVER (Antigo e Dispensável) linux-image-6.1.0-21-amd64 ii (Instalado) → REMOVER (Antigo e Dispensável) linux-image-6.1.0-25-amd64 ii (Instalado) → GUARDAR! (É o que tens ativo!) linux-image-6.1.0-28-amd64 iF (Incompleto) → REPARAR DEPOIS DE TER ESPAÇO!

3. Liberta Espaço Temporário (A Válvula de Socorro)

Como o gestor dpkg precisa de espaço livre em disco até para conseguir desinstalar programas, temos de retirar manualmente um ficheiro initrd antigo da pasta /boot:

# Cria uma pasta temporária de socorro no disco principal
mkdir -p /var/tmp/socorro-boot

# Move o ficheiro initrd de um kernel ANTIGO que já não usas
mv /boot/initrd.img-6.1.0-20-amd64 /var/tmp/socorro-boot/

Este comando liberta imediatamente cerca de 70MB a 90MB na tua partição /boot!

4. Remove os Kernels Antigos com o DPKG

Agora que o sistema tem espaço para trabalhar, usa o comando dpkg --purge para remover os pacotes antigos e atualizar a base de dados:

# Remove o pacote antigo e elimina os ficheiros residuais
dpkg --purge linux-image-6.1.0-20-amd64 linux-headers-6.1.0-20-amd64

Repete o mesmo comando para outras versões antigas que já não tenham utilidade.

5. Repara o Estado do APT e Atualiza o GRUB

Com mais de 150MB livres na partição /boot, já podes mandar o APT concluir a instalação do novo kernel que tinha falhado:

# Corrige dependências incompletas e finaliza a instalação pendente
apt-get -f install

# Reconfigura os pacotes pendentes
dpkg --configure -a

# Atualiza os menus de arranque do GRUB
update-grub

Confirma o estado do espaço no disco:

df -h /boot

Vais ver a ocupação descer para uns saudáveis 40%. Podes agora apagar a pasta de socorro com rm -rf /var/tmp/socorro-boot.


Como Automatizar a Limpeza e Evitar Que Volte a Acontecer

Resolver o problema manualmente uma vez faz parte da vida de qualquer administrador. Deixar que aconteça uma segunda vez é descuido. Podes automatizar este processo facilmente no teu Debian ou Ubuntu.

1. Ativa a Limpeza nos Ficheiros de Atualização Automática

Se usas o pacote unattended-upgrades, abre o ficheiro /etc/apt/apt.conf.d/50unattended-upgrades e confirma que estas opções estão ativas:

// Remove automaticamente pacotes de kernel não utilizados
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";

// Elimina dependências antigas sem intervenção manual
Unattended-Upgrade::Remove-Unused-Dependencies "true";

2. Cria um Agendador Semanal no Systemd

Para garantires que o teu servidor corre uma limpeza periódica mesmo que não uses atualizações automáticas, cria um timer com o systemd:

# /etc/systemd/system/limpeza-kernel.service
[Unit]
Description=Limpeza Semanal Automática de Kernels Antigos
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/apt-get autoremove --purge -y
# /etc/systemd/system/limpeza-kernel.timer
[Unit]
Description=Executa a limpeza de kernels todos os domingos

[Timer]
OnCalendar=Sun *-*-* 03:30:00
Persistent=true

[Install]
WantedBy=timers.target

Ativa o serviço no teu terminal:

systemctl daemon-reload
systemctl enable --now limpeza-kernel.timer

CICLO CONTÍNUO DE LIMPEZA AUTOMÁTICA DA /BOOT

  • O Timer Semanal do Systemd Dispara → Corre: apt-get autoremove –purge -y
  • O APT Valida as Regras do Sistema: Kernel em execução (uname -r) → PROTEGIDO!
  • Último kernel instalado → PROTEGIDO!
  • Kernel de salvaguarda anterior → PROTEGIDO!
  • Kernels mais velhos obsoletos → ELIMINADOS AUTOMATICAMENTE!
  • A Partição /boot Mantém-se Sempre Confortavelmente a 40% de Ocupação!

Com este procedimento simples e automatizado, garantes que o teu servidor nunca mais bloqueia durante atualizações de segurança. Aliando esta postura preventiva à nossa consultoria técnica, manténs os teus sistemas operacionais sempre atualizados, rápidos e sem paragens inesperadas. Podes ainda consultar rotinas comunitárias no GitHub para enriquecer a tua gestão de servidores.

No terreno, em conjunto com a experiência acumulada na Webxtek Studio, aplicamos exatamente estes padrões operacionais em setores exigentes como especialistas em devops e arquitetura cloud e provedores de cloud computing e iaas. Quando alinhas a tua estrutura através de alojamento gerido para websites e aplicações e consultoria técnica antes de construir, transformas boas práticas técnicas numa vantagem competitiva real e mensurável para o teu negócio.

[+] [ INDEX_DIRECTORY ] 19 tópicos ▼
[ SYSTEM.FAQ ]

Perguntas Frequentes

Porque é que a partição /boot enche sozinha com o tempo no Debian e Ubuntu?

As atualizações automáticas de segurança do sistema operativo instalam regularmente novas versões do kernel (`linux-image-*`). Cada versão nova grava na pasta `/boot` a imagem do kernel comprimida (`vmlinuz`) e o disco RAM inicial (`initrd.img`), ocupando entre 70MB e 90MB por versão. Se os kernels antigos não forem eliminados, uma partição `/boot` comum de 500MB enche por completo ao fim de 5 atualizações.

O que acontece se a pasta /boot ficar a 100% durante a execução do comando apt upgrade?

O script `update-initramfs` tenta gravar a nova imagem de arranque mas falha com o erro `No space left on device`. O gestor de pacotes `dpkg` entra num estado de erro bloqueante (`half-installed`), impedindo-te de instalar, atualizar ou até desinstalar qualquer programa até resolveres a falta de espaço.

Porque é um erro gravíssimo apagar ficheiros da pasta /boot à mão com rm -rf?

Se apagares os ficheiros à força com o comando `rm`, libertas espaço no disco mas a base de dados interna do sistema (`/var/lib/dpkg/status`) continua convencida de que o pacote está instalado. Quando tentares correr o `apt`, o sistema dispara scripts de remoção que procuram os ficheiros que apagaste, provocando erros ainda mais difíceis de reparar.

Como podes automatizar a remoção de kernels antigos para que isto nunca mais aconteça?

Podes configurar o ficheiro `/etc/apt/apt.conf.d/50unattended-upgrades` ativando a opção `Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";` ou criar um timer no systemd que corre semanalmente o comando `apt-get autoremove --purge -y`, garantindo que a partição `/boot` se mantém sempre abaixo dos 50% de ocupação.

> INICIAR_PROJETO

Precisa de um website que transmita confiança, apareça na pesquisa e dê mais força à sua presença digital? Comece a conversa aqui.