Do bazy kodu jądra Linux, na podstawie której na początku lutego zostanie zbudowana wersja 6.19, wprowadzono kod podsystemu LUO (Live Update Orchestrator), opracowanego przez firmę Google do aktualizacji jądra w trybie na żywo bez fizycznego restartu. Podsystem oparty jest na mechanizmie KHO (Kexec HandOver), który wcześniej został dodany do jądra 6.16 i umożliwia uruchomienie nowego jądra ze starego bez utraty stanu systemu.
Live Update Orchestrator umożliwia pełne zrestartowanie i zaktualizowanie jądra bez zatrzymywania działania oraz bez utraty stanu systemu, urządzeń i procesów. Oprócz funkcjonalności KHO, podsystem LUO zachowuje stan urządzeń i pamięci operacyjnej, a także zapewnia ciągłość operacji związanych z DMA oraz przetwarzaniem przerwań. Stan jest zachowywany aż do przełączenia na nowe jądro i przywracany po uruchomieniu nowego jądra, bez zakłócania ciągłych operacji z urządzeniami, realizowanych przez system i aplikacje w przestrzeni użytkownika.
Cechą nowej serii poprawek jest możliwość zachowania deskryptorów plików memfd w celu utrzymania stanu ważnych danych w pamięci między restartami, takich jak zawartość pamięci operacyjnej. maszyn wirtualnych. Jako podstawowy obszar zastosowań podsystemu wymieniane jest szybkie aktualizowanie serwerów z systemami wirtualizacji opartymi na hipervizorze KVM, aby wyeliminować problemy z bezpieczeństwem i stabilnością przy minimalnym czasie przestoju maszyn wirtualnych. Firma Google już stosuje tę technologię w swoich środowiskach roboczych.
W odróżnieniu od livepatch, Ksplice, kpatch, kGraft i innych mechanizmów stosowania poprawek na gorąco, nowy podsystem nie ogranicza się do możliwości stosowania pojedynczych poprawek do działającego jądra i pozwala na całkowitą wymianę jądra. W przeciwieństwie do wywołania kexec, podsystem LUO zachowuje stan urządzeń i podsystemów jądra między restartami, podczas gdy wywołanie kexec działa jedynie jako bootloader, uruchamiający nowe jądro z pełną reinicjalizacją systemu (odpowiednik restartu, ale bez przekazywania kontroli do oprogramowania układowego).
Źródło: opennet.ru
