Como manter 4 kernels do Linux em / boot por padrão antes de serem removidos automaticamente

12

Pesquisei um pouco e descobri que a limpeza automática de kernels está presente /etc/kernel/postinst.d/apt-auto-removale o arquivo diz:

# In the common case this results in two kernels saved (booted into the
# second-latest kernel, we install the latest kernel in an upgrade), but
# can save up to four. Kernel refers here to a distinct release, which can
# potentially be installed in multiple flavours counting as one kernel.

mas esse script está muito acima da minha cabeça e não consigo encontrar facilmente como autoclean nada além dos últimos 4 núcleos.

Fabby
fonte
Você tem que modificar o script em vários lugares, não há outra maneira. Se desejar, você pode registrar um relatório de erro da "lista de desejos" no aptpacote para permitir que o número de kernels seja personalizado.
fkraiem
2
Os "quatro" na parte que você citou se referem ao caso incomum em que "a versão inicializada no momento", "a versão do kernel que solicitamos", "a versão mais recente do kernel" e "a segunda versão mais recente do kernel" são todos distintos, pois todas essas versões são mantidas. Em casos típicos, no entanto, isso se reduz a dois, porque "a versão inicializada no momento" e "a segunda versão mais recente do kernel" são as mesmas e o mesmo para as outras duas.
fkraiem

Respostas:

12

O que significa quando diz "até quatro" é que as versões atualmente em execução, atualizadas, instaladas, mais recentes e anteriores podem ser diferentes, resultando em quatro versões sendo mantidas automaticamente (com no mínimo duas). Veja esta parte do código:

debkernels="$(echo "$latest_version
$installed_version
$running_version
$previous_version" | sort -u | sed -e '/^$/ d')"

Eu acho que a maneira mais simples de salvar kernels antigos seria estendendo a $previous_versionlista a uma lista. Ao invés de:

previous_version="$(echo "$debverlist" | sed -n 2p)"

Faz:

previous_version="$(echo "$debverlist" | sed -n 2,4p)"
muru
fonte
Sim, parece que deve funcionar. Deve-se observar que, como o arquivo faz parte do aptpacote, ele pode ser revertido para o padrão quando aptfor atualizado.
fkraiem
@fkraiem o arquivo está em /etc, por isso é provavelmente uma conffile e as mudanças devem ser preservadas (ou, pelo menos, o usuário será perguntado sobre eles)
Muru
1
Sim, todos os arquivos abaixo /etcsão conffiles, mas parece que os usuários geralmente ficam confusos quando o "manter ou substituir?" pergunta aparece ...
fkraiem
1
Eu não vou ficar confuso ... @fkraiem
Fabby
O apt ainda reclama: The following packages were automatically installed and are no longer required: linux-headers-4.10.0-38 linux-headers-4.10.0-38-generic linux-image-4.10.0-38-generic linux-image-extra-4.10.0-38-generic linux-signed-image-4.10.0-38-generic Use 'sudo apt autoremove' to remove them. mas é um executável e eu vou parar de me preocupar com isso e adaptamos a pergunta para caber na resposta. :-)
Fabby