Ingenjörer frÄn Google har publicerat ett set patchar för diskussion bland Linux-kÀrnans utvecklare, med implementeringen av subsystemet Live Update Orchestrator (LUO), som Àr avsett för att uppdatera kÀrnan i realtid. Till skillnad frÄn mekanismer som livepatch, Ksplice, kpatch och kGraft, begrÀnsas det nya systemet inte till att kunna tillÀmpa enstaka korrigeringar pÄ den körande Linux-kÀrnan, utan gör det möjligt att helt omstarta och uppdatera kÀrnan utan att stoppa driften av vissa enheter. Projektet baseras pÄ ett set patchar KHO (Kexec HandOver) till mekanismen kexec, som anvÀnds för att ladda ett nytt kÀrna frÄn en redan körande Linux-kÀrna utan fysisk omstart.
Den frÀmsta tillÀmpningen av LUO nÀmns som molnmiljöer, dÀr det blir möjligt att uppdatera hypervisorn KVM utan att störa verksamheten hos de körande virtuella maskiner. SÀrskilt kommer det att vara möjligt att pausa virtuella maskiner under omstarten av kÀrnan med hypervisorn, vilket hÄller alla enheter kopplade till virtuella maskiner i drift.
För att möjliggöra denna funktionalitet tillhandahÄller LUO möjligheter att spara tillstÄndet för enheter innan vÀxlingen till den nya kÀrnan och ÄterstÀlla tillstÄndet omedelbart efter aktiveringen av den nya kÀrnan pÄ ett sÄdant sÀtt att pÄgÄende system- och applikationsoperationer i anvÀndarutrymmet med enheterna inte kommer att störas. Under omstarten av kÀrnan sÀkerstÀlls ocksÄ kontinuiteten i de pÄgÄende operationerna med DMA och aktivitet relaterad till avbrottshantering.
För att samordna tillstÄndssparande och övergÄngen till den nya kÀrnan tillhandahÄller LUO ett API som gör det möjligt för andra subsystem i kÀrnan att koppla in hanterare för att övervaka och delta i processen för Live-omstart. Bland de subsystem som kan integreras med LUO nÀmns hypervisorn KVM, iommu, avbrottssystemet och drivrutiner. För att överföra minnesstatus frÄn den gamla kÀrnan till den nya anvÀnds KHO (Kexec HandOver). Hanteringen sker genom sysfs-filerna "/sys/kernel/liveupdate/{state, prepare, finish}".
KĂ€lla: opennet.ru
