Computer >> कंप्यूटर >  >> समस्या निवारण >> Android

विंडोज 10 पर एंड्रॉइड कर्नेल कैसे बनाएं

एंड्रॉइड के विकास पर एपुअल के पास कुछ बेहतरीन गाइड हैं, जैसे कि एंड्रॉइड ओपन सोर्स प्रोजेक्ट से कस्टम रोम कैसे बनाएं - लेकिन ये गाइड आमतौर पर शुद्ध लिनक्स बिल्ड वातावरण के लिए तैयार किए जाते हैं।

इस गाइड में, हम आपको विंडोज 10 पर एंड्रॉइड कर्नेल बनाने का तरीका दिखाने जा रहे हैं - हां, हम अभी भी एक लिनक्स बिल्ड वातावरण का उपयोग करेंगे, लेकिन यह विंडोज 10 के भीतर एक लिनक्स सबसिस्टम होगा। इसलिए यदि आप विंडोज 10 हैं। Android के लिए विकसित करने में रुचि रखने वाले उपयोगकर्ता, हमारे गाइड का ध्यानपूर्वक पालन करें।

इस गाइड में, हम विशेष रूप से सीखेंगे कि एआरएम और मीडियाटेक उपकरणों के लिए कर्नेल कैसे बनाया जाए, सुविधाओं को जोड़ा जाए, और गिट का उपयोग करने का एक बुनियादी अवलोकन किया जाए।

आवश्यकताएं

  • Windows 10 x64 (फ़ॉल क्रिएटर के अपडेट के साथ)

लिनक्स परिवेश सेट करना

  1. विंडोज 10 पर, सेटिंग> अपडेट और सुरक्षा> डेवलपर्स के लिए> डेवलपर्स मोड सक्षम करें पर जाएं।
  2. अब कंट्रोल पैनल पर जाएं> प्रोग्राम्स> विंडोज फीचर्स को ऑन या ऑफ करें> लिनक्स के लिए विंडोज सबसिस्टम को इनेबल करें।
  3. अपने पीसी को रीबूट करें।
  4. लिनक्स सबसिस्टम लॉन्च करें, और इसे डाउनलोड प्रक्रिया से गुजरने दें। पासवर्ड सेट करें और उसे खोएं नहीं।
  5. अब विंडोज ऐप स्टोर पर जाएं और उबंटू डाउनलोड करें।
  6. Windows 10 डेस्कटॉप पर Ubuntu लॉन्च करें, और यह एक उपयोगकर्ता नाम और पासवर्ड का अनुरोध करेगा।
  7. उबंटू में, नेटिव टर्मिनल लॉन्च करें और निम्न कमांड टाइप करें:उपयुक्त-अपडेट प्राप्त करें
  8. यह ऐप्स और निर्भरता के लिए सभी रेपो को अपडेट करने के लिए आगे बढ़ेगा।
  9. टर्मिनल प्रकार में अगला:sudo apt-get install -y बिल्ड-आवश्यक कर्नेल-पैकेज libncurses5-dev bzip2
  10. यह जांचने के लिए कि क्या सभी निर्भरताएं सही तरीके से स्थापित हैं, टर्मिनल में 'gcc' टाइप करें (कोई उद्धरण नहीं)।
  11. यदि "gcc" पहले से स्थापित है, तो आपको "gcc:घातक त्रुटि:कोई इनपुट फ़ाइल नहीं" दिखाई देनी चाहिए
  12. अब आप टर्मिनल में 'मेक' टाइप कर सकते हैं। यदि "मेक" पहले से ही स्थापित है, तो आपको "मेक:*** कोई लक्ष्य निर्दिष्ट नहीं करना चाहिए और कोई मेकफ़ाइल नहीं मिला। रुको।"
  13. अगला प्रकार 'गिट', और अगर "गिट" पहले से स्थापित है, तो आपको बुनियादी गिट कमांड का गुच्छा देखना चाहिए।
  14. अब हमें कुछ टूलचेन की आवश्यकता है (जीसीसी, लिनारो और कुछ कस्टम वाले सहित कई प्रकार हैं)। कुछ उपकरणों को अलग-अलग टूलचेन की आवश्यकता हो सकती है, उदाहरण के लिए, सभी डिवाइस कर्नेल जीसीसी के साथ बूट या संकलित नहीं होंगे।

