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

Windows 10 पर Android कर्नेल कैसे बिल्ड करें

Appual's के पास Android विकास पर कुछ बेहतरीन गाइड हैं, जैसे Android Open Source Project से कस्टम ROM कैसे बनाएं - लेकिन ये गाइड आमतौर पर शुद्ध Linux बिल्ड वातावरण की ओर लक्षित होते हैं।

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

इस गाइड में, हम विशेष रूप से ARM और MediaTek डिवाइस के लिए कर्नेल बनाना, फीचर जोड़ना, और Git का उपयोग करने का बुनियादी अवलोकन सीखेंगे।

आवश्यकताएं

  • Windows 10 x64 (Fall Creator's update के साथ)

Linux वातावरण सेट करना

  1. Windows 10 पर, Settings > Update and Security > For Developers > Developers Mode इनेबल करें पर जाएं।
  2. अब Control Panel > Programs > Turn Windows Features On or Off > Windows Subsystem for Linux इनेबल करें पर जाएं।
  3. अपने PC को रीबूट करें।
  4. Linux सबसिस्टम लॉन्च करें, और इसे डाउनलोड प्रक्रिया से गुजरने दें। एक पासवर्ड सेट करें और इसे न भूलें।
  5. अब Windows ऐप स्टोर पर जाएं, और Ubuntu डाउनलोड करें।
  6. Windows 10 डेस्कटॉप पर Ubuntu लॉन्च करें, और यह यूजरनेम और पासवर्ड मांगेगा।
  7. Ubuntu में, नेटिव टर्मिनल लॉन्च करें और निम्नलिखित कमांड टाइप करें: apt-get update
  8. यह ऐप्स और निर्भरताओं के लिए सभी रेपो को अपडेट करेगा।
  9. अगला टर्मिनल में टाइप करें: sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2
  10. यह जांचने के लिए कि सभी निर्भरताएं सही ढंग से इंस्टॉल की गई हैं, टर्मिनल में 'gcc' टाइप करें (कोई उद्धरण नहीं)।
  11. यदि "gcc" पहले से इंस्टॉल है, तो आपको "gcc : fatal error : no input file" दिखाई देना चाहिए।
  12. अब आप टर्मिनल में 'make' टाइप कर सकते हैं। यदि "make" पहले से इंस्टॉल है, तो आपको "make: *** no target specified and no makefile found. stop." दिखाई देना चाहिए।
  13. अगला 'git' टाइप करें, और यदि "git" पहले से इंस्टॉल है, तो आपको बुनियादी git कमांड का एक गुच्छा दिखाई देना चाहिए।
  14. अब हमें कुछ टूलचेन चाहिए (कई प्रकार हैं, जिनमें GCC, Linaro, और कुछ कस्टम शामिल हैं)। कुछ डिवाइस को अलग टूलचेन की आवश्यकता हो सकती है, उदाहरण के लिए, सभी डिवाइस कर्नेल GCC के साथ बूट या कंपाइल नहीं होंगे।

ARM डिवाइस के लिए

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

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

ARM 64 डिवाइस के लिए

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

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

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

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

ऊपरी बाईं ओर, आपको "Branch: Completed by xxxx" दिखाई देना चाहिए।

एक कर्नेल/प्रोजेक्ट के अलग-अलग संस्करण होते हैं, आमतौर पर "Testing", "Beta", "Final Release" आदि द्वारा अलग किए जाते हैं।

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

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

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

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

फिर टर्मिनल में टाइप करें: "git clone "github कर्नेल का URL" -b "ब्रांच का नाम"

उदाहरण के लिए: "git clone https://github.com/atxoxx/android_ke...amsung_msm8974 -b xenomTW"

कर्नेल बिल्ड करना

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

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

ARM डिवाइस के लिए

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

#!/bin/bash
export ARCH=arm
export CROSS_COMPILE=
mkdir output
make -C $(pwd) O=output "defconfig का नाम और वेरिएंट यदि आवश्यक हो"
make -j4 -C $(pwd) O=output

यहां इन कमांड का अवलोकन है, ताकि भविष्य में यह आसान हो।

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

एक और उदाहरण:

#!/bin/bash
export ARCH=arm
export CROSS_COMPILE=$(pwd)/arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi-
mkdir output
make -C $(pwd) O=output msm8974_sec_defconfig VARIANT_DEFCONFIG=msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG=selinux_defconfig
make -j4 -C $(pwd) O=output
cp output/arch/arm/boot/Image $(pwd)/arch/arm/boot/zImage

ARM 64 डिवाइस के लिए

#!/bin/bash
export ARCH=arm64
export CROSS_COMPILE="आपके टूलचेन का पथ" (यह "nameofarch-something-" जैसे कुछ से समाप्त होना चाहिए)
mkdir output
make -C $(pwd) O=output "defconfig का नाम और वेरिएंट यदि आवश्यक हो"
make -j4 -C $(pwd) O=output

Mediatek (MTK) डिवाइस के लिए

#!/bin/bash
export CROSS_COMPILE="आपके टूलचेन का पथ" (यह "nameofarch-something-" जैसे कुछ से समाप्त होना चाहिए)
export ARCH=arm
ARCH_MTK_PLATFORM=
make "defconfig का नाम और वेरिएंट यदि आवश्यक हो"
make -j4

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

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

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

जब यह समाप्त हो जाता है, तो यह "zimage is ready" जैसे संदेश के साथ सूचित करना चाहिए।

ARM और ARM64 डिवाइस

अपना zimage खोजने के लिए "/Output/arch/arm/boot/" पर जाएं।

Mediatek डिवाइस

अपना zimage खोजने के लिए "/arch/arm/boot/" पर जाएं।

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

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

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

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

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

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

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

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

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

अपने कर्नेल में फीचर जोड़ना

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

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

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

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

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

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

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

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

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

सरल विधि:

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

"CONFIG_LOCALVERSION="-" आपके defconfig में - के बाद

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

उन्नत विधियां:

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

ये लाइनें जोड़ें:

CONFIG_LOCALVERSION="yourkernelname"
LOCALVERSION="yourkernelversion"

Version, PatchLevel, Sublevel, या Extraversion लाइनों को संशोधित न करें।

वैकल्पिक विधि:

scripts/mkcompile_h पर जाएं और ये लाइनें जोड़ें:

LINUX_COMPILE_BY="yourchoice"
LINUX_COMPILE_HOST="yourchoice"

PATH समस्याओं को हल करना:

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

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

Windows 10 से अपने Ubuntu फोल्डर तक पहुंचना

आपका Ubuntu पथ आमतौर पर होना चाहिए:

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

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

  1. विंडोज 10 में कर्नेल पावर त्रुटि 41 ठीक करें: चरण-दर-चरण गाइड विंडोज 10 में कर्नेल पावर त्रुटि 41 ठीक करें: चरण-दर-चरण गाइड

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

  1. विंडोज 10 पर सीधे एंड्रॉइड फोन अलर्ट प्राप्त करें: चरण-दर-चरण मार्गदर्शिका विंडोज 10 पर सीधे एंड्रॉइड फोन अलर्ट प्राप्त करें: चरण-दर-चरण मार्गदर्शिका

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

  1. Windows 11 पर Android ऐप्स चलाएं: चरण-दर-चरण मार्गदर्शिका Windows 11 पर Android ऐप्स चलाएं: चरण-दर-चरण मार्गदर्शिका

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