Como remover versões antigas do Kernel – Elias Praciano
Categories
Tutoriais Ubuntu

Como remover versões antigas do Kernel

À medida em que se atualiza o sistema, além das novas versões dos softwares que você usa e as correções de segurança, novas versões do kernel também chegam e, neste caso, não há substituição simples — ou seja, o sistema passa a usar a nova versão e não remove as antigas, que vão se acumulando.
Se houver algum problema na versão autal do kernel, você pode ficar com o sistema inteiro inoperante.
Por isto é importante ter as versões anteriores funcionais — às quais você possa recorrer, até resolver o problema com o kernel atual.
Mas, não precisa manter todas as versões do kernel. Elas ocupam bastante espaço, por sinal. Uma ou duas versões anteriores já é suficiente.
Ao ligar o computador, o GRUB mostra as versões disponíveis para uso.

Note que este é um artigo de 2014. Atualmente, as versões antigas do kernel são removidas automaticamente — ou você pode usar o autoremove, para “forçar” a remoção.
Neste texto, vou mostrar como listar as versões presentes no seu sistema e como remover as antigas. Os sistemas baseados no Red Hat têm uma solução bem simples para este problema. No Debian (Ubuntu) o usuário tem que fazer alguma ginástica para solucioná-lo.
Se você estiver com pressa, pode pular diretamente pro final, onde eu passo a fórmula mágica — basta copiar e colar.

Como listar as versões do kernel presentes no sistema?

Qualquer que seja a sua distro, é possível listar os kernels (ou kernéis) presentes no seu sistema através do comando de gestão de pacotes.
Você vai usar o rpm nas distribuições baseadas no Red Hat (Fedora, CentOS, RHEL etc.):

rpm -qa kernel

A saída deve ser algo parecido com o que segue — a depender da quantidade de versões que você tiver aí:

kernel-2.6.18-8.1.14.el5
kernel-2.6.18-8.1.10.el5

Para quem usa o Debian (Ubuntu, Mint etc.), para ver a lista de todas as versões do kernel instaladas no seu sistema, use o comando dpkg:

dpkg --list | grep linux-image

ou

dpkg -l 'linux-im*'

O comando abaixo, mostra a mesma lista, só que mais enxuta. Experimente:

dpkg-query -l | awk '/linux-image-*/ {print $2}'
linux ubuntu lista kernel instalado
Clique para ampliar


Para quem deseja ver o kernel em uso, no momento, na sua máquina, use o comando uname, assim:

uname -a

O meu resultado, segue abaixo:

Linux JustInCase-Solaris-8 3.11.0-18-generic #32-Ubuntu SMP Tue Feb 18 21:13:28 UTC 2014 i686 i686 i686 GNU/Linux

O seu provavelmente deve ser diferente.

Como remover as versões do kernel que não são mais usadas

Para remover as versões do kernel que não estão mais em uso, no Red Hat e nas distribuições derivadas deste, use o yum:

sudo yum kernel

Ao dar este comando, todas as versões desnecessárias serão removidas.
Não se preocupe, o Linux não fará a sandice de remover o atual, que está sendo usado.
Mas, para quem deseja ser mais específico, ainda é possível indicar exatamente qual versão você deseja remover. Veja o exemplo:

sudo yum remove kernel-3.7.8-202.fc18.x86_64

No Ubuntu, use o apt-get para remover o linux-image-3.8.0-35-generic, assim:

sudo apt-get --purge remove linux-image-3.8.0-35-generic

No Ubuntu, é necessário ter o cuidado para não remover o kernel em uso atualmente. Neste caso, o comando uname -r mostra a versão que não deve ser removida.

UBUNTU: a opção –purge indica que queremos remover, não somente o pacote em questão, mas também todos os seus arquivos de configuração.

Se o objetivo é manter o seu sistema sempre limpo e livre de coisas inúteis, usar a opção –purge, para remover um pacote não é obrigatório.

Em seguida, é importante atualizar o GRUB:

sudo update grub

Simplificando tudo no Ubuntu

Mostrei anteriormente que no Red Hat a remoção de todas as versões do kernel, com exceção da atual, pode ser feita com o uso de apenas um comando.
No Ubuntu, você não tem o mesmo recurso, Mas esta linha vai resolver o problema. O código do Mark McBride, a seguir, remove todas as versões do kernel, exceto a atual (copie e cole):

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

Assim que você teclar Enter o comando entra em ação — você terá que confirmar e dar a sua senha, claro.
No meu caso, o apt-get avisa que vai liberar quase meio giga no meu HD, como você pode ver abaixo:

