Hoje, notei que o diretório /lib/modules
ainda possui todos os diretórios dos kernels instalados anteriormente, assim:
$ ls /lib/modules
5.4.0-29-generic 5.4.0-31-generic 5.4.0-33-generic 5.4.0-37-generic 5.4.0-39-generic
5.4.0-40-generic 5.4.0-42-generic 5.4.0-45-generic 5.4.0-47-generic 5.4.0-48-generic
... etc.
Em cada um desses diretórios, restam os seguintes arquivos (sistema Intel/AMD):
$ ls -l
-rw-r--r-- 1 root 143K 2022-04-28 18:36 modules.alias
-rw-r--r-- 1 root 154K 2022-04-28 18:36 modules.alias.bin
-rw-r--r-- 1 root 8.0K 2022-04-08 10:44 modules.builtin
-rw-r--r-- 1 root 25K 2022-04-28 18:36 modules.builtin.alias.bin
-rw-r--r-- 1 root 11K 2022-04-28 18:36 modules.builtin.bin
-rw-r--r-- 1 root 63K 2022-04-08 10:44 modules.builtin.modinfo
-rw-r--r-- 1 root 85K 2022-04-28 18:36 modules.dep
-rw-r--r-- 1 root 123K 2022-04-28 18:36 modules.dep.bin
-rw-r--r-- 1 root 268 2022-04-28 18:36 modules.devname
-rw-r--r-- 1 root 215K 2022-04-08 10:44 modules.order
-rw-r--r-- 1 root 489 2022-04-28 18:36 modules.softdep
-rw-r--r-- 1 root 279K 2022-04-28 18:36 modules.symbols
-rw-r--r-- 1 root 326K 2022-04-28 18:36 modules.symbols.bin
E para um Raspberry Pi (observe as diferenças de tamanho):
-rw-r--r-- 1 root 859K 2022-04-25 17:31 modules.alias
-rw-r--r-- 1 root 893K 2022-04-25 17:31 modules.alias.bin
-rw-r--r-- 1 root 11K 2022-04-04 13:33 modules.builtin
-rw-r--r-- 1 root 27K 2022-04-25 17:31 modules.builtin.alias.bin
-rw-r--r-- 1 root 14K 2022-04-25 17:31 modules.builtin.bin
-rw-r--r-- 1 root 84K 2022-04-04 13:33 modules.builtin.modinfo
-rw-r--r-- 1 root 399K 2022-04-25 17:31 modules.dep
-rw-r--r-- 1 root 548K 2022-04-25 17:31 modules.dep.bin
-rw-r--r-- 1 root 250 2022-04-25 17:31 modules.devname
-rw-r--r-- 1 root 209K 2022-04-04 13:33 modules.order
-rw-r--r-- 1 root 950 2022-04-25 17:31 modules.softdep
-rw-r--r-- 1 root 354K 2022-04-25 17:31 modules.symbols
-rw-r--r-- 1 root 425K 2022-04-25 17:31 modules.symbols.bin
Para um sistema que está em execução há 2 anos com todas as atualizações do kernel, isso equivale a ~50 diretórios antigos. Para um sistema Intel/AMD normal, são cerca de 100 Megabytes e, para um Raspberry Pi, são mais de 300 Megabytes no total - isso equivalerá a algo ao longo do tempo.
Então, eu me pergunto por que esses diretórios e arquivos de módulos antigos para kernels removidos não são removidos como parte do processo de limpeza?
Recentemente, atualizei do Ubuntu 20.04 para 22.04 (e é por isso que estou fazendo algumas coisas de limpeza de qualquer maneira).
Como as coisas estão atualmente, eu me pergunto se devo fazer meu próprio script de limpeza para esses diretórios restantes. Ainda assim, estou curioso por que não é feito automaticamente.
eu não sei porque
Eu não acho que você obterá uma boa resposta sobre por que o Ubuntu faz algo do jeito que faz.
História
Até alguns anos atrás, o Ubuntu não limpava nenhum pacote de kernel e de cabeçalho do kernel. Agora as atualizações de software removem kernels antigos e não utilizados. Acho que roda algo como:
Infelizmente, ele deixa esses arquivos de módulo para trás.
Seguindo em frente
Você não precisa escrever um script para se livrar deles. O comando a seguir fará o trabalho:
Observe que você precisa executar este comando antes que as atualizações de software façam sua limpeza.
Limpando
Quanto aos módulos existentes deixados para trás, você terá que excluí-los manualmente, certificando-se de não excluir nenhuma pasta de módulo que esteja sendo usada no momento.
Use este comando para encontrar a lista de kernels instalados:
Se o Ubuntu estiver removendo kernels antigos, você deverá ver duas ou três entradas, incluindo o meta pacote linux-image
linux-image-generic
. Anote os números de versão do kernel dos kernels de instalação e certifique-se de não excluir as/lib/modules/
subpastas dos kernels instalados. Espero que isto ajudeA partir dos comentários e da resposta de user68186, agora posso concluir que o porquê segue implicitamente o caminho
apt
funciona sob o capô.Os arquivos do módulo na minha pergunta aparentemente se enquadram na categoria de arquivos de configuração , o que significa que eles não são removidos com um normal
apt autoremove
, mas apenas removidos se você fornecer a--purge
opção.No entanto, especialmente para o Raspberry Pi (e possíveis outras arquiteturas especiais), esses arquivos de configuração podem, em algum momento, chegar a gigabytes, se o sistema estiver funcionando por tempo suficiente com atualizações do kernel.
Portanto, é bom estar ciente da
sudo apt --purge autoremove
opção, que remove todos os arquivos de configuração do kernel anteriores, incluindo configurações de módulo.para ossos preguiçosos como eu. eu criei o arquivo
Não importa se eu uso apt ou apt-get e uso autoremove, meus pacotes são removidos. E sempre que instalo ou removo um pacote; os pacotes que não são mais necessários também são eliminados.