Existe um arquivo gerado automaticamente que informa ao apt-get
quais kernels devem ser removidos pelo autor e quais devem ser mantidos.
O arquivo que informa ao apt-get
quais são os kernels é /etc/apt/apt.conf.d/01autoremove-kernels
que é gerado a partir de /etc/kernel/postinst.d/apt-auto-removal
.
Normalmente, o que acontece é que, quando você recebe atualizações do kernel, quando a versão do kernel muda, digamos de 3.13
para 3.16
, /etc/apt/apt.conf.d/01autoremove-kernels
é atualizado para manter os 3.16*
kernels e é definido para remover todos os kernels 3.13
, a menos que especificado pelo script de geração, para não serem removidos.
Do script apt-auto-removal
:
# Author: Steve Langasek # # Mark as not-for-autoremoval those kernel packages that are: # - the currently booted version # - the kernel version we've been called for # - the latest kernel version (determined using rules copied from the grub # package for deciding which kernel to boot) # - the second-latest kernel version, if the booted kernel version is # already the latest and this script is called for that same version, # to ensure a fallback remains available in the event the newly-installed # kernel at this ABI fails to boot # In the common case, this results in exactly two kernels saved, but it can # result in three kernels being saved. It's better to err on the side of # saving too many kernels than saving too few. # # We generate this list and save it to /etc/apt/apt.conf.d instead of marking # packages in the database because this runs from a postinst script, and apt # will overwrite the db when it exits.
No entanto, isso às vezes não os marca para remoção automática, já que parte da codificação foi alterada nas versões para impedir que isso ocorra.
Se você quiser marcar os kernels anteriores para autoremove
, exceto os kernels necessários baseados nos scripts, execute o seguinte comando a partir de uma janela de terminal:
sudo apt-mark auto ^linux-image-
Em seguida, quando você executar o comando apt-get autoremove
, apenas os antigos e desnecessários poderão ser removidos. Eu coloquei exemplos abaixo:
Este primeiro mostra todos os kernels no sistema menos o kernel atual em execução.
root@terrance-Linux:/home/share# dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d' linux-headers-3.16.0-34 linux-headers-3.16.0-34-generic linux-headers-3.16.0-36 linux-headers-3.16.0-36-generic linux-headers-3.16.0-37 linux-headers-3.16.0-37-generic linux-headers-4.0.0-040000 linux-headers-4.0.0-040000-generic linux-image-3.16.0-34-generic linux-image-3.16.0-36-generic linux-image-3.16.0-37-generic linux-image-4.0.0-040000-generic linux-image-extra-3.16.0-34-generic linux-image-extra-3.16.0-36-generic linux-image-extra-3.16.0-37-generic
Este mostra o kernel atual em execução.
terrance@terrance-Linux:~$ uname -r 4.0.1-040001-generic
terrance@terrance-Linux:~$ sudo apt-get autoremove [sudo] password for terrance: Reading package lists... Done Building dependency tree Reading state information... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
terrance@terrance-Linux:~$ sudo apt-mark auto ^linux-image- linux-image-extra-3.16.0-33-generic can not be marked as it is not installed. linux-image-extra-3.13.0-27-generic can not be marked as it is not installed. linux-image-3.13.0-44-lowlatency can not be marked as it is not installed. linux-image-3.13.0-27-generic can not be marked as it is not installed. linux-image-3.16.0-31-lowlatency can not be marked as it is not installed. linux-image-3.16.0-36-generic set to automatically installed. linux-image-lowlatency-lts-utopic can not be marked as it is not installed. linux-image-extra-3.13.0-36-generic can not be marked as it is not installed. linux-image-3.13.0-36-generic can not be marked as it is not installed. linux-image-4.0.0-040000-generic set to automatically installed. linux-image-extra-3.13.0-45-generic can not be marked as it is not installed. linux-image-3.16.0-25-generic can not be marked as it is not installed.
OBSERVAÇÃO: O acima era muito longo para listar, então eu trunquei um pouco.
terrance@terrance-Linux:~$ sudo apt-get autoremove Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: linux-image-3.16.0-34-generic linux-image-3.16.0-36-generic linux-image-4.0.0-040000-generic linux-image-extra-3.16.0-34-generic linux-image-extra-3.16.0-36-generic 0 upgraded, 0 newly installed, 5 to remove and 0 not upgraded. After this operation, 613 MB disk space will be freed. Do you want to continue? [Y/n]
Assim, depois de executar esses comandos, você pode ver que agora posso remover automaticamente todo o kernel antigo, mas o atual (4.0.1-040001-generic) e o próximo mais novo (3.16.0-37-generic) .
Espero que isso ajude.