homelab: Images ohne Container sind kein Docker-Update; neuer Kernel heißt Neustart
Nach dem ersten echten „Alle aktualisieren“ (25.09., 8 Schritte grün): - 9 veraltete Images, die kein Container benutzt (Basis-Images für Builds/CI), blieben für immer „neu“ – Arcanes Updater tauscht nur Container. Sie zählen jetzt nicht mehr, der Grund nennt sie als Aufräum-Hinweis. - Proxmox legt bei Kernel-Updates kein /var/run/reboot-required an: 7.0.14-19 war installiert, 7.0.14-12 lief, kein Neustart-Knopf. Der Ausführer vergleicht jetzt den neuesten installierten (oder festgepinnten) Kernel mit dem laufenden. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
903fbbfbb9
commit
17d4ee3ea8
@@ -637,9 +637,26 @@ def _host() -> dict:
|
||||
host["fehler"] = str(exc)[:200]
|
||||
code, kernel = _laufen(["uname", "-r"], 5)
|
||||
host["kernel"] = kernel if code == 0 else None
|
||||
vorhanden = [os.path.basename(p)[len("vmlinuz-"):] for p in glob.glob("/boot/vmlinuz-*")]
|
||||
host["kernel_neu"] = neuer_kernel(host["kernel"], vorhanden, _lesen("/etc/kernel/proxmox-boot-pin").strip() or None)
|
||||
host["neustart_noetig"] = host["neustart_noetig"] or bool(host["kernel_neu"])
|
||||
return host
|
||||
|
||||
|
||||
def _versionsschluessel(version: str) -> tuple[int, ...]:
|
||||
return tuple(int(x) for x in re.findall(r"\d+", version))
|
||||
|
||||
|
||||
def neuer_kernel(laufend: str | None, vorhanden: list[str], pin: str | None = None) -> str | None:
|
||||
"""Der Kernel, mit dem der Host beim nächsten Start hochkäme, wenn es nicht der laufende ist (ein festgepinnter
|
||||
geht vor). Proxmox legt bei Kernel-Updates keine /var/run/reboot-required an — am 25.09.2026 war 7.0.14-19
|
||||
installiert, 7.0.14-12 lief, und nichts zeigte einen Neustart an."""
|
||||
if not laufend or not vorhanden:
|
||||
return None
|
||||
naechster = pin if pin in vorhanden else max(vorhanden, key=_versionsschluessel)
|
||||
return None if naechster == laufend else naechster
|
||||
|
||||
|
||||
def bericht() -> dict:
|
||||
speicher = _speicher_liste()
|
||||
arten = {s["storage"]: s.get("type") for s in speicher}
|
||||
|
||||
Reference in New Issue
Block a user