Kernel live patching (Italiano)
Il Kernel Live Patching (KLP) consente di applicare correzioni rapide nel kernel space senza riavviare l'intero sistema. Dalla versione 4.0, le relative patch sono state accettate [1] [2] [3], rendendo possibile la configurazione del proprio kernel per abilitare questa funzione. In generale, il KLP si ottiene attraverso i seguenti passaggi:
- ottenere l'albero dei sorgenti del kernel in esecuzione;
- preparare la patch per il kernel;
- utilizzare alcuni strumenti (come descritto a seguire) per facilitare la trasformazione e il caricamento della patch.
Alcuni progetti fornivano utility per il live patching prima che il KLP fosse ufficialmente supportato, come ksplice di Oracle, #kGraft di SuSE e #kpatch di Red Hat. Questi progetti hanno implementato la funzionalità KLP in modi differenti. Il set funzionale minimalista di patch entrato nel kernel mainstream è stato derivato da kpatch e kGraft.
kpatch
Installazione
Installare kpatchAUR per un kernel appropriato e kpatch-git per gli strumenti nello user space.
È anche possibile compilare manualmente un kernel che supporti l'uso di kpatch, abilitando le opzioni CONFIG_LIVEPATCH, CONFIG_DEBUG_INFO e CONFIG_KALLSYMS.
Uso
Una volta che entrambi i pacchetti sono stati compilati con successo e la macchina è stata riavviata, è possibile procedere come segue:
$ export ROOTDIR=percorso/a/directory/aur/linux-kpatch/src/linux-x-y $ cd $ROOTDIR
Supponendo di aver apportato alcune modifiche e di avere una patch some.patch (riferita all'albero dei sorgenti dopo un makepkg -o, non al kernel vanilla della versione x.y) nella directory di lavoro, avviare l'utility di kpatch:
$ kpatch-build -s $(pwd) -v $(pwd)/vmlinux some.patch
Questo comando comporta due compilazioni del kernel, quella originale e quella con la patch, quindi potrebbe richiedere del tempo per il completamento. Al termine della compilazione, dovrebbe essere presente un modulo kpatch-some.ko nella stessa directory. A quel punto:
# insmod kpatch-some.ko
dovrebbe completare l'operazione.
Per ulteriori informazioni, consultare le pagine man o il repository GitHub.
kGraft
kGraft non è stato testato in ambiente Arch.