Por que o Ubuntu não remove os kernels antigos automaticamente? [duplicado]

93

Eu me pergunto por que o Ubuntu não irá remover os kernels antigos automaticamente.

Certamente nada é perfeito e as coisas podem dar errado, então no caso de uma atualização não funcionar, ter um kernel de backup é ótimo. Mas também seria suficiente manter apenas o kernel mais recente e o anterior e excluir todos os mais antigos.

Existe uma razão pela qual o Ubuntu não fará isso automaticamente ?.

    
por Registered User 27.02.2015 / 15:35

8 respostas

44
% bl0ck_qu0te%

Eu vejo apenas um motivo: ele não funciona perfeitamente; não há uma maneira limpa de decidir qual é a definição de "kernels antigos". "velho" não significa "não usado" nem significa "indesejado". E qualquer erro nisso matará a máquina de um usuário.

Então, até agora, o método manual é o preferido, pois isso coloca o poder de remover as mãos dos usuários.

Recursos para esta conclusão:

% bl0ck_qu0te% % bl0ck_qu0te% % bl0ck_qu0te%     
por Rinzwind 27.02.2015 / 16:02
21

Há duas coisas acontecendo aqui:

  1. Novos kernels são pacotes completamente novos, não pacotes atualizados com um número de versão mais recente, então a instalação de uma nova imagem de kernel não substitui os antigos. Eles coexistem.

  2. O Ubuntu usa um monte de apt magic para proteger as duas últimas versões do kernel do 'apt-get autoremove' (a última e a última que foi inicializada). Veja /etc/apt/apt.conf.d/01autoremove-kernels para detalhes.

O que isto significa é que, uma vez que você tenha reiniciado o kernel mais recente, o 'apt-get autoremove' deve remover todos os pacotes de kernel, exceto os atuais e os últimos inicializados.

Kernels antigos ainda se acumulam em / boot porque autoremove não está habilitado no Ubuntu por padrão - você deve executá-lo manualmente de vez em quando, ou você deve ativá-lo.

Isso pode mudar em 16.04 - uma correção de erros para o pacote de atualizações autônomas ativará o autoremove de kernels antigos por padrão.

    
por andrewdevans 28.02.2015 / 00:08
16

Este script fará o trabalho. Ele removerá todos os kernels que não estiverem em uso.

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

Além disso, não remover os núcleos deve ser algo relativamente novo. Eu tenho um sistema Ubuntu 14 após o outro correndo para este problema de uma partição de inicialização completa devido ao lixo antigo do kernel.

Pode tornar a vida de usuários menos experientes extremamente complicada. Na verdade, é uma armadilha noob. A Canonical deveria consertar isso.

    
por psnizek 08.03.2015 / 10:18
3

A maneira simplista de remover kernels antigos é usar o ubuntu-tweak. Você seleciona a tag Janitor e marca a caixa Old Kernel. Isso lhe dá uma lista de kernels que você acha que não precisa mais. Você pode selecionar todos eles e clicar em Limpar e, depois de um tempo, o trabalho é concluído. Sendo de disposição nervosa eu verifiquei qual kernel eu estava rodando usando uname -a mas ele não estava na lista. Isso funcionou no laptop da minha esposa (que tem uma pequena partição de inicialização e estava mostrando avisos) e meu (que estava funcionando bem). Todos concordam que isso é seguro?

    
por Chris_Dorking 28.02.2015 / 13:22
2

O Ubuntu remove automaticamente os itens que não são mais necessários ou são um risco de segurança ... Portanto, suponho que a razão para isso seja fins de segurança. Vamos dizer, por alguma razão estranha, que um novo kernel se torna inseguro ... Então você seria reencaminhado de volta para o antigo kernel temporariamente enquanto o novo está sendo consertado. Também novos kernels podem vir com mudanças, portanto, alguns kernels são opt-in, por exemplo, atualizando 14.04.1 a 14.04.2, você pode optar por um novo kernel, mas em abril, quando a nova versão LTS 15.04 sair, você terá automaticamente você atualiza os kernels. Então eu acho que é para fins de segurança.

mas se você quiser removê-lo, tente executar esta linha de comando

sudo apt-get autoremove

Isso deve remover qualquer software desnecessário, como seu kernel antigo, se não tentar

sudo apt-get remove (kernels-name)
    
por Tactux 27.02.2015 / 15:54
2

Eu recomendo usar o Ubuntu Tweak para remover kernels antigos. olhe aqui:

Como removo versões antigas do kernel para limpar o menu de inicialização?

    
por skonsoft 22.10.2015 / 11:00
2

Eu acho que o último lançamento do Ubuntu 15.10 poderia remover kernels antigos automaticamente, se você editar o arquivo /etc/apt/apt.conf.d/50unattended-upgrades: Alterar linha

% bl0ck_qu0te%

para

% bl0ck_qu0te%

Ainda não testei isso.

    
por jarno 23.12.2015 / 21:12
2

Eu tive um problema ao não conseguir instalar o software. O Apt-get não conseguiu instalar os cabeçalhos do linux, informando que o disco estava cheio. $ df -i informou que o IUse% estava em 100%: O disco tinha espaço livre, mas havia esgotado os inodes. $ sudo dpkg --configure -a falhou, & amp; o mesmo aconteceu com $ sudo apt-get -f install e $ sudo apt-get autoremove

O problema foi resolvido quando removi manualmente várias pastas antigas do kernel de / usr / src - apenas $ rm ou shift-delete as pastas. Isso liberou espaço de inode suficiente para permitir que $ apt-get -f install fosse concluído.

Depois disso, eu tinha apenas 10 kernels linux. Eu corri $ sudo apt-get autoremove , que apagou 1,4 GB de arquivos. Qual implora a pergunta: Realmente ?? Mesmo?? Mas honestamente, esse é o jeito certo de executar um sistema amigável?

    
por Gareth 24.12.2015 / 09:47

Tags