2012-05-20 6 views
5

Lo que he estado tratando de hacer es parchar o fusionar las diferencias en el núcleo de Android con un kernel de Linux para una placa específica. Estoy teniendo problemas para fusionar con éxito el 2 sin embargo. Intenté fusionar el kernel usando estos comandos para hacer un archivo de parche: Primero: Intenté encontrar el punto en el tiempo donde el kernel de vanilla linux se fusionó con el árbol de Android.diferencias de parche entre el kernel de Android y el kernel de vanux Linux

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

Entonces hago el parche:

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

El parche era enorme ~ 200 MB, pero cuando aplico el parche me sale una larga cadena de errores. Estoy siguiendo este sitio: http://blogs.arm.com/software-enablement/498-from-zero-to-boot-porting-android-to-your-arm-platform/

Agradezco cualquier ayuda que pueda tener. (Sólo tratando de aprender algo nuevo :-).)

+0

me han dicho que la única diferencia entre el núcleo de Android y el núcleo de Linux es la wakelock – L7ColWinters

+2

@ L7ColWinters th at es solo una diferencia entre muchas. La mayoría probablemente llamaría a Binder y ashmem como aún más críticos. Para una lista desactualizada, consulte http://elinux.org/Android_Kernel_Features –

+0

@ user1232264 ¿es Linux 2.6.38 un punto de partida apropiado para usted? ¿Qué versión es tu núcleo para tu placa? ¿Cuál es la cabeza del árbol del que estás tratando de extraer? Como adivinanza, has diferenciado un kernel 3.x de Android contra la línea principal 2.6.38, y es por eso que obtuviste un gran resultado, o algo similar, donde la mayor parte de tu diff no tiene nada que ver con lo que androidifica un kernel . –

Respuesta

2

Hay muchas diferencias entre el kernel de Android y vainilla núcleo:

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 

que superar muchos de los problemas de la CIP, Android no tiene ninguno de los mecanismos normales de IPC (y por lo tanto el kernel no lo implementa) que se encuentran en Linux normal: memoria compartida, canalizaciones con nombre, semáforos, etc. Todo esto puede hacerse solo con Android BINDER.

Aquí hay otro enlace que muestra la lógica de portabilidad:

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

Hay otro esfuerzo para construir la capa compability Android en el kernel de vainilla (como Ubuntu/Fedora, etc) de forma que se puede jugar con el Android aplicaciones en su PC:

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

Cuestiones relacionadas