2012-05-20 18 views
5

Quello che ho cercato di fare è applicare patch o unire le differenze tra il kernel di Android e un kernel Linux per una scheda specifica. Ho problemi ad unire con successo il 2 però. Ho provato a unire il kernel usando questi comandi per creare un file di patch: 1: ho cercato di trovare il punto nel tempo in cui il kernel di vanilla linux è stato unito con l'albero di Android.differenze di patch tra kernel di Android e kernel di vanilla linux

git log --pretty=oneline --format="%Cgreen%h %Creset%s" \ 
      --grep="Linux 3." -n 20 

poi faccio la patch:

git diff c16fa4f HEAD > 3.4-to-android.patch 

La patch è stata enorme ~ 200MB, ma quando applico la patch ottengo una lunga serie di errori. Sto seguendo questo sito: http://blogs.arm.com/software-enablement/498-from-zero-to-boot-porting-android-to-your-arm-platform/

Apprezzo qualsiasi aiuto tu possa avere. (Sto solo cercando di imparare qualcosa di nuovo :-).)

+0

mi è stato detto che l'unica differenza tra il kernel di Android e il kernel Linux è il Wakelock – L7ColWinters

+2

@ L7ColWinters th a è solo una differenza tra molti. La maggior parte probabilmente chiamerebbe Binder e Ashmem come ancora più critici. Per un elenco non aggiornato vedi http://elinux.org/Android_Kernel_Features –

+0

@ user1232264 Linux 2.6.38 è un punto di partenza appropriato per te? Quale versione è il tuo kernel per la tua scheda? Qual è la testa dell'albero da cui stai cercando di estrarre? Come ipotesi, hai diffuso un kernel Android 3.x rispetto alla mainline 2.6.38, ed è per questo che hai ottenuto un risultato enorme, o qualcosa di simile dove la maggior parte del tuo diff non ha nulla a che fare con ciò che androidifica un kernel . –

risposta

2

Ci sono un sacco di differenze tra il kernel Android e il kernel Vanilla:

http://www.linaro.org/blog/android-blog/androidization-of-linux-kernel/

CONFIG_ASHMEM=y 
CONFIG_STAGING=y 
CONFIG_ANDROID=y 
CONFIG_ANDROID_BINDER_IPC=y 
CONFIG_ANDROID_LOGGER=y 
CONFIG_ANDROID_RAM_CONSOLE=y 
CONFIG_ANDROID_LOW_MEMORY_KILLER=y 

di superare molti dei problemi di IPC, Android non ha nessuno dei normali meccanismi IPC (e quindi il kernel non lo implementa) trovato nel normale Linux: memoria condivisa, named pipe, semafori ecc. Tutti questi possono essere fatti solo da Android BINDER.

Ecco un altro link che mostra la logica porting:

http://community.arm.com/groups/android-community/blog/2013/09/18/from-zero-to-boot-porting-android-to-your-arm-platform

C'è un altro sforzo di costruire strato compability Android nel kernel vanilla (come Ubuntu/Fedora, ecc) in modo che si può giocare con l'Android applicazioni sul tuo PC:

https://lkml.org/lkml/2013/12/4/469

Problemi correlati