एआरएम उपकरणों के लिए

हम इसके लिए जीसीसी 4.7 का उपयोग करेंगे।

  1. लिनक्स टर्मिनल खोलें और टाइप करें:mkdir कर्नेल
  2. अब टाइप करें:सीडी कर्नेल
  3. (यह 'कर्नेल' होना जरूरी नहीं है, यह सादगी के लिए है, आप इसे जो चाहें नाम दे सकते हैं।)
  4. अब टाइप करें:git क्लोन https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

ARM 64 उपकरणों के लिए

आपको ARM 64 उपकरणों के लिए 64-बिट कर्नेल कंपाइलर की आवश्यकता है, उदाहरण के लिए aarch64।

अपने डिवाइस के लिए स्रोत फ़ाइलें प्राप्त करना

यह एक मुश्किल हिस्सा है, क्योंकि आपको एक गिटहब रेपो खोजने की जरूरत है जो आपके कर्नेल स्रोत को होस्ट करता है। आपको निश्चित रूप से इसे खोजना होगा, सबसे अधिक संभावना है कि यह एक्सडीए मंचों पर पाया जा सकता है।

यहाँ एक उदाहरण कर्नेल स्रोत Git है।

ऊपर बाईं ओर, आपको "शाखा:xxxx द्वारा पूर्ण" देखना चाहिए।

कर्नेल / प्रोजेक्ट के विभिन्न संस्करण होते हैं, जिन्हें आमतौर पर "परीक्षण", "बीटा", "अंतिम रिलीज़" आदि द्वारा अलग किया जाता है।

कर्नेल फोल्डर आमतौर पर इस प्रकार होते हैं:

  • /arch/arm/configs :इसमें डिवाइस के लिए विभिन्न कॉन्फ़िगरेशन फ़ाइलें शामिल हैं, जैसे कि गवर्नर, आदि।
  • /आउटपुट/आर्क/आर्म/बूट/ :यह वह जगह है जहां ज़िमेज संग्रहित किया जाएगा।
  • build.sh :एक स्क्रिप्ट जो निर्माण प्रक्रिया को सरल बनाएगी।
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 :यह आमतौर पर कर्नेल स्रोत में रखी गई एक टूलचेन है, इस प्रकार इसे ढूंढना आसान हो जाता है।

आपको अपना कर्नेल स्रोत डाउनलोड करना होगा।

लिनक्स टर्मिनल खोलें और सुनिश्चित करें कि आप पहले बनाए गए कर्नेल फ़ोल्डर में हैं (सीडी कर्नेल)।

फिर टर्मिनल में टाइप करें:"गिट क्लोन" जीथब कर्नेल का यूआरएल "-बी" शाखा का नाम "

उदाहरण के लिए:“गिट क्लोन https://github.com/atxoxx/android_ke…amsung_msm8974 -b xenomTW”

कर्नेल का निर्माण

इसे आसान बनाने के लिए, आप फ़ाइल एक्सप्लोरर में स्थान पर नेविगेट कर सकते हैं। यह /होम/यूजर आईडी/कर्नेल (या जो भी आपने कर्नेल फोल्डर का नाम दिया हो) होना चाहिए।

टूलचेन और कर्नेल स्रोत के लिए आपको दो फ़ोल्डर अंदर देखना चाहिए। कर्नेल स्रोत फ़ोल्डर के अंदर जाएं।

एआरएम उपकरणों के लिए

एक टर्मिनल में, निम्न कमांड टाइप करें:

#!/bin/bashexport ARCH=armexport CROSS_COMPILE=mkdir outputmake -C $(pwd) O=output "डिफकॉन्फिग का नाम और जरूरत पड़ने पर वैरिएंट का नाम"मेक -j4 -C $(pwd) O=output

