Por que não é seguro excluir kernels antigos?

36

Como o espaço no disco de inicialização está acabando, decidi remover os kernels antigos. Encontrei esta página que descreve exatamente o que devo fazer: Documentação do Lubuntu: Remover Kernels Antigos .

Excluí o kernel mais antigo manualmente e agora está tudo bem, mas não entendo uma coisa: no final do artigo, há um código que pode excluir todas as versões antigas do kernel, mas está marcado apenas para usuários avançados.

Eu realmente não entendo qual é o perigo aqui. Parece bobagem, mas eles parecem dizer que pode haver mais de um kernel usado por uma máquina específica ao mesmo tempo.

É possível que aplicativos diferentes na minha máquina Ubuntu possam usar kernels diferentes simultaneamente? Por que excluir todos os kernels antigos automaticamente é considerado perigoso?

Sergei
fonte
8
Na verdade, o artigo não contém as palavras "perigo" e "inseguro". Como você chegou a uma conclusão tão exagerada?
precisa saber é o seguinte
2
Algumas vezes eu atualizei para o kernel mais recente e removi o kernel antigo antes de reiniciar, apenas para descobrir que (no meu sistema específico) o kernel não funcionava e o sistema não inicializava. Agora eu faço a reinicialização primeiro e depois removo o kernel antigo, se estiver tudo bem.
Matthew Leia

Respostas:

50

A remoção de kernels antigos não é inerentemente insegura, mas se você remover todos os kernels e reiniciar, você ficará em uma tela do Grub irritada. Correção que requer um conhecimento significativo (assim, mas com um apt-get install linux-genericno final).

A primeira vez que você faz isso é muito emocionante, mas as pessoas que desejam limpar seu menu do Grub ou recuperar algum espaço em disco não estão procurando emoções.

O perigo vem dos usuários que copiam e colam um bloco de código que - sem o conhecimento deles e sem reconhecer os riscos - não se aplica. Existem muitos exemplos de detecção de kernels antigos e poucos são perfeitos. Até meu último esforço ainda tem suas armadilhas. E estamos falando de um problema que pode ser corrigido; muitas postagens no Ask Ubuntu podem levar à perda permanente de dados, se usadas incorretamente.

Tentamos nos proteger contra danos, sinalizando o risco de conscientizar os usuários sobre possíveis problemas . Na melhor das hipóteses, o usuário estará preparado e equipado para lidar com um problema e, na pior das hipóteses, pelo menos não poderá reclamar que não foi avisado.

Oli
fonte
11
Não remova todos os seus kernels (obviamente), mas também não remova o kernel atualmente em execução se você acabou de instalar um kernel atualizado e ainda não foi reiniciado. Por quê? Se algo quebrar no kernel atualizado, você sempre pode selecionar o kernel anterior no Grub e voltar ao trabalho. Caso contrário, você ficará preso a um sistema não inicializável e precisará jogar o "jogo LiveCD" (não é um jogo divertido, aliás).
Nathan Osman
11
Isso é quase tão divertido quanto dd if=/dev/zero of=/dev/sda bs=512 count=1. Não me lembro do que estava tentando fazer (algo sobre vários gerenciadores de inicialização tornando minha vida chata). Passei cerca de sete horas com um LiveCD tentando reparar minhas tabelas de partição.
Phyrfox
11
É simples assim, mantenha (pelo menos) um kernel testado e funcionando definitivamente. Alguém - @ NathanOsman - teve que colocar em palavras, eu acho. Segunda lição importante aprendida aqui, não faça coisas que não conhece as consequências.
Nicolai
11
Eu não usaria a palavra "emocionante", mas o sentimento foi intenso quando o fiz.
MdeBusk
Tendo corrigido problemas do kernel no passado, fico muito feliz em deixar três kernels. Geralmente, eu uso o kernel em execução no momento, o mais novo e o anterior ao atual. Isso me fornece as informações mais recentes sobre a reinicialização, a que é conhecida por funcionar e a anterior, se isso falhar por algum motivo. Provavelmente é um exagero, mas é aprovado pelo CYA.
Flickerfly
4

Os kernels antigos fazem parte dos pacotes. Se você remover /boot/vmlinuz-3.13.0-44-generic, deixará as migalhas de pacote por toda parte.

Primeiro, descubra qual kernel você está executando. NÃO apague nada com esse valor: seu nome:

$ uname -r  
3.13.0-49-generic  

YMMV. Depois, pergunte dpkgo que sabe:

$ dpkg -l linux-*

Alguns desses pacotes podem ser removidos, mas o que mais existe? Usando uma linha extraída (no sistema MY) da saída do dpkg -l linux-*:

 ii  linux-image-3.13.0-44-generic       3.13.0-44.73           amd64                  Linux kernel image for version 3.13.0 on 64 bit x86 SMP

Agora vamos ver o que outros pacotes têm -3.13.0-44em seus nomes:

$ dpkg -l *-3.13.0-44*

Depois de fazer uma verificação final para garantir que o kernel atual ( uname -r) NÃO esteja na lista de pacotes, você pode começar a removê-los através do sistema de gerenciamento de pacotes de sua escolha.

waltinator
fonte
0

A última vez que removi meus kernels antigos, peguei emprestado um trecho de código antigo. Bem, esse trecho de código exigiu que eu reiniciasse após instalar o novo kernel, então fiquei sem um kernel. Felizmente, eu havia pego isso antes de reiniciar, mas como outros disseram, eu posso ter ficado com a "tela do grub com raiva".

Para encurtar a história, é simplesmente algo que pode ser facilmente bagunçado, resultando em um sistema emparelhado que pode ser difícil de recuperar.

alfonsojon
fonte
0

Não é perigoso. Usando o Linux, você pode fazer exatamente o que deseja, se souber os comandos certos.

No /bootdiretório, você pode fazer um simples ls -lapara ter uma lista longa, bem como encontrar arquivos ou diretórios ocultos (que não deveriam estar lá, se houver algum !!).

A partir dessas informações, você pode avaliar os arquivos de datas e versões antigas. Não remova todos eles, mas os arquivos mais antigos que correspondem à mesma versão.

Em algum momento, eu estava pensando que seria possível que, se você compilou seu kernel a partir do código-fonte, precisará ajustar um novo. O .configarquivo, que não acho que seja o caso, conforme sua explicação, permanecerá lá.

Portanto, se ocorrer a exclusão dos arquivos antigos correspondentes a uma única versão e a reinicialização da máquina, é possível que você encontre um pânico no kernel.

A solução simples é inicializar a máquina com um USB ou CD / DVD Linux ativo. chrootnele e recrie o kernel com ferramentas como dracut.

Nitin J Mutkawoa
fonte