Pagina 1 di 2

kernel live patch

Inviato: gio 7 mag 2015, 9:55
da sya54M
Ciao, avevo letto di questo nuovo sistema di patch che non richiede il riavvio della macchina e ora mi sono accorto che non rilasciano più le patch incrementali.
kpatch dicono che sia testato solo su poche distribuzioni, tra cui non slackware, io ho attivato CONFIG_LIVEPATCH nel kernel ma la compilazione del pacchetto kpatch trovato su gitub https://github.com/dynup/kpatch non va a buon fine:

Codice: Seleziona tutto

bash-4.3$ make
make -C kpatch-build
make[1]: Entering directory `/mnt/wd2/Sviluppo/Linux/SlackBuild/kpatch-master/kpatch-build'
gcc -MMD -MP -I../kmod/patch -Iinsn -Wall -g -c -o create-diff-object.o create-diff-object.c
In file included from create-diff-object.c:49:0:
list.h:33:0: warning: "offsetof" redefined
 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 ^
In file included from /usr/include/unistd.h:226:0,
                 from create-diff-object.c:47:
/usr/lib64/gcc/x86_64-slackware-linux/4.9.2/include/stddef.h:413:0: note: this is the location of the previous definition
 #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
 ^
create-diff-object.c: In function ‘kpatch_elf_open’:
create-diff-object.c:487:22: error: ‘ELF_C_READ_MMAP’ undeclared (first use in this function)                                
  elf = elf_begin(fd, ELF_C_READ_MMAP, NULL);                                                                                
                      ^                                                                                                      
create-diff-object.c:487:22: note: each undeclared identifier is reported only once for each function it appears in          
make[1]: *** [create-diff-object.o] Errore 1                                                                                 
make[1]: Leaving directory `/mnt/wd2/Sviluppo/Linux/SlackBuild/kpatch-master/kpatch-build'                                   
make: *** [build-kpatch-build] Errore 2
sbaglio io o gli utenti di distribuzioni diverse da quelle che dicono loro sono tagliati fuori sia dal vecchio sistema di patch incrementali che da questo nuovo?

Re: kernel live patch

Inviato: gio 7 mag 2015, 10:28
da conraid
Non mi son messo ancora a smanettare con il live patching, anche se mi sembra di aver letto che è ancora in fase embrionale nel kernel di default. Sulle patch incrementali non me ne ero accorto, porc...
però un modo è tornare al "vecchio modo", cioè fare un revert dell'ultima patch, tornare al kernel versione iniziale ed applicare la patch.
Cioè per esempio faccio il revert di 4.0.1, torno a 4.0 ed applico la 4.0.2
Se non sbaglio è anche il modo ancora indicato nella documentazione del kernel.
Oppure, forse ancor meglio, usi git usando i tag per la versione da te desiderata.
https://git.kernel.org/cgit/linux/kerne ... inux-4.0.y

So che non è la soluzione che chiedevi.

Re: kernel live patch

Inviato: gio 7 mag 2015, 11:39
da sya54M
Ci avevo pensato a fare il revert alla prima versione, probabilmente mi arrangerò così, ma usando git come si fa?

Re: kernel live patch

Inviato: gio 7 mag 2015, 12:03
da conraid
per creare il primo repository

Codice: Seleziona tutto

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
e dopo, quando esce l'aggiornamento, per aggiornare

Codice: Seleziona tutto

git pull
poi dipende se vuoi mantenerti un tag seperato per ogni versione, quindi ci aggiungi per esempio

Codice: Seleziona tutto

--branch linux-4.0.y
ora però non ho ben capito l'uso dei tag nel kernel, per esempio vedo che ci son due repository stable
https://git.kernel.org/cgit/linux/kernel/git/stable/
il secondo stable-queue.git è relativo alle patch, forse agendo su qualche comando git ti crei la tua patch incrementale

tieni presente che il principale è
https://git.kernel.org/cgit/linux/kerne ... linux.git/
ma son le versioni in sviluppo.

Insomma, studiaci un po' :-)

Re: kernel live patch

Inviato: gio 7 mag 2015, 12:09
da sya54M
ahh ok, grazie, farò alla vecchia maniera :)

Re: kernel live patch

Inviato: gio 7 mag 2015, 13:33
da sya54M
ho aggiornato il mio script facendo il reverse patch nel caso il kernel sia superiore al 3.x :) http://www.sya54m.eu/kernel.php

Re: kernel live patch

Inviato: gio 7 mag 2015, 15:50
da rik70
Non ho capito la questione:
non rilasciando più le patch incrementali, che si deve fare ad es. per passare dal kernel 4.0.1 al 4.0.2?

Re: kernel live patch

Inviato: gio 7 mag 2015, 15:53
da sya54M
si deve ritornare al 4.0 applicando la patch del 4.0.1 "al contrario" e poi patchare alla 4.0.2

Codice: Seleziona tutto

xzcat patch-4.0.1.xz |patch -R -p1
xzcat patch-4.0.2.xz |patch -p1
...oppure scaricare l'intero tarball...

Re: kernel live patch

Inviato: gio 7 mag 2015, 16:12
da rik70
sya54M ha scritto:si deve ritornare al 4.0 applicando la patch del 4.0.1 "al contrario" e poi patchare alla 4.0.2

Codice: Seleziona tutto

xzcat patch-4.0.1.xz |patch -R -p1
xzcat patch-4.0.2.xz |patch -p1
Oh.... grazie mille! :)
Scaricare e decomprimere ogni volta i sorgenti è una bella rottura.

P.s.
Ma perché quando ci son delle cose che funzionano bene e semplificano la vita le tolgono: ci provano gusto? :D

Re: kernel live patch

Inviato: gio 7 mag 2015, 16:15
da sya54M
è probabile, quindi sono più onanisti delle scimmie di openbsd? :D

Re: kernel live patch

Inviato: gio 7 mag 2015, 16:27
da rik70
sya54M ha scritto:è probabile, quindi sono più onanisti delle scimmie di openbsd? :D
:lol:

Re: kernel live patch

Inviato: ven 8 mag 2015, 16:41
da rik70
P.s.
Che c'abbiano senito? :D

Noto che son rispuntate fuori le patch incrementali.

Re: kernel live patch

Inviato: ven 8 mag 2015, 17:10
da sya54M
ah è vero :roll:

Re: kernel live patch

Inviato: ven 8 mag 2015, 19:12
da conraid
solitamente alla prima non la mettono, tanto è uguale, per la seconda si saran dimenticati :-)

Re: kernel live patch

Inviato: mar 12 mag 2015, 10:27
da conraid
Ho notato una cosa mentre "studiavo" cgit. Basta poco per creare una patch dal diff segnalato da kernel.org con "view diff", in pratica aggiungere raw alla stringa del diff
da
https://git.kernel.org/cgit/linux/kerne ... 4.0.1&dt=2
a
https://git.kernel.org/cgit/linux/kerne ... 4.0.1&dt=2