भविष्य में इसे आसान बनाने के लिए, ये आदेश क्या करते हैं, इसका एक सिंहावलोकन यहां दिया गया है।

  • #!/bin/bash: स्क्रिप्ट को शेल कमांड में चलने के लिए कहता है
  • निर्यात ARCH=arm: यह परिभाषित करना कि यह किस प्रकार का कर्नेल आर्किटेक्चर है (उदाहरण के लिए arm64 आदि)
  • निर्यात CROSS_COMPILE= :पता लगाएँ कि टूलचेन कहाँ है। यह सटीक पथ से मेल खाना चाहिए, और अंत में डैश वास्तव में अनिवार्य है।
  • mkdir आउटपुट: यह संकलित ज़िमेज को सहेजने के लिए एक निर्देशिका बनाता है
  • मेक-सी $(pwd) O=output :कर्नेल संकलन को निर्देशित करने के लिए defconfig को परिभाषित करना।
  • मेक -j4 -C $(pwd) O=output :जब निर्माण प्रक्रिया शुरू होती है, -j# यह बताता है कि कितनी तेजी से प्रयास करना और संकलित करना है। आमतौर पर, आप इस नंबर को अपने CPU के अनुसार सेट करते हैं। उदाहरण के लिए, बजट CPU पर -j32 को सेट करने से शायद भारी अस्थिरता हो सकती है।
  • cp आउटपुट/आर्च/आर्म/बूट/इमेज $(pwd)/arch/arm/boot/zImage :यह छवि को दूसरे पथ पर ले जाने के लिए है।

एक और उदाहरण:

#!/bin/bashexport ARCH=armexport CROSS_COMPILE=$(pwd)/arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi-mkdir outputmake -C $ (pwd) O=आउटपुट msm8974_sec_defconfig VARIANT_DEFCONFIG=msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG=selinux_defconfigmake -j4 -C $(pwd) O=outputcp आउटपुट/आर्क/आर्म/बूट/इमेजARM 64 उपकरणों के लिए 
#!/bin/bashexport ARCH=arm64export CROSS_COMPILE="path to your toolchain" (इसे "nameofarch-something-") के साथ समाप्त करना होगा mkdir outputmake -C $(pwd) O=output "name of defconfig और जरूरत पड़ने पर वैरिएंट" मेक -j4 -C $(pwd) O=output

मीडियाटेक (एमटीके) उपकरणों के लिए

#!/bin/bashexport CROSS_COMPILE="path to your toolchain" (इसे "nameofarch-something-" जैसी किसी चीज़ से खत्म करना होगा) एक्सपोर्ट ARCH=arm ARCH_MTK_PLATFORM="डिफकॉन्फिग का नाम और जरूरत पड़ने पर वैरिएंट का नाम" बनाएं - j4

जब आप अपने कर्नेल आर्किटेक्चर के लिए आवश्यक चरणों को पूरा कर लेते हैं, तो आप टर्मिनल में टाइप कर सकते हैं:sudo bash build.sh

फिर आप अपना उपयोगकर्ता पासवर्ड दर्ज करेंगे, और संकलन प्रक्रिया शुरू हो जाएगी।

इसमें कुछ समय लग सकता है लेकिन आम तौर पर बहुत लंबा नहीं है, कर्नेल को संकलित करना संपूर्ण Android ROM को संकलित करने जैसा नहीं है। यह वास्तव में CPU पर निर्भर है - उदाहरण के लिए, 8GB RAM के साथ AMD Phenom X4 3.4GHz को शुरू से अंत तक संकलित करने में लगभग 10 मिनट का समय लगना चाहिए।

जब यह समाप्त हो जाए, तो यह आपको "ज़िमेज तैयार है" जैसे संदेश के साथ सूचित करेगा।

ARM और ARM64 डिवाइस

अपना ज़िमेज खोजने के लिए "/आउटपुट/आर्क/आर्म/बूट/" पर जाएं।

मीडियाटेक डिवाइस

अपना ज़िमेज ढूंढने के लिए "/arch/arm/boot/" पर जाएं।

सभी कर्नेल बिल्ड का परिणाम Zimage फ़ाइल में नहीं होगा, इसे कभी-कभी अन्य छवि प्रारूपों के रूप में बनाया जा सकता है।

महत्वपूर्ण:यदि आप फिर से संकलन करने जा रहे हैं, तो यह अनुशंसा की जाती है कि आप फिर से संकलन प्रक्रिया शुरू करने से पहले मेक क्लीन और मेक प्रॉपर कमांड दर्ज करें।

कर्नेल बूट बनाना

आपके पास चुनने के लिए दो विकल्प हैं।

