2012-05-20 21 views
5

Was ich habe versucht zu tun, oder Patch die Unterschiede in der android Kernel auf einen Linux-Kernel für einen bestimmten Board verschmelzen. Ich habe Schwierigkeiten, die 2 erfolgreich zu verschmelzen. Ich habe versucht, den Kernel mit dem folgenden Befehlen zu fusionieren, um eine Patch-Datei zu machen: 1.: Ich habe versucht, den Zeitpunkt zu finden, wo der Vanille-Linux-Kernel mit der Android-Sammlung aufgenommen wurde.Patch Unterschiede zwischen Android-Kernel und Vanille Linux-Kernel

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

Dann mache ich den Patch:

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

Der Patch war riesig ~ 200 MB, aber wenn ich den Patch anwenden erhalte ich eine lange Reihe von Fehlern. Ich verfolge diese Website: http://blogs.arm.com/software-enablement/498-from-zero-to-boot-porting-android-to-your-arm-platform/

ich jede Hilfe dankbar Sie haben können. (Nur versuchen, etwas Neues zu lernen :-).)

+0

ich habe gesagt, dass der einzige Unterschied zwischen dem Android-Kernel und dem linux-Kernel die WakeLock – L7ColWinters

+2

@ L7ColWinters ist th Es ist nur ein Unterschied unter vielen. Die meisten würden Binder und ashmem wahrscheinlich als noch kritischer bezeichnen. Für eine veraltete Liste siehe http://elinux.org/Android_Kernel_Features –

+0

@ user1232264 ist Linux 2.6.38 ein geeigneter Startpunkt für dich? Welche Version ist dein Kernel für dein Board? Was ist der Kopf des Baumes, aus dem du zu extrahieren suchst? Als Vermutung hast du einen 3.x Android Kernel gegen die 2.6.38 Mainline diffundiert, und deshalb hast du ein riesiges Ergebnis, oder etwas Ähnliches, wo der Großteil deines Diff nichts mit dem zu tun hat, was einen Kernel androidisiert . –

Antwort

2

Es gibt viele Unterschiede zwischen Android-Kernel und Vanilla-Kernel:

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 

Um viele der IPC Probleme zu überwinden, Android hat keinen normalen IPC-Mechanismus (und so implementiert der Kernel ihn nicht), der in normalem Linux gefunden wird: geteilter Speicher, Named Pipes, Semaphore usw. All dies kann nur von Android BINDER getan werden.

Hier ist eine weitere Verbindung, die die Portierung Logik zeigt:

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

Es ist ein weiterer Versuch Android compability Schicht in Vanilla-Kernel zu bauen (wie Ubuntu/Fedora, etc.), so dass Sie mit dem Android spielen Apps auf Ihrem PC:

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

Verwandte Themen