2012-05-20 36 views
5

Điều tôi đã cố gắng thực hiện là vá hoặc hợp nhất sự khác biệt trong hạt nhân Android với hạt nhân Linux cho một bảng cụ thể. Tôi gặp sự cố khi hợp nhất thành công 2 mặc dù. Tôi đã cố gắng để kết hợp hạt nhân bằng cách sử dụng các lệnh này để thực hiện một tập tin vá lỗi: 1st: Tôi đã cố gắng để tìm ra điểm trong thời gian mà hạt nhân Linux vanilla được sáp nhập với cây Android.Sự khác biệt về bản vá giữa hạt nhân Android và hạt nhân vanilla linux

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

Sau đó, tôi làm cho bản vá:

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

Các miếng vá là rất lớn ~ 200MB, Nhưng khi tôi áp dụng các bản vá tôi nhận được một chuỗi dài các lỗi. Tôi đang theo dõi trang web này: http://blogs.arm.com/software-enablement/498-from-zero-to-boot-porting-android-to-your-arm-platform/

Tôi đánh giá cao bất kỳ trợ giúp nào bạn có thể có. (Chỉ cần cố gắng tìm hiểu những điều mới mẻ :-).)

+0

tôi đã được cho biết rằng sự khác biệt duy nhất giữa kernel Android và kernel linux là wakelock – L7ColWinters

+2

@ L7ColWinters thứ tại chỉ là một sự khác biệt giữa nhiều người. Hầu hết có lẽ sẽ đặt tên Binder và ashmem thậm chí còn quan trọng hơn. Để biết danh sách lỗi thời, hãy xem http://elinux.org/Android_Kernel_Features –

+0

@ user1232264 Linux 2.6.38 có phải là điểm khởi đầu thích hợp cho bạn không? Phiên bản kernel của bạn là gì? Đầu cây bạn đang cố gắng trích xuất là gì? Giả sử bạn đã phân biệt hạt nhân Android 3.x với dòng chính 2.6.38, và đó là lý do tại sao bạn có kết quả rất lớn, hoặc một thứ tương tự với phần lớn diff của bạn không liên quan gì đến việc làm android hóa hạt nhân . –

Trả lời

2

Có rất nhiều sự khác biệt giữa kernel Android và 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 

Để khắc phục rất nhiều vấn đề IPC, Android không có bất kỳ cơ chế IPC bình thường nào (và do đó hạt nhân không thực hiện nó) được tìm thấy trong Linux bình thường: bộ nhớ chia sẻ, các đường ống được đặt tên, semaphores vv Tất cả những thứ này có thể được thực hiện chỉ bằng Android BINDER.

Dưới đây là một liên kết cho thấy logic porting:

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

Còn có một nỗ lực để xây dựng lớp compability Android trong kernel vani (như Ubuntu/Fedora vv) để bạn có thể chơi với Android ứng dụng trên máy tính của bạn:

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

Các vấn đề liên quan