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


19

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

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

Un tale aggiornamento aggiunge funzionalità extra e / o correzioni di bug? Devo aggiornare il mio kernel alla versione successiva?

Risposte:


12

NB: Non sono un esperto del kernel, quindi questo si basa sulla conoscenza e sull'esperienza raccolte.

Un "bump" ABI non dovrebbe portare nuove funzionalità, anche se potrebbe "correggere" i bug in alcuni moduli / applicazioni che cercano una versione superiore dell'ABI. È comunque necessario installare questi aggiornamenti, poiché generalmente mantenere tutti i componenti sincronizzati garantirà stabilità e sicurezza.


12

Prima di tutto, non stai guardando il log delle modifiche per il kernel Linux. Stai guardando il meta pacchetto, che è un pacchetto che dipende dall'ultimo kernel. Probabilmente vuoi qualcosa del genere: http://changelogs.ubuntu.com/changelogs/pool/main/l/linux-image-2.6.35-28-generic/linux-image-2.6.35-28-generic_2.6.35- 28.50 / changelog

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

Ho la stessa opinione di te sull'ABI e sul kernel. In pratica, un bump ABI significa che tutti i moduli devono essere ricostruiti sul kernel aggiornato.

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


2
Grazie per aver sottolineato che è solo un meta-pacchetto. Me ne sono dimenticato. aptitude changelog linux-image-2.6.35-28-genericvisualizza un elenco di modifiche. Non sono sicuro del motivo per cui il meta-pacchetto non contenga gli aggiornamenti dei linux-{image,headers}-*-genericpacchetti; forse perché ci sono anche linux-{image,headers}-*-serverpacchetti?
Lekensteyn,

4

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

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

Cambiando il tipo da chara int, non ho cambiato il significato semantico del campo (era un'età espressa in anni e lo è ancora), tuttavia ho cambiato la sua dimensione. Ogni software che interagisce con la mia applicazione non dovrà essere modificato, tuttavia parlerà una "lingua" diversa.

Pertanto, quando un kernel cambia la sua 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 parlare questa nuova lingua, ma non devono essere modificati in alcun modo per funzionare correttamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.