इस गाइड में, डेवलपमेंट के लिए Pixel के कस्टम कर्नल को डाउनलोड, कंपाइल, और फ़्लैश करने के बारे में सिलसिलेवार निर्देश दिए गए हैं. GKI की वजह से, अब Android प्लैटफ़ॉर्म के बिल्ड से अलग कर्नल को अपडेट किया जा सकता है. यह तरीका, सिर्फ़ Pixel 6 और इसके बाद के वर्शन वाले डिवाइसों पर लागू होता है. ऐसा इसलिए है, क्योंकि Pixel 5 और इससे पहले के डिवाइसों पर, vendor पार्टीशन पर कर्नल मॉड्यूल को अपडेट करना ज़रूरी होता है. यह उन डिवाइसों के लिए Android प्लैटफ़ॉर्म के बिल्ड पर निर्भर करता है. जीकेआई के साथ काम करने वाले Pixel कर्नेल की ब्रांच टेबल में, जीकेआई के साथ काम करने वाले हर Pixel डिवाइस के लिए, कर्नेल रिपॉज़िटरी मेनिफ़ेस्ट ब्रांच शामिल होती है. Pixel 5 और उससे पहले के कर्नल के लिए, Legacy Pixel Kernels पर जाएं.
Pixel 6 और Pixel 6 Pro पर भी अपस्ट्रीम Linux कर्नल काम करता है. साथ ही, ये सिर्फ़ अपस्ट्रीम ड्राइवर की मदद से डिवाइस शेल प्रॉम्प्ट पर बूट हो सकते हैं. ज़्यादा जानकारी के लिए, अपस्ट्रीम Pixel कर्नल को बिल्ड और फ़्लैश करना लेख पढ़ें.
GKI Pixel कर्नल बनाना और उन्हें फ़्लैश करना
इस सेक्शन में, GKI के साथ काम करने वाली कर्नल ब्रांच को सिंक करने, बनाने, और फ़्लैश करने का तरीका बताया गया है. यहां दी गई टेबल में, Pixel के उन डिवाइसों की मैपिंग दी गई है जिन पर यह सुविधा काम करती है. साथ ही, उनके प्रोडक्शन कर्नल रिपॉज़िटरी ब्रांच के बारे में बताया गया है.
GKI के साथ काम करने वाली Pixel कर्नेल ब्रांच
| डिवाइस | रिपॉज़िटरी की शाखाएं | GKI कर्नेल |
|---|---|---|
| Pixel 9a (tegu) | android-gs-tegu-6.1-android16 | android14-6.1 |
| Pixel 9 Pro Fold (comet) | android-gs-comet-6.1-android16 | android14-6.1 |
| Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) |
android-gs-caimito-6.1-android16 | android14-6.1 |
| Pixel 8a (akita) | android-gs-akita-6.1-android16 | android14-6.1 |
| Pixel 8 (shiba) Pixel 8 Pro (husky) |
android-gs-shusky-6.1-android16 | android14-6.1 |
| Pixel Fold (felix) | android-gs-felix-6.1-android16 | android14-6.1 |
| Pixel Tablet (tangorpro) | android-gs-tangorpro-6.1-android16 | android14-6.1 |
| Pixel 7a (lynx) | android-gs-lynx-6.1-android16 | android14-6.1 |
| Pixel 7 (panther) Pixel 7 Pro (cheetah) |
android-gs-pantah-6.1-android16 | android14-6.1 |
| Pixel 6a (bluejay) | android-gs-bluejay-6.1-android16 | android14-6.1 |
| Pixel 6 (oriole) Pixel 6 Pro (raven) |
android-gs-raviole-6.1-android16 | android14-6.1 |
फ़ैक्ट्री में सपोर्ट किए गए कर्नेल के अलावा, Pixel 6 और 6 Pro डिवाइसों पर जीकेआई को सिर्फ़ Android Common कर्नेल की उन ब्रांच के साथ डेवलप किया जा सकता है जो Pixel 6 और Pixel 6 Pro के Android प्लैटफ़ॉर्म और कर्नेल के साथ काम करने वाले कॉम्बिनेशन टेबल में शामिल हैं. Android प्लैटफ़ॉर्म के HAL और Pixel कर्नल ड्राइवर के बीच वेंडर यूएपीआई में अंतर होने की वजह से, टेबल में काम करने वाले बिल्ड कॉम्बिनेशन दिए गए हैं.
Pixel 6 और Pixel 6 Pro के लिए, Android प्लैटफ़ॉर्म और कर्नल के काम करने वाले कॉम्बिनेशन
| Pixel Kernel Manifest Branch | GKI ब्रांच | Android प्लैटफ़ॉर्म बिल्ड |
|---|---|---|
| gs-android-gs-raviole-mainline | android-mainline | android-latest-release |
| gs-android16-6.12-gs101 | android16-6.12 | android-latest-release |
| gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) |
अपना Pixel डिवाइस सेट अप करें
इस फ़्लो चार्ट में, Pixel 6 और इसके बाद वाले डिवाइसों पर कर्नल को अपडेट करने की प्रोसेस के बारे में बताया गया है:
flash.android.com का इस्तेमाल करके डिवाइस को फ़्लैश करें
- flash.android.com पर जाएं.
- Android के साथ काम करने वाले प्लैटफ़ॉर्म और कर्नल के कॉम्बिनेशन के आधार पर, Android बिल्ड चुनें.
android-latest-releaseके लिए, "Back to Public", Canary या Beta में से कोई एक चुनें.
- इन विकल्पों में से चुनें:
- डिवाइस वाइप करें
- सभी पार्टिशन के लिए Flash करें
- पुष्टि करने की सुविधा बंद करना
- डिवाइस को फ़्लैश करने के लिए, बिल्ड इंस्टॉल करें बटन दबाएं.
कर्नेल रिपॉज़िटरी को सिंक करना
कर्नल के सोर्स कोड को डाउनलोड करने के लिए, ये कमांड चलाएं. Pixel KERNEL_MANIFEST_BRANCH के लिए, Pixel 6 और Pixel 6 Pro के Android प्लैटफ़ॉर्म और कर्नल के साथ काम करने वाले कॉम्बिनेशन टेबल देखें.
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
वेंडर रैमडिस्क को अपडेट करना
डिवाइस पर फ़्लैश किए गए Android प्लैटफ़ॉर्म बिल्ड से मेल खाने के लिए, कर्नल रिपॉज़िटरी में मौजूद vendor_ramdisk-DEVICE.img फ़ाइल को अपडेट करें. vendor_ramdisk-DEVICE.img फ़ाइल को अपडेट करने के लिए, यहां कुछ विकल्प दिए गए हैं. अगर Android 15 QPR2 (BP11.241025.006) या इसके बाद के वर्शन का इस्तेमाल किया जा रहा है, तो पहले विकल्प का इस्तेमाल करें. अगर ऐसा नहीं है, तो विकल्प (2) का इस्तेमाल करें.
पहला विकल्प) vendor_boot पार्टिशन के सिर्फ़ DTB और DLKM ramdisk बिट अपडेट करना
fastboot के 35.0.2-12583183 वर्शन से,
vendor_bootपार्टिशन पर डीटीबी और डीएलकेएम रैमडिस्क को सीधे तौर पर फ़्लैश किया जा सकता है. इस विकल्प का इस्तेमाल करने के लिए, अपने Android प्लेटफ़ॉर्म-टूल को v36.0.0 या इसके बाद के वर्शन पर अपग्रेड करें. इसके लिए, यह कमांड चलाएं:$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools"डीटीबी को फ़्लैश करने और
vendor_boot:dlkmमें कर्नेल इमेज फ़्लैश करें के लिए दिए गए निर्देशों का पालन करें.दूसरा विकल्प) Pixel फ़ैक्ट्री इमेज से वेंडर रैमडिस्क इमेज निकालें.
अपने डिवाइस के लिए, फ़ैक्ट्री इमेज डाउनलोड करें. इसके लिए, https://developers.google.com/android/images पर जाएं.
vendor_boot.imgको एक्सट्रैक्ट करें:यहां दिए गए निर्देशों में, Pixel 6 Pro AP1A.240505.004 का उदाहरण दिया गया है. zip फ़ाइल के नाम की जगह, डाउनलोड की गई फ़ैक्ट्री इमेज का नाम डालें.
unzip raven-ap1a.240505.004-factory-9d783215.zipcd raven-ap1a.240505.004unzip image-raven-ap1a.240505.004.zip vendor_boot.imgवेंडर रैमडिस्क पाने के लिए,
vendor_boot.imgको अनपैक करें.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_outएक्सट्रैक्ट की गई
vendor-ramdisk-by-name/ramdisk_फ़ाइल को Pixel कर्नल रिपॉज़िटरी में कॉपी करें.डिवाइस DEVICE_RAMDISK_PATH Pixel 6 (oriole)
Pixel 6 Pro (raven)prebuilts/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img Pixel 6a (bluejay) private/devices/google/bluejay/vendor_ramdisk-bluejay.img cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \ KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
कर्नेल को कंपाइल करना
Android 13 में, build.sh स्क्रिप्ट को Kleaf नाम के नए कर्नल बिल्ड सिस्टम से बदल दिया गया था. android13-5.15 और इसके बाद के वर्शन का इस्तेमाल करने वाले डिवाइसों के लिए, कर्नल को Kleaf का इस्तेमाल करके बनाया जाना चाहिए.
आसानी के लिए, build_DEVICE.sh स्क्रिप्ट को KERNEL_REPO_ROOT पर जाकर चलाया जा सकता है. ज़्यादातर मामलों में, DEVICE को कोड नेम होना चाहिए. यह किसी एक डिवाइस का कोड नेम हो सकता है. जैसे, "akita" (Pixel 8a). इसके अलावा, यह एक ऐसे कोड नेम का भी इस्तेमाल किया जा सकता है जो एक जैसे कर्नल वाले डिवाइसों के ग्रुप को दिखाता है. जैसे, "caimito" का मतलब है Pixel 9 (tokay), Pixel 9 Pro (caiman), और Pixel 9 Pro XL (komodo). android14 और इससे पहले के वर्शन के लिए, Pixel 6 और Pixel 6 Pro के लिए build_slider.sh का इस्तेमाल करें. साथ ही, Pixel 7 और Pixel 7 Pro के लिए build_cloudripper.sh का इस्तेमाल करें.
उदाहरण के लिए, अगर आपको android-gs-raviole-5.10-android14 ब्रांच पर Pixel 6 के लिए कर्नल बनाना है, तो यह निर्देश चलाएं:
build_slider.sh
प्रोडक्शन कर्नल ब्रांच पर डिफ़ॉल्ट रूप से, build_DEVICE.sh स्क्रिप्ट पहले से बनाए गए GKI कर्नल का इस्तेमाल करती हैं, ताकि बिल्ड प्रोसेस को तेज़ किया जा सके. अगर आपको कोर कर्नल में बदलाव करना है, तो एनवायरमेंट वैरिएबल BUILD_AOSP_KERNEL=1 सेट करें, ताकि कर्नल को स्थानीय सोर्स से बनाया जा सके. डेवलपमेंट कर्नल ब्रांच, डिफ़ॉल्ट रूप से सीधे कर्नल सोर्स बनाती हैं.
कर्नल बिल्ड सिस्टम और बिल्ड को पसंद के मुताबिक बनाने के तरीके के बारे में ज़्यादा जानने के लिए, Kleaf - Building Android Kernels with Bazel लेख पढ़ें.
कर्नेल इमेज को फ़्लैश करना
ध्यान दें: अगर आपने पुष्टि करने की सुविधा बंद नहीं की है, तो आपको कस्टम कर्नल फ़्लैश करने से पहले ऐसा करना होगा. इसके लिए, यह कमांड इस्तेमाल करें:fastboot oem disable-verification
चेतावनी: अगर किसी प्लैटफ़ॉर्म बिल्ड पर कस्टम कर्नल फ़्लैश किया जा रहा है, तो आपको अपने डिवाइस का डेटा मिटाना पड़ सकता है. ऐसा तब करना पड़ सकता है, जब नए कर्नल से जुड़ा सुरक्षा पैच लेवल (एसपीएल) डाउनग्रेड हो गया हो. इस प्रोसेस से, आपका पूरा निजी डेटा मिट जाता है. डेटा मिटाने से पहले, उसका बैक अप ज़रूर लें.fastboot -w
कर्नल इमेज फ़्लैश करने के लिए, अपने डिवाइस के लिए सूची में दिए गए हर कर्नल पार्टीशन के लिए, fastboot flash कमांड चलाएं. डाइनैमिक पार्टिशन के लिए, फ़्लैश करने से पहले आपको fastbootd मोड में रीबूट करना होगा.
| डिवाइस | कर्नेल के सेगमेंट |
|---|---|
| Pixel 6 (oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
boot dtbo vendor_boot या vendor_boot:dlkm vendor_dlkm (डाइनैमिक पार्टीशन) |
| Pixel 9 (tegu) Pixel 9 Pro Fold (comet) Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) Pixel 8 (shiba) Pixel 8 Pro (husky) Pixel Fold (felix) Pixel Tablet (tangorpro) Pixel 7a (lynx) Pixel 7 (panther) Pixel 7 Pro (cheetah) |
boot dtbo vendor_kernel_boot vendor_dlkm (dynamic partition) system_dlkm (dynamic partition) |
Pixel 6 पर android-mainline के लिए, फ़्लैश करने के निर्देश यहां दिए गए हैं:
fastboot flash boot out/slider/dist/boot.img
fastboot flash dtbo out/slider/dist/dtbo.img
fastboot flash --dtb out/slider/dist/dtb.img vendor_boot:dlkm out/slider/dist/initramfs.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img
अगर आपने Pixel 6, Pixel 6 Pro, और Pixel 6a के लिए, vendor_ramdisk को Update the vendor ramdisk में अपडेट किया है, तो vendor_boot पार्टीशन को अपडेट करने के लिए, इस कमांड का इस्तेमाल करें:
fastboot flash vendor_boot out/slider/dist/vendor_boot.img
कर्नल इमेज, DIST_DIR में देखी जा सकती हैं.
| कर्नेल ब्रांच | DIST_DIR |
|---|---|
| v5.10 | out/mixed/dist |
| v5.15 और इसके बाद के वर्शन | out/DEVICE/dist |
ध्यान दें: अगर आपके पास सीरियल डोंगल है और आपको सीरियल लॉग चालू करने हैं, तो यह कमांड डालें:होस्ट से कनेक्ट करने के लिए निर्देश का उदाहरण: fastboot oem uart enablefastboot oem uart config 3000000screen -fn /dev/ttyUSB* 3000000
फ़ैक्ट्री इमेज वापस लाना
अपने डिवाइस को फ़ैक्ट्री इमेज पर वापस लाने के लिए, flash.android.com का इस्तेमाल किया जा सकता है.
अपस्ट्रीम Pixel कर्नल को बनाना और फ़्लैश करना
Pixel 6 और Pixel 6 Pro, अपस्ट्रीम Linux कर्नल के साथ काम करते हैं. इसलिए, कर्नल डेवलपमेंट के लिए, डिवाइस शेल प्रॉम्प्ट को बूट करने के लिए, सिर्फ़ अपस्ट्रीम ड्राइवर के साथ android-mainline का इस्तेमाल किया जा सकता है. इस सेक्शन में, android-mainline से Pixel 6 और Pixel 6 Pro के कर्नल को सिंक करने, बनाने, और फ़्लैश करने का तरीका बताया गया है.
शुरू करने के लिए, यहां दिया गया तरीका अपनाएं.
- अपने Pixel डिवाइस को सेट अप करें में दिए गए निर्देशों का पालन करके, अपने डिवाइस को सेट अप करें
- कर्नल रिपॉज़िटरी सिंक करना में दिया गया तरीका अपनाकर,
common-android-mainlineकर्नल मेनिफ़ेस्ट ब्रांच को सिंक करें. Kleaf के बिल्ड टारगेट कॉन्फ़िगरेशन को
KERNEL_REPO_ROOT/devices/google/ravioleपाथ के तहत तय किया जाता है.raviole_upstreamबिल्ड टारगेट को कंपाइल करने के लिए, Kleaf कमांड चलाएं:tools/bazel run //devices/google/raviole:raviole_upstream_distप्रोडक्शन कर्नल की तरह ही, Android फ़ैक्ट्री इमेज के ऊपर कस्टम कर्नल फ़्लैश करते समय, पुष्टि करने की सुविधा बंद करें और अपने डिवाइस का डेटा मिटाएं. ज़्यादा जानकारी के लिए, कर्नेल इमेज फ़्लैश करना में दी गई ज़रूरी जानकारी देखें.
फ़ास्टबूट मोड में, कर्नल इमेज फ़्लैश करने के लिए ये कमांड चलाएं:
fastboot flash boot out/raviole_upstream/dist/boot.img fastboot flash dtbo out/raviole_upstream/dist/dtbo.img fastboot flash --dtb out/raviole_upstream/dist/dtb.img \ vendor_boot:dlkm out/raviole_upstream/dist/initramfs.imgडिवाइस के शेल प्रॉम्प्ट को ऐक्सेस करने के लिए, डिवाइस को रिकवरी मोड में रीबूट किया जा सकता है. इसके लिए, यह कमांड चलाएं:
fastboot reboot recoveryadb shellकमांड चलाकर, डिवाइस शेल खोलें. रूट ऐक्सेस पाने के लिए,adb rootकमांड का इस्तेमाल भी किया जा सकता है.
लेगसी Pixel कर्नल
रेफ़रंस के तौर पर, Pixel के लेगसी कर्नल ब्रांच टेबल में, Pixel 5 और इससे पहले के वर्शन वाले डिवाइसों के लिए कर्नल रिपॉज़िटरी ब्रांच दी गई हैं. इन डिवाइसों पर GKI काम नहीं करता.
Pixel के कर्नेल की लेगसी ब्रांच
| डिवाइस | AOSP ट्री में बाइनरी पाथ | रिपॉज़िटरी की शाखाएं |
|---|---|---|
| Pixel 5a (barbet) Pixel 4a (5G) (bramble) Pixel 5 (redfin) |
device/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
| Pixel 4a (सनफ़िश) | device/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
| Pixel 4 (फ़्लेम) Pixel 4 XL (कोरल) |
device/google/coral-kernel | android-msm-coral-4.14-android13 |
| Pixel 3a (sargo) Pixel 3a XL (bonito) |
device/google/bonito-kernel | android-msm-bonito-4.9-android12L |
| Pixel 3 (blueline) Pixel 3 XL (crosshatch) |
device/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
| Pixel 2 (walleye) Pixel 2 XL (taimen) |
device/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
| Pixel (sailfish) Pixel XL (marlin) |
device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |