Ștergerea kernel-urilor vechi pe Linux

Ș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 <numărul versiunii active>

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