Ștergerea kernel-urilor vechi pe Linux

Aceasta e o versiune anterioară a paginii.


Ș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.

<WRAP important> Î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

</WRAP>

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).

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

Ștergere automată cu ''autoremove''

apt poate curăța singur versiunile vechi, păstrând kernel-ul activ și penultima versiune ca fallback:

sudo apt autoremove --purge

<WRAP tip> 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. </WRAP>

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.

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

Ștergere automată cu ''autoremove''

Comanda următoare șterge toate kernel-urile vechi, păstrând versiunea activă și penultima ca fallback:

sudo apt autoremove --purge

<WRAP tip> Pachetul linux-generic asigură că sistemul instalează automat cele mai recente kernel-uri din seria curentă. 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. </WRAP>

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.

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

Ștergerea unui kernel secundar

Dacă ai instalat mai multe variante și vrei să elimini una:

sudo pacman -Rs linux-lts linux-lts-headers

Flag-ul -Rs șterge pachetul și dependențele orfane. Nu uita să incluzi și pachetul headers asociat, dacă l-ai instalat.

Actualizare GRUB

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/. Le poți curăța cu paccache din pachetul pacman-contrib:

sudo pacman -S pacman-contrib
sudo paccache -rk2

Comanda păstrează ultimele 2 versiuni din cache pentru fiecare pachet și le șterge pe restul.

<WRAP important> 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. </WRAP>

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.

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. 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ă recomandată 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.

Ștergere automată a versiunilor în surplus

Listează kernel-urile care depășesc limita setată:

sudo dnf repoquery --installonly --latest-limit=-1 -q

Pentru a le șterge efectiv:

sudo dnf remove $(sudo dnf repoquery --installonly --latest-limit=-1 -q)

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

<WRAP tip> 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. </WRAP>

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.

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 automată cu ''purge-kernels''

openSUSE include un instrument dedicat care aplică politica din zypp.conf și șterge versiunile în surplus:

sudo zypper purge-kernels

Ștergere manuală

sudo zypper remove kernel-default-X.Y.Z

Versiunea exactă o obții din output-ul comenzii rpm -q kernel-default.

Actualizare GRUB

Pe openSUSE, bootloader-ul este actualizat automat la ștergerea unui kernel prin purge-kernels. Dacă vrei să forțezi regenerarea:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

<WRAP tip> 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. </WRAP>

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. Sursa kernel-ului se află în /usr/src/, iar imaginile compilate în /boot/.

Verificare kernel activ și versiuni instalate

uname -r

Listează sursele de kernel instalate:

ls /usr/src/

Listează imaginile din /boot:

ls /boot/vmlinuz-* /boot/initramfs-*

Verifică ce versiuni sunt instalate ca pachete:

emerge --list-sets | grep kernel
equery list 'sys-kernel/*'

Ștergerea surselor vechi cu ''emerge''

Dezinstalează sursele kernel-ului vechi (înlocuiește cu versiunea exactă):

sudo emerge --unmerge sys-kernel/gentoo-sources:X.Y.Z

sau, pentru varianta vanilla-sources:

sudo emerge --unmerge sys-kernel/vanilla-sources:X.Y.Z

Curățarea fișierelor din ''/boot''

Ștergerea pachetului nu elimină automat imaginile din /boot. Șterge-le manual:

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

Curățarea surselor din ''/usr/src''

sudo rm -rf /usr/src/linux-X.Y.Z-gentoo

Curățarea modulelor

sudo rm -rf /lib/modules/X.Y.Z-gentoo

Actualizare GRUB

sudo grub-mkconfig -o /boot/grub/grub.cfg

Dacă folosești grub2:

sudo grub2-mkconfig -o /boot/grub/grub.cfg

<WRAP important> 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>

</WRAP>

Alpine Linux

Alpine Linux folosește apk ca manager de pachete și mkinitfs pentru generarea initramfs. Kernel-urile sunt livrate ca pachete linux-lts, linux-virt (pentru mașini virtuale) sau linux-edge. Alpine este folosit frecvent în containere Docker și pe sisteme embedded.

Verificare kernel activ și versiuni instalate

uname -r
apk info | grep linux

Gestionarea versiunilor

Pe Alpine, în mod normal rulezi o singură variantă de kernel. Versiunile vechi nu se acumulează automat - la apk upgrade, kernel-ul este înlocuit în loc să fie adăugat. Imaginile vechi din /boot pot rămâne însă pe disc după un upgrade.

Curățarea imaginilor vechi din ''/boot''

ls /boot/vmlinuz-* /boot/initramfs-*

Compară cu versiunea activă și șterge ce nu mai corespunde:

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

Ștergerea unui kernel secundar

Dacă ai instalat mai multe variante (ex. linux-lts și linux-edge):

sudo apk del linux-edge

Actualizare bootloader

Alpine folosește de obicei extlinux (syslinux) sau GRUB. Pentru extlinux:

sudo update-extlinux

Pentru GRUB:

sudo grub-mkconfig -o /boot/grub/grub.cfg

<WRAP tip> 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. </WRAP>

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).

Verificare kernel activ și generații instalate

uname -r

Listează toate generațiile disponibile:

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

Ștergerea generațiilor vechi

Șterge toate generațiile mai vechi de 30 de zile:

sudo nix-collect-garbage --delete-older-than 30d

Șterge toate generațiile vechi (păstrează doar cea curentă):

sudo nix-collect-garbage -d

<WRAP important> 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. </WRAP>

Ștergerea generațiilor specifice

sudo nix-env --delete-generations 5 6 7 --profile /nix/var/nix/profiles/system
sudo nix-collect-garbage

Actualizare GRUB

Pe NixOS, GRUB este regenerat automat la nixos-rebuild switch. Dacă vrei să forțezi:

sudo nixos-rebuild boot

Verificarea spațiului în ''/nix/store''

sudo nix store gc
df -h /nix

<WRAP tip> Pe NixOS, menținerea mai multor generații este o funcție de siguranță, nu o problemă. Spre deosebire de alte distribuții, rollback-ul la o versiune anterioară a întregului sistem (inclusiv kernel) se face dintr-o singură comandă sau direct din GRUB. Colectează gunoiul periodic, nu înainte de fiecare update. </WRAP>

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