Quali sono le modifiche fatte nel kernel Linux per renderlo un kernel Android? Con questa domanda intendo quali sono le differenze tra kernel Linux e kernel Android?
Quali sono le modifiche fatte nel kernel Linux per renderlo un kernel Android? Con questa domanda intendo quali sono le differenze tra kernel Linux e kernel Android?
Risposte:
Le differenze cambiano da versione a versione (sia Linux che Android) e il kernel esatto è diverso per ogni dispositivo. Un kernel per Android è un kernel Linux tradizionale, con driver aggiuntivi per il dispositivo specifico e altre funzionalità aggiuntive, come una migliore gestione dell'alimentazione o un supporto grafico più veloce.
Molte funzioni del kernel Android vengono successivamente aggiunte a upstream Linux dopo che la comunità open source le ha accettate (e forse modificate), ma altre non vengono mai aggiornate a monte, perché non sono accettabili per gli sviluppatori del kernel Linux, o perché " applicabile solo ad Android o hardware specifico.
Oltre alle differenze specifiche del dispositivo e al blocco della sveglia menzionati da Dan Hulme e Lie Ryan, Android ha rimosso le funzionalità IPC di System V (code di messaggi, segmenti di memoria condivisa, semafori) che potrebbero causare perdite di risorse ( http://www.kandroid.org/ndk /docs/system/libc/SYSV-IPC.html ). Questo probabilmente è solo una questione di configurazione della build del kernel. Anche l'IPC preferito di Android, chiamato Binder, ha del supporto nel kernel che, per quanto ne so, non è incluso nei kernel standard di Linux.
Penso che questa sorgente Android sia un'ottima documentazione per comprenderla.
Ed ecco un elenco di modifiche apportate dal kernel mainline per il kernel Android 4.14.
Le più grandi funzionalità includono:
Differenze rispetto a LTS
Rispetto a LTS (4.14.0), il kernel comune di Android ha 355 modifiche, 32266 inserzioni e 1546 cancellazioni (a partire da febbraio 2018).