आप या तो किसी भी कर्नेल विधि का उपयोग कर सकते हैं (जैसा कि इस XDA थ्रेड में XDA उपयोगकर्ता @ osm0sis द्वारा परिभाषित किया गया है)। आपको पूरा ट्यूटोरियल पढ़ना चाहिए, लेकिन चरणों का सारांश इस प्रकार है:

  1. zImage को रूट में रखें (dtb और/या dtbo को यहां उन डिवाइस के लिए भी जाना चाहिए जिनके लिए कस्टम डिवाइस की आवश्यकता होती है, प्रत्येक शामिल न होने पर मूल में वापस आ जाएगा)
  2. किसी भी आवश्यक रैमडिस्क फ़ाइल को /ramdisk में और मॉड्यूल को /मॉड्यूल में रखें (पूर्ण पथ जैसे /modules/system/lib/modules के साथ)
  3. कोई भी आवश्यक पैच फ़ाइलें (आमतौर पर आंशिक फ़ाइलें जो कमांड के साथ जाती हैं) को /patch
  4. . में रखें
  5. अपने कर्नेल का नाम जोड़ने के लिए anykernel.sh को संशोधित करें, बूट विभाजन स्थान, शामिल रैमडिस्क फ़ाइलों के लिए अनुमति, और किसी भी आवश्यक रैमडिस्क संशोधनों के लिए विधियों का उपयोग करें (वैकल्पिक रूप से, बैनर और/या संस्करण फ़ाइलों को रूट में भी रखें ताकि इन्हें प्रदर्शित किया जा सके। फ्लैश के दौरान)
  6. `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md *placeholder`

आपके पास उपलब्ध दूसरी विधि एक ही ROM (जैसे CM, TouchWiz, EMUI, आदि) और उसी Android संस्करण से boot.img को अनपैक करना है। फिर आप Zimage को स्वैप करेंगे। फिर से, यह वास्तव में एक जटिल प्रक्रिया है और आपको सटीक ट्यूटोरियल पढ़ना चाहिए, लेकिन चरणों का सारांश है:

  1. अनज़िप करें।
  2. या तो कमांड-लाइन "अनपैकिमग " का उपयोग करें, या केवल छवि को ड्रैग-एंड-ड्रॉप करें। यह छवि को विभाजित कर देगा और रैमडिस्क को एक उपनिर्देशिका में खोल देगा।
  3. रैमडिस्क को अपनी पसंद के अनुसार बदलें।
  4. repackimg बैच स्क्रिप्ट को किसी इनपुट की आवश्यकता नहीं है और सभी मूल छवि जानकारी (जिसे विभाजित और सहेजा गया था) का उपयोग करके नए पैक किए गए संशोधित रैमडिस्क के साथ पहले विभाजित zImage को फिर से संयोजित करता है।
  5. सफाई बैच स्क्रिप्ट विभाजन_img+ramdisk निर्देशिकाओं और किसी भी नई पैक की गई रैमडिस्क या छवि फ़ाइलों को हटाते हुए, फ़ोल्डर को उसकी प्रारंभिक स्थिति में रीसेट करती है।

इससे पहले कि आप अपने कर्नेल को फ्लैश करें, आपको अपने स्टॉक boot.img का बैकअप बनाना चाहिए, और फिर अपने कर्नेल को यह देखने के लिए फ्लैश करना चाहिए कि क्या यह आपके एंड्रॉइड सिस्टम को बूट करने की अनुमति देता है।

अपने कर्नेल में सुविधाएं जोड़ना

अपने कर्नेल में सुविधाओं को जोड़ना इसे मसाला देने का एक शानदार तरीका है। सीपीयू गवर्नर, आईओ शेड्यूलर, जीपीयू को ओवरक्लॉक करना, ऑडियो एन्हांसमेंट इत्यादि जैसी बहुत सी चीजें हैं जिन्हें आप बदल सकते हैं।

गवर्नर जोड़ने का एक उदाहरण यहाँ है (इस गवर्नर का कोडनेम Intellimm है)।

हम पहले 2 टेक्स्ट बॉक्स में देख सकते हैं कि "arch/arm/configs/" "msm8974_sec_defconfig" और "cm_msm8974_sec_defconfig" में बदलाव किए गए हैं।

इस फ़ाइल की 140 और 141 पंक्तियों के बीच यह पाठ जोड़ा गया है:"CONFIG_CPU_FREQ_GOV_INTELLIMM=y"
(यह लाइन Intellimm को सक्षम करने के लिए है जब आप अपना कर्नेल संकलित कर रहे हों)

