Che cos'è un aggiornamento del kernel con "Bump ABI"?

18

Come puoi vedere nel registro delle modifiche per Kernel Linux , ci sono messaggi di aggiornamento come "Bump ABI - Maverick ABI 28".

Secondo il Wiki di Ubuntu , l'ABI è qualcosa come un ponte tra lo spazio del kernel e gli altri moduli ( la mia interpretazione).

Questo aggiornamento aggiunge funzionalità extra e / o correzioni di bug? Dovrei aggiornare il mio kernel alla prossima versione?

    
posta Lekensteyn 21.03.2011 - 16:14

3 risposte

11

NB: Non sono un esperto di kernel, quindi questo si basa sulle conoscenze e sull'esperienza acquisite.

Un "bump" ABI non dovrebbe portare nuove funzionalità, anche se potrebbe "correggere" bug in alcuni moduli / applicazioni che stanno cercando una versione più alta dell'ABI. Dovresti comunque installare questi aggiornamenti, poiché generalmente mantenere tutti i componenti sincronizzati assicurerà stabilità e sicurezza.

    
risposta data RolandiXor 21.03.2011 - 17:41
11

Prima di tutto, non stai guardando il changelog per il kernel di Linux. Stai guardando il meta-pacchetto, che è un pacchetto che dipende dal kernel più recente. Probabilmente vuoi qualcosa come: link

Lo scopo di questo meta-pacchetto è di trasferire l'utente attraverso questi dossi ABI.

Ho la stessa vista su ABI e sul kernel. In pratica, un urto ABI significa che tutti i moduli devono essere ricostruiti sul kernel aggiornato.

La mia comprensione è anche in linea con Roland, in quanto un urto ABI non significa nuove funzionalità, solo correzioni critiche e aggiornamenti di sicurezza.

    
risposta data user1974 21.03.2011 - 18:02
3

L'ABI è l'interfaccia binaria delle applicazioni, (da non confondere con l'API, l'interfaccia di programmazione dell'applicazione). L'ABI definisce le dimensioni, i segni e gli ordini dei numeri che l'applicazione sta utilizzando.

Per essere chiari, ecco un esempio: voglio codificare l'età di un edificio, espressa in anni. Per fare ciò, posso usare un C unsigned char , che è un tipo che ha una dimensione di 1 byte e che può codificare valori da 0 a 255. Supponiamo ora di scoprire che 255 è un limite troppo basso perché ci sono edifici che sono stati costruiti più di 255 anni fa. Posso quindi usare un C unsigned int , che è lungo 4 byte e può codificare valori da 0 a 65535.

Cambiando il tipo da char a int , non ho cambiato il significato semantico del campo (era un'età espressa in anni e lo è ancora), tuttavia ho cambiato le sue dimensioni. Non è necessario modificare tutti i software che interagiscono con la mia applicazione, tuttavia parlerà una "lingua" diversa.

Pertanto, quando un kernel cambia il suo ABI, significa che ha cambiato la lingua in cui parla, ma nessuna funzionalità è stata aggiunta, rimossa o modificata. Tutti i moduli di terze parti che devono interagire con il kernel devono essere ricompilati per poter parlare questa nuova lingua, ma non devono essere modificati in alcun modo per funzionare correttamente.

    
risposta data Andrea Corbellini 03.11.2014 - 11:52

Leggi altre domande sui tag