Lendo listas de pacotes... Pronto
Construindo árvore de dependências
Lendo informação de estado... Pronto
Os pacotes a seguir serão REMOVIDOS:
  linux-headers-3.11.0-15* linux-headers-3.11.0-15-generic* linux-headers-3.11.0-17*
  linux-headers-3.11.0-17-generic* linux-image-3.11.0-15-generic* linux-image-3.11.0-17-generic*
  linux-image-3.8.0-35-generic* linux-image-extra-3.11.0-15-generic* linux-image-extra-3.11.0-17-generic*
  linux-image-extra-3.8.0-35-generic*
0 pacotes atualizados, 0 pacotes novos instalados, 10 a serem removidos e 26 não atualizados.
Depois desta operação, 547 MB de espaço em disco serão liberados.
Você quer continuar [S/n]? Abortar.

LEIA MAIS:
Se tiver interesse, este artigo tem dicas para limpar o sistema de forma segura e liberar espaço no seu HD.

Enfim, embora você não precise fazer esta limpeza sempre, é interessante fazê-la a cada 6 meses ou 1 ano.

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

23 replies on “Como remover versões antigas do Kernel”

Olá amigo!
Uma das versões do meu kernel começou a dar erro justo quando eu ia formatar para outra versão do linux. Preciso retira-lo para ver se consigo formatar e etc. Achei o seu artigo bem melhor, porém quando executo o seu comando simplificado para Ubuntu, da o seguinte erro:
dpkg -l ‘linux-*’ | sed ‘/^ii/!d;/'”$(uname -r | sed “s/\(.*\)-\([^0-9]\+\)/\1/”)”‘/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d’ | xargs sudo apt-get -y purge
dpkg-query: não foram encontrados pacotes coincidindo com linux-*
Lendo listas de pacotes… Erro!
E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/dpkg/status
E: As listas de pacotes ou os arquivos de estado não puderam ser analisados ou abertos.

Meu diretório /var estão todos com restrições para proprietário, acredito que seja por isso. Não sei como resolver isso, pode me ajudar?

Bom dia, estou usando o wifislax e infelizmente não obive sucesso. Alguma sugestão?

Boa tarde!

Eu não sei se estou no artigo certo, mas… Pesquisei por “remover kernels antigos” porque (não sei se estou certo) suspeito que o meu live USB (pendrive com livre do Ubuntu Gnome) não carrega no meu notebook, no qual já instalei uma porrada de distros e windows.

Testei no notebook da minha esposa e ele carrega bem rápido. Ou seja, o problema não é o Live USB, mas com o boot do meu notebook (eu acho). Você acha que remover os kernels vai ajudar nesse caso? E o kernel do Windows, como faço pra tirar do boot?

Aguardo resposta! Um abraço!

Eu não sei como tirar o kernel do Windows do pendrive.
Eu sugiro verificar se alguma opção no BIOS do seu notebook não o está impedindo de iniciar o pendrive.

Cara, você já é uma lenda. Muuuuito obrigado por tudo. Eu tenho orgulho do mundo ter produzido uma pessoa generosa como você. Meu Ubuntu tá o máximo graças a você. Baixei seus livros e apesar de adorar ler ainda não iniciei nenhum, mas, irei.

Excelente post. Funcionou perfeitamente no meu Ubuntu 14.04: mais de 5gb liberados. Grub continua funcionando com boot para outros sistemas operacionais, inclusive.

Caras, executei o comando sugerido p/ o Ubuntu, vi durante o processo a remoção dos kernel antigos, tudo ok (havia mais de 10 versões! cerca de 3.5Gb liberados). Mas após reiniciar o computador, o sistema está inacessível (como se o grub tivesse desaparecido!)

Não acho nem de longe uma boa ideia colocar o -y antes do purge. Com isso você não tem controle sobre o comando, se algo errado estiver no meio, vai apagar. Prefiro muito mais ver o que será feito antes de aceitar.

Cara, só aqui encontrei uma forma de apagar Kernel antigo que eu conseguisse executar. Grato!

Uso um Acer Aspire 3000, tenho um Xubuntu 14 nele, subi de 500mb pra 1bg de RAM, passei de 60 pra 120bg, um dos motivos de funcionar está na limpeza.
Enfim, eu aqui de novo, dois anos depois e esse teu artigo ainda é matador, grato novamente!

Faltou por “-y” antes do “purge”
Atenção também em por o “sudo” no início, caso não esteja como root

sudo dpkg -l ‘linux-*’ | sed ‘/^ii/!d;/'”$(uname -r | sed “s/\(.*\)-\([^0-9]\+\)/\1/”)”‘/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d’ | xargs sudo apt-get -y purge

Leave a Reply to Flávia Jobstraibizer Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.