अन्य टेक्स्ट बॉक्स (जो जोड़ा और हटाया गया है और उसका स्थान) पर भी यही तकनीक लागू होती है

आपके द्वारा जोड़ी जाने वाली सुविधाओं के आधार पर, अधिक या कम फ़ाइलों को संशोधित, जोड़ा या हटाया जा सकता है।

तो इसे सारांशित करने के लिए, एक कमिट आइए आप उन सभी परिवर्तनों को देखें जो किए गए हैं और बाकी सब कुछ!

सामान्य टिप्स और ट्रिक्स

कर्नेल का नाम और संस्करण कैसे बदलें:

आसान तरीका:

इस लाइन को अपनी defconfig फ़ाइल में संपादित करें:

"CONFIG_LOCALVERSION="-" after - आपके defconfig में

उदाहरण:CONFIG_LOCALVERSION="-XenomTW-3.2.6″

उन्नत तरीके:

अपने कर्नेल स्रोत के रूट फ़ोल्डर में मेकफ़ाइल पर नेविगेट करें।

ये पंक्तियां जोड़ें:

CONFIG_LOCALVERSION="nameofyourkernel"LOCALVERSION="versionofyourkernel"

संस्करण, पैचलेवल, सबलेवल, या एक्सट्रावर्सन लाइनों को संशोधित न करें।

वैकल्पिक तरीका:

स्क्रिप्ट/mkcompile_h पर जाएं और इन पंक्तियों को जोड़ें:

LINUX_COMPILE_BY="nameofyourchoice"LINUX_COMPILE_HOST="nameofyourchoice"

पाथ समस्याओं का समाधान:

यदि आपको "क्या आपका पथ सही है?" त्रुटि आती है, तो इसे Linux टर्मिनल में आज़माएँ:

"export PATH="pathtotoolchainlocation"/bin:$PATH"

Windows 10 से अपने Ubuntu फोल्डर को एक्सेस करना

उबंटू के लिए आपका रास्ता आम तौर पर होना चाहिए:

C:\Users”NAME”\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState \rootfs\home

लेकिन आपको सीधे विंडोज़ से फाइलों को संपादित नहीं करना चाहिए, क्योंकि यह आम तौर पर उन पर अनुमतियों को तोड़ देगा - फिर आपको लिनक्स टर्मिनल के भीतर से अनुमतियों को रीसेट करने की आवश्यकता होगी।


  1. Windows 10 में कर्नेल पावर 41 का समाधान कैसे करें?

    कंप्यूटर का क्रैश होना, फ्रीज होना, अनपेक्षित रीस्टार्ट होना, एप्लिकेशन का जवाब न देना कुछ ऐसे मुद्दे हैं जिनका सामना आपको करना पड़ सकता है यदि आपके कंप्यूटर में बिजली की आपूर्ति में कोई खराबी आ गई हो। यह विंडोज 10 पीसी में कर्नेल-पावर 41 त्रुटि भी प्रदर्शित करेगा। हालाँकि यह त्रुटि अचानक प्रकट होती

  1. Windows 10 पर Android सूचनाएं कैसे प्राप्त करें?

    Android दुनिया में सबसे अधिक उपयोग किए जाने वाले ऑपरेटिंग सिस्टमों में से एक है, जिसके बड़ी संख्या में उपयोगकर्ता हैं। अब जबकि Android द्वारा संचालित स्मार्टफ़ोन बेहतर हो रहे हैं, अब आप Windows 10 पर Android सूचनाएँ प्राप्त करने में सक्षम हैं। इस तरह, यदि आप काम कर रहे हैं या आपका फ़ोन दूर है, तो आप

  1. Windows 11 पर Android ऐप्स कैसे चलाएं

    यह जानने के लिए उत्सुक हैं कि क्या आप अपने विंडोज 11 पीसी पर Android ऐप्स चला सकते हैं? खैर, ऐसा लगता है कि हमारे सपने आखिरकार सच हो गए हैं। आप तृतीय-पक्ष सॉफ़्टवेयर या एमुलेटर का उपयोग किए बिना आसानी से Windows 11 पर Android ऐप्स चला सकते हैं। विंडोज पर अमेज़ॅन ऐपस्टोर ऐप का उपयोग करके, आप अपने पसं