Partições Linux: tamanhos, pastas, arquivos e limpeza

Existem muito mais diferenças, entre as “distribuições Linux”, do que costumamos lembrar, num primeiro momento – e isso fica mais evidente, quando experimentamos distros de “ramos” diferentes da “árvore de distros Linux”, do que quando ficamos só em distros de um mesmo “ramo” – p.ex.: Buntus.& seus derivados; ou Debian & seus derivados.

  • Só para dar um exemplo, que nunca vi ninguém citar:
Resumo
  • O Fedora vem com SELinux instalado e ativado – enquanto openSUSE (também RPM) vem com SELinux instalado mas não ativado – e as outras 25 ou 30 distros que já experimentei simplesmente não instalaram SELinux.

Isso é só 1 exemplo. – Existem muitos outros – mas não o foco, aqui.

Os aspectos que quero abordar, aqui, referem-se principalmente ao tamanho das partições; – à ocupação crescente desse espaço em disco; – e algumas dicas para liberar espaço, sem recorrer a “programas de limpeza” (que não sei se são muito transparentes).

Na prática: – Como liberar “espaço em disco”, em algumas distros – e por que, em outras distros, isso já é feito automaticamente:

Fragmentação

Resumo

A “origem” e o “histórico” de cada distro se refletem na sua estrutura de arquivos. – Os pacotes do Debian, por exemplo, são bastante fragmentados – o que pode dar a falsa impressão de que tem “muito software para instalar”.

  • Os repositórios do Debian oferecem 59+ mil pacotes compilados e prontos para instalar, para cada versão da distro – porém boa parte deles são bibliotecas e outras “dependências”. – O número de “aplicativos” é bem menor.

  • E naturalmente, isto se reflete em todas as distros “baseadas no Debian” – ou baseadas no Ubuntu, que é baseado no Debian.

Já o Void e o Arch agrupam grande número de aplicativos em um número menor de pacotes. – Isto não significa que tenham “poucos aplicativos”. – Apenas, a fragmentação é muito menor.

  • O site do Arch lista 15+ mil pacotes compilados e prontos para instalar – mas isso abrange um número de “aplicativos”, provavelmente, tão amplo quanto o número de aplicativos do Debian.

Excesso de dependências

Resumo

Independente desse aspecto, uma distro pode vir configurada para instalar inúmeros “complementos” (plugins, add-ons), de cada aplicativo, como se fossem “dependências” – enquanto outras distros consideram “dependências”, apenas os pacotes realmente indispensáveis, para que cada aplicativo possa funcionar – deixando ao usuário a opção de instalar os “complementos” que quiser.

  • No openSUSE, por exemplo, os “patterns” cumprem essa função de instalar complementos, de modo que o usuário já receba cada aplicativo com todos os plugins. – Ao desativar um “pattern”, será possível remover plugins não-desejados.

  • No outro extremo, o usuário do Arch “constrói” seu sistema, instalando apenas o que deseja – e recebendo apenas as dependências realmente indispensáveis.

  • No Debian, em seu derivado Ubuntu e demais sub-derivados, às vezes basta remover um meta-pacote, ou uma “task”, para que os plugins de um aplicativo deixem de ser considerados “dependências” e possam ser removidos individualmente.

Exemplos de fragmentação e / ou excesso e dependências

Resumo

Uma vez, em 2018, fiz uma experiência de instalar o Dolphin + Konsole + um conjunto de pré-visualizações em 3 distros sem KDE:

  LMDE 3        Cinnamon .deb - base: Debian
  Lite          Xfce     .deb - base: Ubuntu
  PCLinuxOS-BR  Xfce     .rpm - base: PCLinuxOS

No LMDE (base: Debian) Cinnamon, a quantidade de pacotes necessários passou de 200:

  Preview Package                Packs

  -       Dolphin                   28
  -       Konsole                    6
  Basics  kio-extras                10
  -       kdesdk-thumbnailers        2
  Exif    libkf5baloowidgets-bin     1
  XCF     kimageformat-plugins       1
  PDF     kdegraphics-thumbnailers   3
  Video   ffmpegthumbs              10
  Mobi    kdegraphics-mobipocket    13
  KML     Marble                    12
  Office  Calligra                 142
  ePub    kde-thumbnailer-epub      --
                         TOTAL     228

No Linux Lite (base: Buntu) Xfce, foram necessários quase 300 pacotes:

  Preview Package                 Packs  UTC

  -       Dolphin                   167
  PDF     kdegraphics-thumbnailers    -
  Video   ffmpegthumbs                -
  Exif    libkf5baloowidgets-bin      -
  Basics  kio-extras                 24
  XCF     kimageformat-plugins        1
  Office  Calligra                   62
  KML     Marble                     17
  Mobi    kdegraphics-mobipocket      1
  -       kdesdk-thumbnailers        --
  ePub    kde-thumbnailer-epub       --
                      TOTAL         272

No PCLinuxOS Xfce, o conjunto se completou com apenas 135 pacotes:

  Preview Package               Packs  UTC

  -       Dolphin                  84
  Basics  kio-extras               --
  XCF     kimageformats             1
  PDF     kdegraphics-thumbnailers  3
  Video   ffmpegthumbs              1
  Mobi    kdegraphics-mobipocket    1
  ePub    kde-thumbnailer-epub     33
  KML     Marble                    3
  Office  Calligra                  9
  -       kdesdk-thumbnailers      --
  Exif    libkf5baloowidgets-bin   --
                         TOTAL    135

(As “dependências” de um pacote podem incluir as que seriam pedidas por outro. Isso reduz as dependências listadas nos pacotes seguintes).

Nas minhas distros atuais – todas com +/- os mesmos conjuntos de aplicativos – o panorama é, hoje, o seguinte:

No caso do Debian (3.830 pacotes), existe um exagero de “dependências”. – O Firefox, por exemplo (que não uso) veio com 66 pacotes de idiomas. – Removi, tanto o Firefox, quanto os 66 pacotes de idioma… mas continuam aparecendo em “Missing / Recomended” (Faltando / Recomendados).

O LibreOffice (que preciso manter), é pior, pois além de todos esses idiomas, também inclui Help em cada um deles. Tive de remover quase todos, deixando apenas Português, Inglês, Espanhol. – A seção “Missing / Recommended” vive pedindo para instalar 195 pacotes – quase todos, Firefox e LibreOffice.

São apenas 2 exemplos, fáceis de lembrar e verificar. – Não faço ideia de quantos outros pacotes eu poderia eliminar do Debian.

No MX Linux (2.885 pacotes), apesar de ser “base: Debian”, veio apenas 1 pacote Firefox – que removi em 2023, e nunca mais apareceu para me assombrar. – O LibreOffice resume-se a uns 20 pacotes, já contando com Base, Calc, Common, Core, Draw, Help em inglês, Math, Plasma, Qt5, Kf5 etc.

Portanto, no caso do Debian, não se trata, só, de “fragmentação de pacotes”. – Trata-se, também, de “exagero de dependências” – que o MX elimina.

Com alguma pesquisa, leitura, trabalho, é possível configurar o Debian para deixar de ser abusado – mas é muito mais fácil apenas instalar o MX Linux, que já vem enxuto: – ocupa 9,87 GiB em disco, contra 14,9 GiB do Debian.

Efeitos do excesso nas atualizações

Resumo

Vale a pena se preocupar com 5 GiB a mais ou a menos, no disco? – Não vale a pena, se você dispõe de um hardware razoável. – Mas uma atualização do Debian Testing (após 25 dias sem atualizar) pode envolver 1.122 pacotes (download: 1,4 GB), e levar 15 minutos.

Para o mesmo período de 25 dias sem atualizar, o Arch baixou e instalou 261 pacotes (2,1 MiB), em apenas 6 minutos. – O download foi maior, mas pacotes grandes baixam mais rápido do que um monte de pacotes pequenos – e a instalação de menos pacotes é sempre mais rápida do que a instalação de muitos.

O Void baixou e instalou 102 pacotes (576 MB), em 3 minutos – mesmo de um espelho nos EUA (menor velocidade).

O Fedora baixou e instalou 407 pacotes (1,3 GB) em 10 minutos – apesar de o “dnf” fazer downloads um pouco mais lentos (redirecionamento).

Só o openSUSE – cujo zipper sempre encontra velocidades baixíssimas (redirecionamento), foi mais demorado (33 minutos) – para baixar e instalar 1570 pacotes (2,7 GiB), após 25 dias sem atualizar o sistema.

O Mageia Cauldron baixou e instalou cerca de 920 pacotes (1,7 GB), em apenas 7 minutos.

Upgrade after 25 days

Distro  Packages  Download      Time   Mirror

Debian     1,122    1.4  GB   15 min   BR
Arch         261    2.1 GiB    6 min   BR
Void         102    0.6  GB    3 min   US
Fedora       407    1.3  GB   10 min   unknown (redirect)
openSUSE   1,570    2,7 GiB   33 min   unknown (redirect)
Mageia   +/- 920    1,7  GB    7 min   BR

(Considerei só a distros “rolling-release” – ou “semi-rolling”, como o Fedora, que tem um volume considerável de atualizações. – O MX é “stable”; e o PCLinuxOS está calminho, ainda adiando o KDE Plasma 6).

Remoção de pacotes órfãos e limpeza de Cache de pacotes

Resumo

No Debian, no MX Linux e no PCLinuxOS, configurei o Synaptic para eliminar o cache de pacotes baixados – assim que termina de instalá-los. – Portanto, o cache de pacotes não ocupa espaço:

(Para deletar algum acúmulo anterior, basta clicar no botão “Delete”).

  • Tenho a impressão de que o “apt”, por padrão (default), limpa automaticamente o cache de pacotes baixados, após a instalação – mas nunca examinei isso a fundo, pois sempre uso o Synaptic (que permite alterar facilmente esse padrão).

No Mageia, remover pacotes órfãos – e esvaziar o cache de pacotes – liberou apenas 0,1 GB:

# urpme --auto-orphans

# urpmi --clean

No Fedora, isso também eliminou apenas 0,1 GiB:

# dnf clean packages
Removed 0 files, 3 directories. 0 errors occurred.

# dnf clean all
Removed 50 files, 36 directories. 0 errors occurred.
  • Isso me deixou com a impressão de que o Mageia e o Fedora eliminam automaticamente o cache de pacotes baixados, assim que são instalados. – Apenas em alguns casos (p.ex.: interrupção), pode ser o caso de limpar o cache manualmente.

  • Tenho a impressão de que o openSUSE também não guarda cache de pacotes baixados e já instalados.

No Void, isso liberou 4 GiB de espaço em disco:

# xbps-remove -o       <-- remove orphans

# xbps-remove -O       <-- clean package cache

No Arch, liberei 7,4 GiB de espaço em disco:

# pacman -Sc
Packages to keep:
  All locally installed packages

Cache directory: /var/cache/pacman/pkg/
:: Do you want to remove all other packages from cache? [Y/n]
removing old packages from cache...

Database directory: /var/lib/pacman/
:: Do you want to remove unused repositories? [Y/n]
removing unused sync repositories...


# date; pacman -Scc; date                --- clean package cache   (-cc for all)
Mon 10 Feb 19:14:39 -03 2025

Cache directory: /var/cache/pacman/pkg/
:: Do you want to remove ALL files from cache? [y/N] y
removing all files from cache...

Database directory: /var/lib/pacman/
:: Do you want to remove unused repositories? [Y/n]
removing unused sync repositories...
Mon 10 Feb 19:14:47 -03 2025

No primeiro caso (-Sc), remove apenas o cache de pacotes obsoletos – pois o padrão é manter o cache dos pacotes instalados: – “CleanMethod = KeepInstalled” em /etc/pacman.conf

  • A menos que se faça manualmente essa limpeza, os pacotes vão se acumulando no cache – o que permite fazer downgrade, se necessário (e se der certo). :innocent:

No segundo caso (-Scc), remove todos. – Faço isso sem arrependimento, pois em quase 7 anos nunca fiz downgrade de pacotes no Arch.

Limpeza de “instantâneos” (snapshots)

Resumo

No caso do meu openSUSE – que já estava ocupando 47,5 GiB da partição de 50 GiB – a maior limpeza é, simplesmente, eliminar “instantâneos” (snapshots) mais antigos, deixando apenas os de 16 Janeiro. – Isso reduziu o espaço ocupado para 38,4 GiB:

# date; snapper ls
Mon 10 Feb 21:37:05 -03 2025
    # │ Type   │ Pre # │ Date                         │ User │ Cleanup  │ Description            │ Userdata
──────┼────────┼───────┼──────────────────────────────┼──────┼──────────┼────────────────────────┼──────────────
   0  │ single │       │                              │ root │          │ current                │
4203* │ single │       │ Mon 02 Dec 2024 00:28:27 -03 │ root │          │ writable copy of #4200 │
4224  │ pre    │       │ Sun 05 Jan 2025 17:57:21 -03 │ root │ number   │ zypp(zypper)           │ important=yes
4226  │ post   │  4224 │ Sun 05 Jan 2025 18:04:56 -03 │ root │ number   │                        │ important=yes
4227  │ pre    │       │ Mon 13 Jan 2025 06:31:15 -03 │ root │ number   │ zypp(zypper)           │ important=yes
4229  │ post   │  4227 │ Mon 13 Jan 2025 07:55:04 -03 │ root │ number   │                        │ important=yes
4233  │ pre    │       │ Mon 13 Jan 2025 10:40:36 -03 │ root │ number   │ zypp(zypper)           │ important=yes
4234  │ post   │  4233 │ Mon 13 Jan 2025 10:41:31 -03 │ root │ number   │                        │ important=yes
4290  │ pre    │       │ Thu 16 Jan 2025 20:04:13 -03 │ root │ number   │ zypp(zypper)           │ important=no
4291  │ post   │  4290 │ Thu 16 Jan 2025 20:04:19 -03 │ root │ number   │                        │ important=no
4302  │ single │       │ Sat 18 Jan 2025 03:59:41 -03 │ root │ timeline │ timeline               │
4304  │ single │       │ Sat 18 Jan 2025 05:00:20 -03 │ root │ timeline │ timeline               │
4305  │ single │       │ Sat 18 Jan 2025 08:45:37 -03 │ root │ timeline │ timeline               │

# snapper delete --sync 4224 4226 4227 4229 4233 4234

# snapper delete --sync 4302 4304 4305

# date; snapper ls
Mon 10 Feb 21:41:32 -03 2025
    # │ Type   │ Pre # │ Date                         │ User │ Cleanup │ Description            │ Userdata
──────┼────────┼───────┼──────────────────────────────┼──────┼─────────┼────────────────────────┼─────────────
   0  │ single │       │                              │ root │         │ current                │
4203* │ single │       │ Mon 02 Dec 2024 00:28:27 -03 │ root │         │ writable copy of #4200 │
4290  │ pre    │       │ Thu 16 Jan 2025 20:04:13 -03 │ root │ number  │ zypp(zypper)           │ important=no
4291  │ post   │  4290 │ Thu 16 Jan 2025 20:04:19 -03 │ root │ number  │                        │ important=no

Em seguida, instalei um pacote que não uso – para criar um novo par de “instantâneos”:

# zypper install kpat
(.....)

# date; snapper ls
Mon 10 Feb 21:44:56 -03 2025
    # │ Type   │ Pre # │ Date                         │ User │ Cleanup │ Description            │ Userdata
──────┼────────┼───────┼──────────────────────────────┼──────┼─────────┼────────────────────────┼─────────────
   0  │ single │       │                              │ root │         │ current                │
4203* │ single │       │ Mon 02 Dec 2024 00:28:27 -03 │ root │         │ writable copy of #4200 │
4290  │ pre    │       │ Thu 16 Jan 2025 20:04:13 -03 │ root │ number  │ zypp(zypper)           │ important=no
4291  │ post   │  4290 │ Thu 16 Jan 2025 20:04:19 -03 │ root │ number  │                        │ important=no
4292  │ pre    │       │ Mon 10 Feb 2025 21:44:05 -03 │ root │ number  │ zypp(zypper)           │ important=no
4293  │ post   │  4292 │ Mon 10 Feb 2025 21:44:09 -03 │ root │ number  │                        │ important=no

Reiniciei – escolhi o novo “instantâneo” nº 4292 (pré-KPat) – e dentro dele fiz o rollback:

# snapper rollback
Ambit is classic.
Creating read-only snapshot of default subvolume. (Snapshot 4294.)
Creating read-write snapshot of current subvolume. (Snapshot 4295.)
Setting default subvolume to snapshot 4295.

# date; snapper ls
Mon 10 Feb 21:50:31 -03 2025
    # │ Type   │ Pre # │ Date                         │ User │ Cleanup │ Description              │ Userdata
──────┼────────┼───────┼──────────────────────────────┼──────┼─────────┼──────────────────────────┼──────────────
   0  │ single │       │                              │ root │         │ current                  │
4203  │ single │       │ Mon 02 Dec 2024 00:28:27 -03 │ root │ number  │ writable copy of #4200   │
4290  │ pre    │       │ Thu 16 Jan 2025 20:04:13 -03 │ root │ number  │ zypp(zypper)             │ important=no
4291  │ post   │  4290 │ Thu 16 Jan 2025 20:04:19 -03 │ root │ number  │                          │ important=no
4292- │ pre    │       │ Mon 10 Feb 2025 21:44:05 -03 │ root │ number  │ zypp(zypper)             │ important=no
4293  │ post   │  4292 │ Mon 10 Feb 2025 21:44:09 -03 │ root │ number  │                          │ important=no
4294  │ single │       │ Mon 10 Feb 2025 21:49:55 -03 │ root │ number  │ rollback backup of #4203 │ important=yes
4295+ │ single │       │ Mon 10 Feb 2025 21:49:55 -03 │ root │         │ writable copy of #4292   │

Reiniciei de modo “normal” – que carregou o novo “instantâneo” nº 4295 – e deletei os outros, anteriores:

# date; snapper ls
Mon 10 Feb 21:53:19 -03 2025
    # │ Type   │ Pre # │ Date                         │ User │ Cleanup │ Description              │ Userdata
──────┼────────┼───────┼──────────────────────────────┼──────┼─────────┼──────────────────────────┼──────────────
   0  │ single │       │                              │ root │         │ current                  │
4203  │ single │       │ Mon 02 Dec 2024 00:28:27 -03 │ root │ number  │ writable copy of #4200   │
4290  │ pre    │       │ Thu 16 Jan 2025 20:04:13 -03 │ root │ number  │ zypp(zypper)             │ important=no
4291  │ post   │  4290 │ Thu 16 Jan 2025 20:04:19 -03 │ root │ number  │                          │ important=no
4292  │ pre    │       │ Mon 10 Feb 2025 21:44:05 -03 │ root │ number  │ zypp(zypper)             │ important=no
4293  │ post   │  4292 │ Mon 10 Feb 2025 21:44:09 -03 │ root │ number  │                          │ important=no
4294  │ single │       │ Mon 10 Feb 2025 21:49:55 -03 │ root │ number  │ rollback backup of #4203 │ important=yes
4295* │ single │       │ Mon 10 Feb 2025 21:49:55 -03 │ root │         │ writable copy of #4292   │

# snapper delete --sync 4203 4290 4291 4292 4293

# date; snapper ls
Mon 10 Feb 21:56:00 -03 2025
    # │ Type   │ Pre # │ Date                         │ User │ Cleanup │ Description              │ Userdata
──────┼────────┼───────┼──────────────────────────────┼──────┼─────────┼──────────────────────────┼──────────────
   0  │ single │       │                              │ root │         │ current                  │
4294  │ single │       │ Mon 10 Feb 2025 21:49:55 -03 │ root │ number  │ rollback backup of #4203 │ important=yes
4295* │ single │       │ Mon 10 Feb 2025 21:49:55 -03 │ root │         │ writable copy of #4292   │

Com isso, o espaço ocupado em disco caiu para 25,1 GiB – pouco mais da metade dos 47,5 iniciais.

Após a nova atualização em massa, o espaço ocupado em disco subiu para 31,6 GiB – pois foram criados mais alguns “instantâneos”.

Limpeza de Kernels antigos

Resumo

Já levei susto, quando era iniciante, ao descobrir que o Kubuntu estava acumulando muitas “revisões de Kernel” antigas. – Não ocupam tanto espaço assim, mas acabavam incomodando – pois nos Buntus, cada “revisão de Kernel” inclui uns 4 pacotes, pelo menos.

Adotei o hábito de remover um “Kernel mais antigo”, sempre que o Synaptic marca uma nova revisão de Kernel para instalar. – Com isso, fico sempre com 2 versões mais recentes. – Adotei esse hábito também no Debian, LMDE, Devuan, MX Linux – e no PCLinuxOS, que também usa o “apt” (apt-RPM) / Synaptic.

Não preciso ter essa preocupação no openSUSE, nem no Fedora – que mantêm as 3 versões mais recentes, por padrão, e remove automaticamente os excedentes, mais antigos. – Uma tranquilidade.

  • Porém, no Fedora, preciso desativar o BLS (Boot Loader Specification) – e executar manualmente seu Grub – para que o Grub do openSUSE possa detectar cada novo Kernel do Fedora.

No openSUSE, essa configuração está em /etc/zypp/zypp.conf:

multiversion.kernels = latest,latest-1,running
  • Ainda não encontrei essa configuração no caso do Fedora. – Mas, afinal, manter 3 Kernels está Ok para mim.

O Arch é ainda mais tranquilo. – Se você usa o Kernel normal (linux), toda nova revisão continuará se chamando “linux”. – Se você usa o Kernel LTS (linux-lts), toda nova revisão continuará se chamando “linux-lts”. – Nem perde tempo atualizando o Grub, porque o nome permanece sempre igual (sem numeração). – O Kernel anterior sempre se chama “linux-fallback”, ou “linux-lts-fallback”, e assim por diante.

No Void, é preciso um pouco mais de trabalho.

Quando se acumulam mais de 2 revisões do mesmo Kernel, basta executar 1 comando – ou 2 comandos, se quiser “ver” primeiro qual é a situação:

# date; vkpurge list
Sun 10 Mar 17:23:03 -03 2024
6.6.11_1
6.6.16_1
6.6.17_1

# date; vkpurge rm all; date
Sun 10 Mar 17:23:36 -03 2024
Removing kernel 6.6.11_1...
Removing /boot/config-6.6.11_1...
Removing /boot/vmlinuz-6.6.11_1...
Removing /usr/lib/modules/6.6.11_1...
Running post-remove kernel hook: 20-initramfs...
Running post-remove kernel hook: 50-efibootmgr...
Running post-remove kernel hook: 50-grub...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.6.21_1
Found initrd image: /boot/initramfs-6.6.21_1.img
Found linux image: /boot/vmlinuz-6.6.18_1
Found initrd image: /boot/initramfs-6.6.18_1.img
Found linux image: /boot/vmlinuz-6.6.17_1
Found initrd image: /boot/initramfs-6.6.17_1.img
Found linux image: /boot/vmlinuz-6.6.16_1
Found initrd image: /boot/initramfs-6.6.16_1.img
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
Removing kernel 6.6.16_1...
Removing /boot/config-6.6.16_1...
Removing /boot/vmlinuz-6.6.16_1...
Removing /usr/lib/modules/6.6.16_1...
Running post-remove kernel hook: 20-initramfs...
Running post-remove kernel hook: 50-efibootmgr...
Running post-remove kernel hook: 50-grub...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.6.21_1
Found initrd image: /boot/initramfs-6.6.21_1.img
Found linux image: /boot/vmlinuz-6.6.18_1
Found initrd image: /boot/initramfs-6.6.18_1.img
Found linux image: /boot/vmlinuz-6.6.17_1
Found initrd image: /boot/initramfs-6.6.17_1.img
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
Removing kernel 6.6.17_1...
Removing /boot/config-6.6.17_1...
Removing /boot/vmlinuz-6.6.17_1...
Removing /usr/lib/modules/6.6.17_1...
Running post-remove kernel hook: 20-initramfs...
Running post-remove kernel hook: 50-efibootmgr...
Running post-remove kernel hook: 50-grub...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.6.21_1
Found initrd image: /boot/initramfs-6.6.21_1.img
Found linux image: /boot/vmlinuz-6.6.18_1
Found initrd image: /boot/initramfs-6.6.18_1.img
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
Sun 10 Mar 17:24:01 -03 2024

Quando se instala um Kernel de uma nova “série”:

# xbps-query --regex -Rs '^linux[0-9.]+-[0-9._]+'
[-] linux4.19-4.19.304_1 Linux kernel and modules (4.19 series)
[-] linux5.10-5.10.228_1 Linux kernel and modules (5.10 series)
[-] linux5.15-5.15.169_1 Linux kernel and modules (5.15 series)
[-] linux5.4-5.4.266_1   Linux kernel and modules (5.4 series)
[-] linux6.1-6.1.114_2   Linux kernel and modules (6.1 series)
[-] linux6.10-6.10.14_2  Linux kernel and modules (6.10 series)
[-] linux6.11-6.11.11_1  Linux kernel and modules (6.11 series)
[*] linux6.12-6.12.8_1   Linux kernel and modules (6.12 series)
[-] linux6.5-6.5.13_1    Linux kernel and modules (6.5 series)
[*] linux6.6-6.6.69_1    Linux kernel and modules (6.6 series)
[-] linux6.7-6.7.12_1    Linux kernel and modules (6.7 series)
[-] linux6.8-6.8.12_2    Linux kernel and modules (6.8 series)
[-] linux6.9-6.9.12_1    Linux kernel and modules (6.9 series)

Então, basta remover a “série” mais antiga (se quiser):

# xbps-remove -R linux6.6-6.6.69_1

Name     Action    Version           New version            Download size
linux6.6 remove    6.6.69_1          -                      -

Size freed on disk:            153MB
Space available on disk:        12GB

Do you want to continue? [Y/n]
Removing `linux6.6-6.6.69_1' ...
Executing post-remove kernel hook: 20-initramfs ...
Executing post-remove kernel hook: 50-efibootmgr ...
Executing post-remove kernel hook: 50-grub ...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.12.8_1
Found initrd image: /boot/initramfs-6.12.8_1.img
Found linux image: /boot/vmlinuz-6.12.7_1
Found initrd image: /boot/initramfs-6.12.7_1.img
Found linux image: /boot/vmlinuz-6.12.6_3
Found initrd image: /boot/initramfs-6.12.6_3.img
Found linux image: /boot/vmlinuz-6.6.68_1
Found initrd image: /boot/initramfs-6.6.68_1.img
Found linux image: /boot/vmlinuz-6.6.67_1
Found initrd image: /boot/initramfs-6.6.67_1.img
Found linux image: /boot/vmlinuz-6.6.65_1
Found initrd image: /boot/initramfs-6.6.65_1.img
Adding boot menu entry for UEFI Firmware Settings ...
done
Removed `linux6.6-6.6.69_1' successfully.

0 downloaded, 0 installed, 0 updated, 0 configured, 1 removed.

E mandar remover os cacos:

# date; vkpurge rm all; date
Sun  5 Jan 17:00:37 -03 2025
Removing kernel 6.6.65_1...
Removing /boot/config-6.6.65_1...
Removing /boot/vmlinuz-6.6.65_1...
Removing /usr/lib/modules/6.6.65_1...
Running post-remove kernel hook: 20-initramfs...
Running post-remove kernel hook: 50-efibootmgr...
Running post-remove kernel hook: 50-grub...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.12.8_1
Found initrd image: /boot/initramfs-6.12.8_1.img
(...)
Found initrd image: /boot/initramfs-6.6.67_1.img
Adding boot menu entry for UEFI Firmware Settings ...
done
Removing kernel 6.6.67_1...
Removing /boot/config-6.6.67_1...
Removing /boot/vmlinuz-6.6.67_1...
Removing /usr/lib/modules/6.6.67_1...
Running post-remove kernel hook: 20-initramfs...
Running post-remove kernel hook: 50-efibootmgr...
Running post-remove kernel hook: 50-grub...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.12.8_1
(...)
Found initrd image: /boot/initramfs-6.6.68_1.img
Adding boot menu entry for UEFI Firmware Settings ...
done
Removing kernel 6.6.68_1...
Removing /boot/config-6.6.68_1...
Removing /boot/vmlinuz-6.6.68_1...
Removing /usr/lib/modules/6.6.68_1...
Running post-remove kernel hook: 20-initramfs...
Running post-remove kernel hook: 50-efibootmgr...
Running post-remove kernel hook: 50-grub...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.12.8_1
Found initrd image: /boot/initramfs-6.12.8_1.img
(...)
Found initrd image: /boot/initramfs-6.12.6_3.img
Adding boot menu entry for UEFI Firmware Settings ...
done
Removing kernel 6.12.6_3...
Removing /boot/config-6.12.6_3...
Removing /boot/vmlinuz-6.12.6_3...
Removing /usr/lib/modules/6.12.6_3...
Running post-remove kernel hook: 20-initramfs...
Running post-remove kernel hook: 50-efibootmgr...
Running post-remove kernel hook: 50-grub...
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.12.8_1
(...)
Found initrd image: /boot/initramfs-6.12.7_1.img
Adding boot menu entry for UEFI Firmware Settings ...
done
Sun  5 Jan 17:00:45 -03 2025

Limpeza da /home

Resumo

