2012-05-20 32 views
5

के बीच पैच अंतर जो मैं करने की कोशिश कर रहा हूं वह एक विशिष्ट बोर्ड के लिए एंड्रॉइड कर्नेल में लिनक्स कर्नेल में अंतर को पैच या विलय करना है। हालांकि मुझे सफलतापूर्वक 2 विलय करने में परेशानी हो रही है। मैंने पैच फ़ाइल बनाने के लिए इन आदेशों का उपयोग करके कर्नेल को मर्ज करने का प्रयास किया है: पहला: मैंने उस बिंदु को खोजने का प्रयास किया जहां वेनिला लिनक्स कर्नेल एंड्रॉइड पेड़ के साथ विलय कर दिया गया था।एंड्रॉइड कर्नेल और वेनिला लिनक्स कर्नेल

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

तो मैं पैच बनाने:

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

पैच विशाल ~ 200MB था, लेकिन जब मैं पैच लागू मैं त्रुटियों की एक लंबी स्ट्रिंग मिलता है। मैं इस साइट का अनुसरण कर रहा हूं: http://blogs.arm.com/software-enablement/498-from-zero-to-boot-porting-android-to-your-arm-platform/

मैं आपकी सहायता की सराहना करता हूं। (बस कुछ नया सीखने की कोशिश कर रहा :-)।)

+0

मुझे बताया गया है कि एंड्रॉयड गिरी और लिनक्स कर्नेल के बीच फर्क सिर्फ इतना है wakelock – L7ColWinters

+2

@ L7ColWinters वें है कई लोगों में केवल एक अंतर है। अधिकांश शायद बाइंडर और आश्रम को और भी महत्वपूर्ण मानते हैं। एक पुरानी सूची के लिए http://elinux.org/Android_Kernel_Features –

+0

@ user1232264 लिनक्स 2.6.38 आपके लिए एक उपयुक्त प्रारंभिक बिंदु है? आपके बोर्ड के लिए आपका कर्नेल क्या संस्करण है? जिस पेड़ से आप निकालने की कोशिश कर रहे हैं उसका सिर क्या है? अनुमान के मुताबिक, आपने 2.6.38 मेनलाइन के खिलाफ 3.x एंड्रॉइड कर्नेल को अलग किया है, और इसीलिए आपको एक बड़ा परिणाम मिला है, या ऐसा कुछ ऐसा है जहां आपके डिफ के बड़े हिस्से में कर्नेल को एंड्रॉइड करने के लिए कुछ भी नहीं है । –

उत्तर

2

एंड्रॉयड गिरी और वेनिला कर्नेल के बीच मतभेद के बहुत सारे हैं:

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 

आईपीसी की समस्याओं का एक बहुत पर काबू पाने के लिए, Android सामान्य लिनक्स में सामान्य आईपीसी तंत्र (और इसलिए कर्नेल इसे कार्यान्वित नहीं करता है) में से कोई भी नहीं है: साझा स्मृति, नामित पाइप, सेमफोर इत्यादि। इन सभी को केवल एंड्रॉइड बाइडर द्वारा ही किया जा सकता है।

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

वेनिला कर्नेल में एंड्रॉयड compability परत का निर्माण करने (जैसे Ubuntu/Fedora आदि) ताकि आप Android के साथ खेल सकते हैं एक और प्रयास है:

यहाँ एक और कड़ी है कि पोर्टिंग तर्क से पता चलता है अपने पीसी पर ऐप्लिकेशन:

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

संबंधित मुद्दे