Kernel live patching (Italiano)
Related articles
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 kpatch AUR 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
This article or section needs expansion.
kGraft non è stato testato in ambiente Arch.