As pastas ocultas (cujos nomes começam com um “.” ponto), que costumam ocupar espaço crescente em disco, no meu caso pessoal, são:

  • .config
    • .config/google-chrome
    • .config/chromium
  • .googleearth
  • .cache
    • .cache/google-chrome
    • .cache/thumbnails
  • .wine, .wine32

Não gosto de ficar mexendo com essas pastas do Chrome / Chromium, para não ter dores de cabeça. – Ocupam bastante espaço, mas não aumentam muito.

As pastas do Wine também estão calmas, atualmente, pois instalei poucos aplicativos, bem antigos, e que atualmente quase nem uso mais.

O que tende a crescer sem limite é a subpasta “thumbnails” – onde o Gwenview vai criando miniaturas de todas as imagens que visualizo – e às vezes deleto tudo (sem nenhum problema).

Para manter toda a pasta ~/.cache bem comportada, agendei pelo Cron uma limpeza de tudo que tenha mais de 1 ano de idade:

find ~/.cache/ -type f -atime +365 -delete

Um “caso isolado” ocorreu quando fiz upgrade do Mageia, em 2023 – e a ocupação da /home subiu de 6,47 GiB para 11,6 GiB em apenas 1 semana – dos quais, 4,3 GiB em ~/.cache/tracker3 (que não existe nas minhas outras distros).

Numa pesquisa rápida, vi que é um indexador do Gnome — equivalente, talvez, ao baloo_file do KDE (que removo sempre que encontro). — Segundo meus registros, o tracker e o tracker-miners foram instalados como dependências do Foliate, em Setembro 2020 (mas ficaram quietos, até o upgrade em 2023).

Tentei remover o tracker, mas o urpme avisou que isso removeria 147 pacotes — incluindo Gimp, Chrome, LibreOffice, lsb, mate-polkit (?), plasma-desktop, rpmdrake, Xsane — a maioria dos quais, já estavam instalados, antes do tracker, e por isso é difícil acreditar que não possam viver sem ele.

Mas consegui remover o tracker-miners — e aproveitei para remover o gnome-desktop e o Firefox, que não uso. — Depois disso, não apareceram novos arquivos na pasta ~/.cache/tracker3 (que esvaziei).

Minha escolha das distros

Resumo

Os “ramos” que tenho explorado são os “principais”, dos primórdios do Linux (década de 90) – Debian, Red Hat, Slackware – e alguns “ramos” um pouco mais “recentes” – como Arch, Gentoo, Void:

  • Debian
    • Knoppix, Kurumin
    • Buntus (inclusive Mint, KDE Neon)
    • MX Linux (antiX), Devuan, LMDE
  • Fedora (Red Hat)
    • derivados do Mandrake:
      • Mageia, PCLinuxOS, ROSA
  • Slackware
  • openSUSE
  • Arch Linux
    • Manjaro, Antergos
  • derivados do Gentoo:
    • Sabayon, Redcore
  • Void Linux

Entre esses “ramos principais mais antigos” – e os ramos mais “recentes” – ficam 2 famílias que surgiram como “derivadas” e se tornaram “ramos próprios”:

  1. O openSUSE começou como “derivado” do Slackware – depois, tornou-se “derivado” do Red Hat – e acabou por se diferenciar, ao ponto de se tornar um “ramo próprio” (independente), dentro da “árvore Linux” – com suas próprias “derivadas”.

  2. O saudoso Mandrake (França) também começou como “derivado” do Red Hat – assim como o Conectiva (Brasil) – e no final foram reunidos sob o nome “Mandriva”… que acabou por desaparecer.

    • Na ausência da “distro-mãe”, a “família” tomou rumos diversos e se dispersou – ao ponto de ALT Linux, PCLinuxOS, Mageia, OpenMandriva, ROSA às vezes serem classificadas como “independentes”. – Mas é possível identificar semelhanças entre seus pacotes, que não sei exatamente “de onde pegam”: – do Fedora? do openSUSE? Umas, das outras?
6 curtidas

Meu Peppermint tem um recurso parecido com o seu, a cada nova atualização do kernel ele remove automaticamente o último kernel anterior tipo:

6.1.0-31-amd64= Em modo de espera
6.1.0-30-amd64= Usando no momento
6.1.0-29-amd64= Esse último já foi removido pelo xDaily
Resumindo, ele já está programado para fazer a remoção automática sem a intervenção do usuário. Quando lançarem o 6.1.0-32-amd64 o 6.1.0-30-amd64
será desinstalado por ele.
Coisas de Peppermints.

2 curtidas

Um ótimo recurso!

Outro recurso, de propósito um pouco diferente, são pequenos aplicativos GUI, específicos para administrar Kernels: – Exibem (ou exibiam) os Kernels disponíveis no repositório da distro, permitindo adicionar e remover.

Lembro de ter visto no Linux Mint e no Sabayon (pelo menos).

2 curtidas

