Limpar Imagens Antigas do Kernel em Debian/Ubuntu

5 Comentarios
Se você nunca passou pela situação apresentada hoje, leia e aprenda!

Em determinado período de tempo seu sistema operacional exibe uma mensagem como esta a seguir:

Seu disco de inicialização esta quase cheio.
Imagem: Não! Não é um tema! É realmente um MAC OS X! Isto porque deixei escapar a print-screen do momento da notificação em meu sistema operacional linux! :(

Notificação:
A atualização necessita de pelo menos [Variável Megabyte] de espaço livre no disco '/boot'. Por favor, libere pelo menos um espaço adicional de [Variável Megabyte] no disco '/boot'. Esvazie sua lixeira e remova pacotes temporários de instalações anteriores usando 'sudo apt-get clean'.

Não há espaço suficiente no disco
AHÁÁ - Agora sim! (Imagem adicionada dia 11/06/2015)

Esta mensagem esta te informando que o disco/partição de boot (/boot) esta com pouco espaço e que é necessário limpar alguns arquivos para liberar espaço para as novas atualizações.

Esta postagem contém conteúdo totalmente manual e altamente perigoso!
Imagem: Advertência. Esta postagem contém conteúdo manual e altamente perigoso!

Eu comumente sempre utilizei em torno de 200 megabytes de espaço no ponto de montagem do boot e mesmo assim recebi esta notificação após verificar as novas atualizações disponíveis para o sistema e já que não há espaço para atualizar o kernel, as atualizações não são instaladas.

Partição de boot em destaque no Monitor do Sistema. [Dispositivo: /dev/sda1 | Diretório: /boot | Formato: ext2 | Tamanho Total: 202,1 MB | Tamanho Disponível: 60,3 MB | Em Uso: 131,3 MB (68%)]
Imagem: Partição de boot em destaque no Monitor do Sistema.

O comando que lhe é sugerido (sudo apt-get clean) limpa todos os pacotes de instalações anteriores que já não são mais necessários.

Talvez o comando anterior não seja eficaz, então eu recomendo a execução de outro comando:
Nota: Os comandos a seguir devem ser executados como root!
sudo apt-get autoremove
Ao confirmar a execução do comando acima, o sistema eliminará os pacotes referentes a Kernel antigos e alguns outros, não se preocupe, todos os pacotes que serão removidos estarão visíveis em uma lista para sua informação, assim liberando espaço no disco rígido/partição.

Lendo listas de pacotes... Pronto
Construindo árvore de dependências       
Lendo informação de estado... Pronto
0 pacotes atualizados, 0 pacotes novos instalados, 0 a serem removidos e 0 não atualizados.
Saída do comando 'apt-get autoremove'

Isso pode resolver o problema de pouco espaço no /boot! Mas se mesmo assim tu continuar a receber avisos de pouco espaço no /boot, terá de resolver a parada manualmente!

 ------------------------------------------------------------------------------------------------------------------------
Nota 2: Os comandos a seguir utilizados em diretórios do sistema podem causar danos irreparáveis ao sistema se você não souber o que está a fazer ou simplesmente digitar algo errado por distração!!!
------------------------------------------------------------------------------------------------------------------------

Você pode acessar o diretório e listar o conteúdo pelo terminal e apagar a imagem do kernel antiga:
cd /boot
ls
abi-3.16.0-36-generic     grub                          System.map-3.16.0-37-generic
abi-3.16.0-37-generic     initrd.img-3.16.0-36-generic  System.map-3.16.0-38-generic
abi-3.16.0-38-generic     initrd.img-3.16.0-37-generic  vmlinuz-3.16.0-36-generic
config-3.16.0-36-generic  initrd.img-3.16.0-38-generic  vmlinuz-3.16.0-37-generic
config-3.16.0-37-generic  lost+found                    vmlinuz-3.16.0-38-generic
config-3.16.0-38-generic  System.map-3.16.0-36-generic
Como podemos ver não tão claramente, existem três imagens do kernel, 3.16.0-36, 37 e 38 (atual). Para melhor visualização no terminal utilize o comando ls -1 (Hífen e Um). Agora que já sabemos quais kernels são os mais antigos podemos apagá-los:
# rm *-36* *-37*
O comando "ls -1" lista os arquivos e diretórios todos em uma única coluna.
Tenha MUITO cuidado com o comando acima!!! (comando rm) Um dígito errado e você poderá estar prejudicando permanentemente seu sistema!!! Apague apenas os arquivos que são de versões antigas do Kernel! Este comando apagará todos os arquivos e diretórios contendo os trechos (neste caso) -36 e -37.

Exemplo:
[...]
ls -1
abi-3.16.0-36-generic
abi-3.16.0-37-generic
abi-3.16.0-38-generic
config-3.16.0-36-generic
config-3.16.0-37-generic
config-3.16.0-38-generic
grub
initrd.img-3.16.0-36-generic
initrd.img-3.16.0-37-generic
initrd.img-3.16.0-38-generic
lost+found
System.map-3.16.0-36-generic
System.map-3.16.0-37-generic
System.map-3.16.0-38-generic
vmlinuz-3.16.0-36-generic
vmlinuz-3.16.0-37-generic
vmlinuz-3.16.0-38-generic

# rm *-36* *-37*

Depois disso, basta atualizar o GRUB com o seguinte comando:
sudo update-grub2

[sudo] senha para o usuário: 
Generating grub configuration file ...
Imagem Linux encontrada: /boot/vmlinuz-3.16.0-38-generic
Imagem initrd encontrada: /boot/initrd.img-3.16.0-38-generic
concluído
Como a última linha da saída do comando (update-grub2) menciona... Concluído!

Leitura Recomenda!

Alterar ordem de boot no GRUB 


5 comentários:

  1. Boa tarde, Phelipe, muito útil o post, obrigada!

    Sou iniciante e fiquei com uma dúvida:

    - Na remoção manual, o sistema me pede a confirmação da remoção dos arquivos (remover arquivo comum "*.*" protegido contra escrita?)
    - Tentei responder afirmativamente, tanto digitando "s" quanto "y" e mesmo dando "enter" direto. Nenhum deles funcionou. O sistema retorna a seguinte mensagem, para cada arquivo: não foi possível remover "*.*": Permissão negada

    Como devo proceder para obter essa permissão e remover os arquivos em questão. Tenho dois kernels antigos no diretório /boot.

    Muito obrigada!

    ResponderExcluir
  2. Em tempo: já resolvi, posto aqui para se alguém tiver a mesma dúvida.

    Antes do comando é necessário digitar novamente sudo, para obter "privilégios de superusuário". Fica assim:

    sudo rm *-33*
    (por exemplo)

    Não havia entendido isso, desculpe. Aí funciona.
    Obrigada!

    ResponderExcluir
    Respostas
    1. Olá Marina!

      - Como se pode observar na parte do exemplo que apago dois antigos kernels (qual o plural desta palavra?!?), note que há um #, isso significa que tenho permissões de root, por isso não digitei o sudo. =D

      Ainda bem que você é perspicaz!!!

      Obrigado pela leitura!

      Excluir
  3. Caro colega Phelipefox,

    Seu post, é realmente muito simples e ao mesmo tempo completo, funcionou! .. vlw pelas informações colega.

    ResponderExcluir
    Respostas
    1. Valeu Denilton! E muito obrigado pela leitura e feedback!!!

      Excluir