In den Code-Basis des Linux-Kernels, auf dessen Grundlage im frühen Februar die Version 6.19 erstellt wird, wurde der Code des LUO (Live Update Orchestrator) akzeptiert. Dieser wurde von Google zur Aktualisierung des Kernels im Live-Modus ohne physische Neustarts entwickelt. Das System basiert auf dem KHO-Mechanismus (Kexec HandOver), der zuvor in den Kernel 6.16 integriert wurde und es ermöglicht, einen neuen Kernel aus einem alten zu starten, ohne den Zustand des Systems zu verlieren.
Der Live Update Orchestrator ermöglicht eine vollständige Aktualisierung und den Neustart des Kernels, ohne den Betrieb zu unterbrechen und den Zustand des Systems, der Geräte und Prozesse zu verlieren. Neben der Funktionalität von KHO speichert das LUO-System den Zustand der Geräte und des Arbeitspeichers und gewährleistet die Kontinuität der mit DMA und der Interrupt-Verarbeitung verbundenen Operationen. Der Zustand wird bis zum Wechsel zum neuen Kernel gespeichert und nach der Aktivierung des neuen Kernels wiederhergestellt, ohne unterbrochene Operationen der Geräte durch das System und Anwendungen im Benutzerraum zu verursachen.
Ein besonderes Merkmal der neuen Patch-Serie ist die Möglichkeit, Dateideskriptoren von memfd zu speichern, um den Zustand wichtiger Daten im Speicher zwischen Neustarts zu erhalten, wie z.B. den Inhalt des Arbeitsspeichers. virtuellen MaschinenDer Anwendungsbereich der Subsystem wird durch schnelle Aktualisierungen Server mit Virtualisierungssystemen, die auf dem KVM-Hypervisor basieren, erwähnt, um Sicherheits- und Stabilitätsprobleme bei minimalen Ausfallzeiten von virtuellen Maschinen zu beheben. Google nutzt diese Technologie bereits in seinen Arbeitsumgebungen.
Im Gegensatz zu Livepatch, Ksplice, kpatch, kGraft und anderen Mechanismen zum Hot-Patching ist das neue Subsystem nicht auf die Anwendung einzelner Korrekturen für den laufenden Kernel beschränkt und ermöglicht es, den Kernel vollständig zu ersetzen. Im Unterschied zum Aufruf von kexec bewahrt das LUO-Subsystem den Zustand von Geräten und Kernel-Subsystemen zwischen Neustarts, während der Aufruf von kexec nur als Bootloader fungiert, der einen neuen Kernel mit einer vollständigen Neuinitialisierung des Systems startet (entspricht einem Neustart, jedoch ohne die Steuerung an die Firmware zu übergeben).
Quelle: opennet.ru