Sim, o Synaptic tem essa função, ele exibe inúmeras versões de kernels disponíveis. Como a minha distro é baseada no Debian o Synaptic mostra vários kernels para a instalação mas, no caso do Peppermint ele foi programado para trabalhar somente com o K6.1 de acordo com a versão dele que é o Flagship, você pode forçar a instalação de kernel mais recentes mas após o reboot o xDaily que é um sistema de defesa do peppermint automaticamente irá remover esse kernel e colocar o anterior.

2 curtidas

Verdade!

Mas eu me referia a aplicativos GUI específicos para lidar com Kernels.

No Mint:

No Sabayon:

2 curtidas

Texto muito bom @frc_kde
Você alguma vez chegou a utilizar o OpenMandriva?
Sinceramente fiquei expantando em como não há no Opensuse uma ferramenta para limpeza dos snaptshots de maneira mais facil e clara para o usuário.

3 curtidas

Obrigado, @jridel

Infelizmente, nunca consegui rodar uma sessão Live do OpenMandriva, embora tenha baixado as ISOs várias vezes, fiz a verificação etc.

Ele tem uma ferramenta GUI simples e fácil para gerenciar os snapshots??

Da “família” Mandrake, só instalei Mageia (uso desde 2017), PCLinuxOS (desde 2018), e o ROSA (removi, por falta de mirror decente).

Pode até ser que exista! – Quase não explorei o YaST2 (só um pouco, no 1º ano).

Só de abrir o YaST2, já cria 2 snapshots (pre / post). – Se dentro dele abrir 5 módulos, “só para olhar”, cria mais 10 snapshots.

1 curtida

Podemos usar em I3WM, Fluxbox, OpenBox e etc isso também…

2 curtidas

Corrigi algumas coisas e acrescentei outras, que tinha esquecido – mas vou parar por aqui, pois já está no limite de 32 mil caracteres.

Podemos criar um script para remove as pastas residuais de programas já removidos. O usuario selecionaria a pasta desejada.

1 curtida

Talvez, possa se inspirar no Script do Baboo para limpeza do Windows. Mas fazendo isso, pensando no Linux.

2 curtidas

Existe. – Eu é que não lembrava mais, ou talvez nem sabia.

Calculando as diferenças entre 2 snapshots:

E só de abrir o YaST2 – mesmo sem executar nenhuma ação com ele – já criou um novo par de snapshots (pre / post):

2 curtidas

Consegui rodar o Live do Openmandriva aqui mas não cheguei a instalar, também não explorei para verificar se ele tinha alguma ferramenta GUI de gerenciamento para os snapshots.

Quando instalei o Opensuse eu usei ext4, então nem tive como verificar se havia alguma ferramenta nativa nele também.

1 curtida

Muito bom, realmente o Opensuse é top.

1 curtida

Eu já estava enjoado daquele processo complicado de fazer rollback – para depois “limpar” todos os snapshots. – Então, procurei um comando para simplificar:

# snapper rollback 4384
Ambit is classic.
Creating read-only snapshot of current system. (Snapshot 4386.)
Creating read-write snapshot of snapshot 4384. (Snapshot 4387.)
Setting default subvolume to snapshot 4387.

Então, reiniciei – trabalhei um bom tempo, para conferir se o openSUSE estava Ok – e mandei às favas os snapshots acumulados:

# snapper delete --sync 4295 4370 4371 4372 4373 4378 4379 4382 4383 4384 4386 4388 4389

# date; snapper ls
Sun 16 Mar 15:52:59 -03 2025
    # │ Type   │ Pre # │ Date                         │ User │ Cleanup │ Description            │ Userdata
──────┼────────┼───────┼──────────────────────────────┼──────┼─────────┼────────────────────────┼─────────
   0  │ single │       │                              │ root │         │ current                │
4387* │ single │       │ Sun 16 Mar 2025 13:36:07 -03 │ root │         │ writable copy of #4384 │

O espaço ocupado caiu de 33,9 GiB para 24,5 GiB. – Reiniciei de novo, e caiu para 24,4 GiB.

Uma coisa que eu não esperava, é que o openSUSE passou a usar menos Memória RAM:

openSUSE                 boot              RAM
Tumbleweed               time           script
                        + KDE            5 min

2025-03-02   08:24     1’ 2’’
2025-03-02   15:35       29’’         1463 MiB

2025-03-09   11:29       29’’
2025-03-09   16:04       28’’         1498 MiB

2025-03-16   10:11       29’’
2025-03-16   12:13       31’’         1494 MiB
2025-03-16   12:49                    1556 MiB

2025-03-16   13:40       30’’            ----- baixou, mas perdi o registro
2025-03-16   15:56       29’’         1230 MiB
2025-03-16   16:44       29’’         1256 MiB
2025-03-16   16:55       29’’         1261 MiB

Não esperava. – Não fazia questão. – E não sei se tem alguma coisa a ver com a mera “limpeza” de snapshots acumulados.

Pode ser efeito da atualização de hoje, mais cedo – que demorou uns 30 minutos (das 10:36 até as 12:05):

3933 packages to upgrade, 196 new, 18 to remove.

Package download size:    3.49 GiB