Nel codice sorgente del kernel Linux, su cui sarà basata la release 6.19 all'inizio di febbraio, è stato integrato il codice del sottosistema LUO (Live Update Orchestrator), sviluppato da Google per aggiornare il kernel in modalità Live senza riavvio fisico. Il sottosistema si basa sul meccanismo KHO (Kexec HandOver), già aggiunto nel kernel 6.16, che consente l'avvio di un nuovo kernel da uno esistente senza perdere lo stato del sistema.
Il Live Update Orchestrator consente di riavviare completamente e aggiornare il kernel senza interrompere le operazioni e senza perdere lo stato del sistema, dei dispositivi e dei processi. Oltre alla funzionalità di KHO, il sottosistema LUO mantiene lo stato dei dispositivi e della memoria volatile, garantendo anche la continuità delle operazioni legate a DMA e gestione delle interruzioni. Lo stato viene mantenuto fino allo switch al nuovo kernel e ripristinato dopo l'attivazione del nuovo kernel senza interrompere le operazioni continue con i dispositivi, gestite dal sistema e dalle applicazioni nell'area utente.
Una caratteristica della nuova serie di patch è la possibilità di mantenere i file descriptor memfd per preservare lo stato di dati importanti in memoria tra i riavvii, come il contenuto della memoria volatile. macchine virtualiCome principale ambito di utilizzo del sottosistema viene citato il rapido aggiornamento server con i sistemi di virtualizzazione basati su hypervisor KVM, per risolvere problemi di sicurezza e stabilità con il minimo tempo di inattività delle macchine virtuali. Google sta già utilizzando questa tecnologia nei propri ambienti di lavoro.
A differenza di livepatch, Ksplice, kpatch, kGraft e altri meccanismi di patching a caldo, il nuovo sottosistema non è limitato alla possibilità di applicare singole correzioni a un kernel in esecuzione e consente di sostituire completamente il kernel. A differenza della chiamata kexec, il sottosistema LUO conserva lo stato dei dispositivi e dei sottosistemi del kernel tra i riavvii, mentre la chiamata kexec funziona solo come loader, avviando un nuovo kernel con una completa riesecuzione del sistema (equivalente a un riavvio, ma senza trasferire il controllo al firmware).
Fonte: opennet.ru
