Como remover versões antigas do Kernel

À medida em que você vai atualizando seu 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.
Linux Kernel image dpkg UbuntuSe 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.
Obviamente, não é necessário ter várias versões do kernel. Elas ocupam bastante espaço, por sinal. Uma ou duas versões anteriores são mais do que suficientes.
Ao ligar o computador, o GRUB mostra as versões disponíveis para uso.
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 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 resultado, para mim, é este:

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, e 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

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, ao remover um pacote que não será mais usado, sob hipótese alguma, é mandató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 avisou 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.

Publicado por

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!

20 comentários sobre “Como remover versões antigas do Kernel”

  1. 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!

  2. 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.

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

  4. 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!)

  5. 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.

      1. 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!

  6. 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

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *