Excluir novos kernels / inicialização completa

8

Temos alguns servidores Ubuntu 16.04. unattended-upgradessão ativados automaticamente desde 16.04 e a partição de inicialização está em uma partição separada. Devido às atualizações automáticas de segurança, a partição de inicialização está ficando sem espaço com novos kernels.

Não podemos simplesmente reiniciar os sistemas, para que a máquina ainda esteja usando o penúltimo kernel.

Quais kernels devo remover? Todos, exceto o atual, o mais antigo e o mais novo?

Vocês têm algumas recomendações?

Também notei que o kernel mais recente tem o status "Half Configured". Este kernel provavelmente não funcionaria, então devo removê-lo e usar o kernel mais antigo.

Saída de dpkg -l | grep linux image:

    ii  linux-image-4.4.0-21-generic --> old kernel
    ii  linux-image-4.4.0-34-generic --> current kernel
    ii  linux-image-4.4.0-36-generic --> new kernel
    ii  linux-image-4.4.0-38-generic --> new kernel
    ii  linux-image-4.4.0-42-generic --> new kernel
    ii  linux-image-4.4.0-45-generic --> new kernel
    ii  linux-image-4.4.0-47-generic --> new kernel
    ii  linux-image-4.4.0-51-generic --> new kernel
    ii  linux-image-4.4.0-53-generic --> new kernel
    iF  linux-image-4.4.0-57-generic --> new kernel
user83026
fonte

Respostas:

7

Para limpar o kernel antigo, você pode usar a purge-old-kernelsferramenta de linha de comando.

Este programa removerá pacotes antigos de kernel e cabeçalho do sistema, liberando espaço em disco. Ele nunca removerá o kernel atualmente em execução. Por padrão, ele manterá pelo menos os 2 kernels mais recentes, mas o usuário pode substituir esse valor usando o parâmetro --keep. Quaisquer parâmetros adicionais serão passados ​​diretamente paraapt-get

Para instalar purge-old-kernels, execute:

sudo apt install byobu

ou

sudo apt install bikeshed

Para manter a nexecução do kernel mais recente :

sudo purge-old-kernels --keep n

e, g: n = 2

sudo purge-old-kernels --keep 2

Atualização grub:

sudo update-grub
GAD3R
fonte
2
byobué provavelmente o pacote que você deseja para o 16.04 Xenuial: purge-old-kernelsfoi movido de bikeshedpara byobualgum momento entre Trusty e Xenial, embora bikeshedagora seja recomendável byobuque você ainda obtenha o programa, a menos que não tenha nenhuma recomendação de instalação.
Wolfgang
4

Para o Ubuntu, o Grub2 exibe automaticamente o kernel mais recente e oculta os kernels mais antigos. Se você quiser vê-los, pressione Shift durante a inicialização.

Portanto, antes de excluir os kernels antigos, inicialize com o kernel disponível mais recente (o grub2 carrega-o por padrão na inicialização). Para verificar qual kernel você está usando, você pode usar o comando:

uname -r

A recomendação é manter pelo menos dois ou preferencialmente três núcleos, incluindo o mais recente. O motivo é que você terá pelo menos um / dois outros kernels para inicializar, caso ocorra que você não consiga inicializar com o kernel mais recente.

Para remover os kernels antigos, abra o terminal e verifique seu kernel atual:

uname -r 

Em seguida, liste todos os kernels instalados no seu sistema.

dpkg --list | grep linux-image 

Encontre todos os kernels inferiores ao seu kernel atual. Execute os comandos abaixo para remover o kernel que você selecionou:

sudo apt-get purge linux-image-x.x.x.x-generic 

Por fim, execute os comandos abaixo para atualizar o grub2

sudo update-grub2 

E reinicie o seu sistema.

Dababi
fonte
1
Da pergunta: "não podemos simplesmente reiniciar os sistemas" . Sua resposta requer duas vezes.
Lightness Races em órbita
3

apt-get autoremove, executado periodicamente, deve poder ajudá-lo a realizar o que deseja. O kernel em execução, o kernel anterior e os dois kernels mais recentes devem ser suficientes.

Schaiba
fonte
1
Dada a lista de kernels instalados e o fato de o kernel em execução ser antigo, eu diria "o kernel em execução, o kernel anterior e os dois kernels mais recentes".
Stephen Kitt
2

Inicialize um do kernel anterior.

Primeira tentativa apt autoremove --purge

Se não funcionar dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

Controle o que será desinstalado.

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo dpkg -P Isso removerá o listet Kernel do comando abaixo.

sudo apt -f install

e com certeza

 sudo update-grub

fonte