2012-05-20 14 views
5

Co próbowałem zrobić, to łatać lub scalić różnice w jądrze systemu Android z jądrem Linuxa dla konkretnej planszy. Mam problem z pomyślnym scaleniem 2. Próbowałem połączyć jądro za pomocą tych poleceń, aby utworzyć plik łatki: Pierwszy: Próbowałem znaleźć punkt w czasie, w którym jądro linuksa waniliowego zostało scalone z drzewem android.różnice w patchach pomiędzy jądrem Androida i jądrem linuksowym wanilii

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

Potem robię poprawkę:

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

Łatka był ogromny ~ 200MB, ale kiedy ja zastosować poprawkę mam długi ciąg błędów. Śledzę tę stronę: http://blogs.arm.com/software-enablement/498-from-zero-to-boot-porting-android-to-your-arm-platform/

Doceniam każdą pomoc, jaką możesz mieć. (Właśnie próbuje dowiedzieć się czegoś nowego :-)).

+0

powiedziano mi, że jedyna różnica między jądrem systemu Android i jądro linux jest blokada wybudzenia – L7ColWinters

+2

@ L7ColWinters th at jest tylko jedną różnicą między wieloma. Większość prawdopodobnie nazwałaby Binder i asmem jako jeszcze bardziej krytyczną. W przypadku nieaktualnej listy, zobacz http://elinux.org/Android_Kernel_Features –

+0

@ user1232264, czy Linux 2.6.38 jest dla ciebie odpowiednim punktem wyjścia? Jaka wersja jest Twoim jądrem dla twojej płyty? Jaka jest głowa drzewa, z którego próbujesz wyodrębnić? Domyślam się, że zmieniłeś jądro systemu Android 3.x na mainline 2.6.38, i dlatego uzyskałeś ogromny wynik, lub coś podobnego, gdy większość twoich różnic nie ma nic wspólnego z tym, co zirytowało jądro . –

Odpowiedz

2

Istnieje wiele różnic pomiędzy jądrem Android i jądra 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 

przezwyciężyć wiele problemów IPC Android nie ma żadnego normalnego mechanizmu IPC (a więc jądro go nie implementuje) znalezionego w normalnym systemie Linux: pamięć współdzielona, ​​nazwane potoki, semafory itd. Wszystkie te mogą być wykonane tylko przez Android BINDER.

Oto inny link, który pokazuje logikę wycinania:

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

Jest jeszcze inny wysiłek budowania Android warstwę kompatybilności w jądrze waniliowym (jak Ubuntu/Fedora itp), dzięki czemu można grać z Androidem na komputerze aplikacje:

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

Powiązane problemy