# Dokumentation: Proxmox VE Kernel Cleaner Script --- ## Übersicht Dieses Bash-Script hilft beim Aufräumen von alten Proxmox VE Kernel-Paketen auf einem System. Es zeigt Systeminformationen an, listet installierte Kernel auf, erlaubt das interaktive Entfernen älterer Kernel und erstellt auf ZFS-Systemen vor der Kernelentfernung Snapshots zur Sicherung. Außerdem unterstützt es einen Testmodus. --- ## Features & Funktionen ### 1. Systeminformationen anzeigen (`kernel_info`) - Erkennung des Boot-Modus (EFI oder Legacy BIOS). - Anzeige des Betriebssystems (aus `/etc/os-release`). - Anzeige von Speicherplatzinformationen der Boot-Partition oder ZFS Boot-Pool. - Anzeige des aktuell laufenden Kernels. - Auflistung aller installierten Proxmox-Kernel inkl. Anzahl. - Warnung, falls der laufende Kernel kein PVE-Kernel ist (mit Bestätigungsabfrage). ### 2. Interaktive Benutzerabfrage - Abfrage, wie viele Kernel behalten werden sollen (Standard: 1). - Anzeige der zu entfernenden Kernel. - Bestätigungsabfrage vor tatsächlicher Entfernung. ### 3. Kernel-Entfernung (`remove_old_kernels`) - Sammelt alle installierten PVE-Kernel (Paketnamen `proxmox-kernel-*-pve-signed`). - Entfernt alle außer der angegebenen Anzahl neuerer Kernel. - Führt die Entfernung mit `apt-get purge` für Kernel und zugehörige Header durch. - Aktualisiert nach der Entfernung den Bootloader (GRUB oder proxmox-boot-tool). ### 4. ZFS Snapshot-Management (`create_snapshot`) - Erkennung, ob das System auf ZFS installiert ist (über konfigurierbare Datasets). - Vor der Kernelentfernung wird ein Snapshot mit Tag `pve-kernel-cleaner-` erstellt. - Automatisches Entfernen älterer Snapshots, um maximal `MAX_SNAPSHOTS` zu behalten (Standard: 5). - Snapshot-Aktionen werden nur bei tatsächlicher Kernelentfernung ausgeführt, nicht bei Abbruch oder im Testmodus. ### 5. Testmodus (`-t` Option) - Führt keine Änderungen durch. - Zeigt an, welche Aktionen (Kernel-Entfernung, Snapshot-Erstellung, GRUB-Update) durchgeführt würden. --- ## Einstellungen - `MAX_SNAPSHOTS=5` – Maximale Anzahl von Snapshots, die behalten werden. - `ZFS_DATASETS=("rpool/ROOT/pve-1")` – Zu sichernde ZFS-Datasets. - `SNAPSHOT_TAG="pve-kernel-cleaner"` – Tag für Snapshots. - `dry_run` – Variable, die im Testmodus gesetzt wird, um Änderungen zu simulieren. --- ## Verwendung ```bash ./pve-kernel-cleaner.sh [-k NUM] [-t] [-h] ./pve-kernel-cleaner.sh [-k NUM] [-t] [-h] -k NUM: Anzahl der Kernel, die behalten werden sollen (Standard: 1). -t: Testmodus, keine Änderungen werden ausgeführt. -h: Zeigt die Hilfe an. Beispiel-Ausgabe (gekürzt) Systeminformationen: ───────────────────────────── Boot-Modus: EFI Betriebssystem: Debian GNU/Linux 12 (bookworm) ZFS Boot-Pool (rpool/ROOT/pve-1): benutzt 14.4G, verfügbar 188G Aktueller Kernel: 6.8.12-11-pve Installierte Proxmox-Kernel (7): - proxmox-kernel-6.8.12-5-pve-signed ... ───────────────────────────── Wie viele Kernel möchtest du behalten? [1]: 2 Es werden alle außer den 2 neuesten Kernel entfernt... Gefundene Kernel: 7 [-] PVE kernel search complete! Folgende Kernel werden entfernt: - proxmox-kernel-6.8.12-5-pve-signed ... [!] Would you like to remove the 5 selected PVE kernels listed above? [y/N]: y Erstelle ZFS Snapshot: rpool/ROOT/pve-1@pve-kernel-cleaner-2025-06-20-14-30-00 Snapshot erfolgreich erstellt. Gefundene Snapshots mit Tag 'pve-kernel-cleaner': 6 Entferne 1 alte Snapshots... [*] Entferne 5 alte PVE Kernel... [-] Entferne Kernel: proxmox-kernel-6.8.12-5-pve-signed... DONE! ... [*] Aktualisiere GRUB... GRUB aktualisiert. [*] Kernel-Entfernung abgeschlossen.