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 installfalha → 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 ▼
- O Pânico da Partição /boot a 100%: Um Clássico da Administração Linux
- O Que Está Dentro da /boot: Porque os Ficheiros se Acumulam
- O Método Seguro em 5 Passos: Como Desbloquear o DPKG
- 1. Vê Qual é o Kernel que Estás a Correr Agora
- 2. Lista os Pacotes de Kernel Instalados
- 3. Liberta Espaço Temporário (A Válvula de Socorro)
- 4. Remove os Kernels Antigos com o DPKG
- 5. Repara o Estado do APT e Atualiza o GRUB
- Como Automatizar a Limpeza e Evitar Que Volte a Acontecer
- 1. Ativa a Limpeza nos Ficheiros de Atualização Automática
- 2. Cria um Agendador Semanal no Systemd
- Autor
- Perguntas Frequentes
- Porque é que a partição /boot enche sozinha com o tempo no Debian e Ubuntu?
- O que acontece se a pasta /boot ficar a 100% durante a execução do comando apt upgrade?
- Porque é um erro gravíssimo apagar ficheiros da pasta /boot à mão com rm -rf?
- Como podes automatizar a remoção de kernels antigos para que isto nunca mais aconteça?
- Nós Relacionados
- Sequência do Caminho
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.
[ RELATED_NODES ]
> 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.