====== Ștergerea kernel-urilor vechi pe Linux ======
Pe măsură ce actualizezi sistemul, distribuțiile Linux păstrează automat versiunile anterioare ale kernel-ului ca măsură de siguranță: dacă o versiune nouă cauzează probleme, poți reveni la una mai veche din meniul GRUB. Dezavantajul este că, în timp, partiția ''/boot'' se poate umple, iar lista din bootloader devine lungă și greu de navigat. Tutorialul de față acoperă distribuțiile de bază - cele pe care sunt construite majoritatea celorlalte: Debian, Ubuntu, Arch, Fedora, openSUSE, Gentoo, Alpine și NixOS.
**Înainte de a șterge orice kernel**, asigură-te că ai pornit sistemul cu kernel-ul pe care vrei să-l păstrezi. Nu șterge niciodată kernel-ul activ. Verifică versiunea curentă cu:
uname -r
==== Debian ====
Debian folosește ''apt'' ca manager de pachete. Kernel-urile sunt livrate ca pachete cu numele ''linux-image-X.Y.Z-amd64'' (sau arhitectura corespunzătoare).
=== Ștergere rapidă ===
Șterge toate kernel-urile vechi, păstrând versiunea activă și una de fallback:
sudo apt autoremove --purge
sudo update-grub
=== Verificare kernel activ și versiuni instalate ===
uname -r
dpkg --list | grep linux-image
Pachetele cu starea ''ii'' sunt instalate. Versiunea afișată de ''uname -r'' este cea activă - pe aceasta **nu** o șterge.
=== Ștergere manuală ===
Înlocuiește ''X.Y.Z-amd64'' cu versiunea exactă pe care vrei să o elimini:
sudo apt remove linux-image-X.Y.Z-amd64 linux-headers-X.Y.Z-amd64
sudo apt autoremove --purge
sudo update-grub
Pe Debian **Stable**, kernel-urile noi apar rar (o dată la câțiva ani, odată cu o versiune majoră). Pe **Testing** și **Unstable** (Sid), actualizările sunt mai frecvente și ''autoremove'' devine mai util.
==== Ubuntu ====
Ubuntu folosește ''apt'' ca manager de pachete, iar kernel-urile sunt livrate ca pachete cu nume de forma ''linux-image-X.Y.Z-generic''.
=== Ștergere rapidă ===
Șterge toate kernel-urile vechi, păstrând versiunea activă și una de fallback:
sudo apt autoremove --purge
sudo update-grub
=== Verificare kernel activ și versiuni instalate ===
uname -r
dpkg --list | grep linux-image
Caută pachetele cu starea ''ii'' (instalat). Versiunea afișată de ''uname -r'' este cea activă - pe aceasta **nu** o șterge.
=== Ștergere manuală ===
Înlocuiește ''X.Y.Z-generic'' cu versiunea exactă pe care vrei să o elimini:
sudo apt remove linux-image-X.Y.Z-generic linux-headers-X.Y.Z-generic linux-modules-X.Y.Z-generic
sudo apt autoremove --purge
sudo update-grub
Pachetul ''linux-generic'' asigură că sistemul instalează automat cele mai recente kernel-uri. Dacă îl ai instalat, ''autoremove'' este suficient pentru întreținere curentă. Distribuțiile derivate din Ubuntu (Linux Mint, Zorin OS, Pop!_OS, elementaryOS etc.) urmează același procedeu.
==== Arch Linux ====
Pe Arch Linux, kernel-urile sunt pachete obișnuite ''pacman''. Spre deosebire de alte distribuții, **Arch nu acumulează automat versiuni vechi** - la fiecare ''pacman -Syu'', kernel-ul este înlocuit, nu adăugat. Versiunile vechi apar doar dacă ai instalat explicit mai multe variante de kernel simultan.
=== Ștergere rapidă ===
Arch nu acumulează versiuni vechi în mod normal. Dacă ai instalat mai multe variante, șterge varianta de care nu mai ai nevoie:
sudo pacman -Rs linux-lts linux-lts-headers
Pentru curățarea cache-ului de pachete (inclusiv imaginile vechi de kernel stocate local):
sudo paccache -rk1
=== Kernel-uri disponibile ===
Arch oferă mai multe variante oficiale, instalabile simultan:
^ Pachet ^ Descriere ^
| ''linux'' | Kernel stabil, actualizat frecvent |
| ''linux-lts'' | Kernel LTS, mai conservator |
| ''linux-zen'' | Optimizat pentru desktop și gaming |
| ''linux-hardened'' | Cu patch-uri de securitate suplimentare |
=== Verificare versiuni instalate ===
uname -r
pacman -Q | grep linux
=== Actualizare GRUB după ștergere ===
sudo grub-mkconfig -o /boot/grub/grub.cfg
Dacă folosești ''systemd-boot'':
sudo bootctl update
=== Curățarea cache-ului pacman ===
''pacman'' stochează versiunile vechi ale pachetelor în ''/var/cache/pacman/pkg/''. ''paccache'' se găsește în pachetul ''pacman-contrib'':
sudo pacman -S pacman-contrib
sudo paccache -rk2
Comanda păstrează ultimele **2** versiuni din cache pentru fiecare pachet. Folosește ''-rk1'' pentru a păstra doar ultima versiune.
Dacă folosești un singur kernel (''linux''), **nu ai nimic de șters** - există o singură versiune activă în orice moment. Distribuțiile derivate din Arch (Manjaro, EndeavourOS, Garuda etc.) urmează același procedeu, cu mici diferențe de bootloader.
==== Fedora ====
Fedora folosește ''dnf'' ca manager de pachete. Kernel-urile sunt pachete cu numele ''kernel'', ''kernel-core'' și ''kernel-modules''. Distribuțiile derivate (RHEL, AlmaLinux, Rocky Linux, CentOS Stream) urmează același procedeu.
=== Ștergere rapidă ===
Metoda 1 - cu ''package-cleanup'' din pachetul ''dnf-utils'' (păstrează ultimele 2 versiuni):
sudo dnf install dnf-utils
sudo package-cleanup --oldkernels --count=2
Metoda 2 - nativă cu ''dnf repoquery'':
sudo dnf remove $(sudo dnf repoquery --installonly --latest-limit=-1 -q)
=== Verificare kernel activ și versiuni instalate ===
uname -r
dnf list installed kernel
=== Configurarea numărului de kernel-uri păstrate ===
''dnf'' are o opțiune nativă în ''/etc/dnf/dnf.conf'' care controlează câte versiuni sunt reținute automat la fiecare upgrade. Valoarea implicită este **3**:
installonly_limit=2
Cu valoarea ''2'', la fiecare actualizare ''dnf'' va păstra automat doar kernel-ul curent și unul de fallback. Valoarea minimă admisă este **2**.
=== Ștergere manuală ===
sudo dnf remove kernel-X.Y.Z kernel-core-X.Y.Z kernel-modules-X.Y.Z
Înlocuiește ''X.Y.Z'' cu versiunea exactă afișată de ''dnf list installed kernel''.
=== Actualizare GRUB ===
Pe sisteme cu BIOS:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Pe sisteme UEFI:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
Pe Fedora, kernel-ul nou este marcat automat ca implicit după instalare. Pe RHEL/AlmaLinux/Rocky Linux, înlocuiește calea UEFI cu ''/boot/efi/EFI/redhat/grub.cfg'' sau ''/boot/efi/EFI/rocky/grub.cfg'', după caz.
==== openSUSE ====
openSUSE (Leap și Tumbleweed) folosește ''zypper'' și ''rpm''. Spre deosebire de alte distribuții, openSUSE are un mecanism dedicat de gestionare a versiunilor multiple de kernel, configurat direct în ''/etc/zypp/zypp.conf''.
=== Ștergere rapidă ===
Aplică politica definită în ''zypp.conf'' și șterge automat versiunile în surplus:
sudo zypper purge-kernels
=== Verificare kernel activ și versiuni instalate ===
uname -r
rpm -q kernel-default
=== Configurarea politicii de retenție ===
În ''/etc/zypp/zypp.conf'', variabila ''multiversion.kernels'' controlează ce versiuni sunt păstrate:
multiversion.kernels = latest,running,latest-1
^ Valoare ^ Semnificație ^
| ''latest'' | Cea mai recentă versiune instalată |
| ''running'' | Versiunea activă curentă |
| ''latest-1'' | Penultima versiune (fallback) |
| ''latest-2'' | Antepenultima versiune |
Configurația de mai sus păstrează 3 versiuni. Pentru a păstra doar 2:
multiversion.kernels = latest,running
=== Ștergere manuală ===
Dacă preferi să ștergi o versiune specifică:
sudo zypper remove kernel-default-X.Y.Z
=== Actualizare GRUB ===
Bootloader-ul este actualizat automat la ''purge-kernels''. Dacă vrei să forțezi regenerarea manual:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Pe **openSUSE Tumbleweed** (rolling release), kernel-urile se actualizează frecvent. Configurarea ''multiversion.kernels'' este esențială pentru a preveni acumularea versiunilor. Pe **Leap** actualizările sunt mai rare, dar mecanismul este același.
==== Gentoo ====
Pe Gentoo, kernel-ul este compilat local din surse. Nu există un mecanism automat de ștergere - kernel-urile vechi rămân pe disc până când le elimini manual sau folosești instrumentul dedicat ''eclean-kernel''.
=== Ștergere rapidă ===
Instalează și folosește ''eclean-kernel'' din pachetul ''app-admin/eclean-kernel'' - șterge automat kernel-urile vechi, inclusiv sursele, imaginile din ''/boot'' și modulele:
sudo emerge app-admin/eclean-kernel
sudo eclean-kernel -n 1
Flag-ul ''-n 1'' păstrează doar cel mai nou kernel și șterge tot restul. Folosește ''-n 2'' pentru a păstra și un fallback. Rulează cu ''-p'' (pretend) mai întâi pentru a vedea ce urmează să fie șters:
sudo eclean-kernel -n 2 -p
=== Ștergere manuală ===
Dacă preferi să nu folosești ''eclean-kernel'', procesul manual implică mai mulți pași.
Verifică kernel-ul activ și versiunile instalate:
uname -r
equery list 'sys-kernel/*'
ls /boot/vmlinuz-* /boot/initramfs-*
Dezinstalează sursele kernel-ului vechi:
sudo emerge --unmerge sys-kernel/gentoo-sources:X.Y.Z
Șterge fișierele rămase din ''/boot'':
sudo rm /boot/vmlinuz-X.Y.Z-gentoo
sudo rm /boot/initramfs-X.Y.Z-gentoo.img
sudo rm /boot/System.map-X.Y.Z-gentoo
sudo rm /boot/config-X.Y.Z-gentoo
Șterge sursele și modulele:
sudo rm -rf /usr/src/linux-X.Y.Z-gentoo
sudo rm -rf /lib/modules/X.Y.Z-gentoo
=== Actualizare GRUB ===
sudo grub-mkconfig -o /boot/grub/grub.cfg
Pe Gentoo, symlink-ul ''/usr/src/linux'' trebuie să pointeze întotdeauna către sursele kernel-ului activ. Verifică înainte de ștergere:
ls -la /usr/src/linux
Dacă pointează către versiunea pe care vrei să o ștergi, actualizează symlink-ul mai întâi:
sudo eselect kernel list
sudo eselect kernel set
==== Alpine Linux ====
Alpine Linux folosește ''apk'' ca manager de pachete. Kernel-urile sunt livrate ca pachete ''linux-lts'', ''linux-stable'' (înlocuiește ''linux-edge'' începând cu Alpine 3.23) sau ''linux-virt'' (pentru mașini virtuale).
=== Ștergere rapidă ===
Alpine nu acumulează versiuni vechi în mod normal - ''apk upgrade'' înlocuiește kernel-ul în loc să adauge unul nou. Dacă ai instalat mai multe variante, elimină varianta nedorită:
sudo apk del linux-stable
Curăță fișierele reziduale din ''/boot'' dacă au rămas după un upgrade:
sudo rm /boot/vmlinuz-X.Y.Z-alpine
sudo rm /boot/initramfs-X.Y.Z-alpine
sudo rm /boot/System.map-X.Y.Z-alpine
=== Verificare versiuni instalate ===
uname -r
apk info | grep linux
=== Actualizare bootloader ===
Alpine folosește ''extlinux'' (BIOS) sau GRUB (UEFI) în funcție de modul de instalare.
Pentru ''extlinux'':
sudo update-extlinux
Pentru GRUB:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Pe Alpine rulat **în containere** (Docker, LXC), nu există bootloader și nu există kernel propriu - containerul folosește kernel-ul gazdei. Gestionarea kernel-ului se aplică doar instalărilor bare-metal sau VM-urilor cu Alpine ca sistem de operare complet.
==== NixOS ====
NixOS are o abordare fundamental diferită față de toate celelalte distribuții. Kernel-ul face parte din **configurația declarativă** a sistemului, definită în ''/etc/nixos/configuration.nix''. Fiecare actualizare creează o nouă **generație** - un snapshot complet al sistemului - iar generațiile vechi, inclusiv kernel-urile lor, sunt păstrate automat până la o colectare de gunoi (garbage collection).
=== Ștergere rapidă ===
Șterge toate generațiile vechi (păstrează doar cea curentă):
sudo nix-collect-garbage -d
''nix-collect-garbage -d'' șterge **toate** generațiile vechi fără posibilitate de recuperare. Dacă ai o actualizare recentă care nu funcționează corect, nu rula această comandă - mai întâi revino la o generație stabilă din meniul GRUB, apoi rulează garbage collection.
=== Verificare kernel activ și generații instalate ===
uname -r
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system
=== Configurarea kernel-ului în ''configuration.nix'' ===
Kernel-ul se specifică în ''/etc/nixos/configuration.nix''. Implicit este folosit ''linuxPackages'', dar poți alege explicit:
boot.kernelPackages = pkgs.linuxPackages_latest; # cel mai recent kernel
# sau
boot.kernelPackages = pkgs.linuxPackages_lts; # kernel LTS
Aplică modificarea cu:
sudo nixos-rebuild switch
=== Ștergere selectivă a generațiilor ===
Șterge generațiile mai vechi de 30 de zile:
sudo nix-collect-garbage --delete-older-than 30d
Șterge generații specifice după număr:
sudo nix-env --delete-generations 5 6 7 --profile /nix/var/nix/profiles/system
sudo nix-collect-garbage
=== Verificarea spațiului în ''/nix/store'' ===
sudo nix store gc
df -h /nix
Pe NixOS, menținerea mai multor generații este o **funcție de siguranță**, nu o problemă. Rollback-ul la o versiune anterioară a întregului sistem (inclusiv kernel) se face dintr-o singură comandă sau direct din GRUB. Rulează ''nix-collect-garbage'' periodic, nu înainte de fiecare update.
===== Verificarea spațiului recuperat =====
După ștergere, verifică spațiul liber pe partiția ''/boot'' (și pe ''/nix'' în cazul NixOS):
df -h /boot
===== Referințe =====
* [[https://manpages.debian.org/bookworm/apt/apt.8.en.html|apt(8) man page]]
* [[https://dnf.readthedocs.io/en/latest/conf_ref.html|DNF Configuration Reference]]
* [[https://documentation.suse.com/sles/15-SP5/html/SLES-all/cha-tuning-multikernel.html|openSUSE - Multiversion kernels]]
* [[https://wiki.archlinux.org/title/Kernel|Arch Wiki - Kernel]]
* [[https://wiki.gentoo.org/wiki/Kernel/Removal|Gentoo Wiki - Kernel Removal]]
* [[https://wiki.alpinelinux.org/wiki/Kernels|Alpine Wiki - Kernels]]
* [[https://wiki.nixos.org/wiki/Linux_kernel|NixOS Wiki - Linux Kernel]]
{{tag>kernel linux debian ubuntu arch fedora opensuse gentoo alpine nixos administrare-sistem boot grub apt dnf apk nix}}