====== Ș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}}