इस गाइड में, डेवलपमेंट के लिए Pixel के कस्टम कर्नल को डाउनलोड, कंपाइल, और फ़्लैश करने के बारे में सिलसिलेवार निर्देश दिए गए हैं. GKI की वजह से, अब Android प्लैटफ़ॉर्म के बिल्ड से अलग कर्नल को अपडेट किया जा सकता है. यह तरीका सिर्फ़ Pixel 6 और इसके बाद के वर्शन वाले डिवाइसों पर लागू होता है. ऐसा इसलिए है, क्योंकि Pixel 5 और इससे पहले के डिवाइसों पर, vendor
पार्टीशन पर कर्नल मॉड्यूल को अपडेट करना ज़रूरी है. यह उन डिवाइसों के लिए Android प्लैटफ़ॉर्म के बिल्ड पर निर्भर करता है. जीकेआई के साथ काम करने वाले Pixel कर्नेल की ब्रांच टेबल में, जीकेआई के साथ काम करने वाले हर Pixel डिवाइस के लिए, कर्नेल रिपॉज़िटरी मेनिफ़ेस्ट ब्रांच शामिल होती है. Pixel 5 और इससे पहले के कर्नल मेनिफ़ेस्ट ब्रांच के लिए, लेगसी 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 (पैंथर) Pixel 7 Pro (चीता) |
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 kernel की उन ब्रांच के साथ डेवलप किया जा सकता है जो Pixel 6/6 Pro के साथ काम करने वाले Android प्लैटफ़ॉर्म और कर्नल के कॉम्बिनेशन टेबल में शामिल हैं. Android प्लैटफ़ॉर्म HAL और Pixel कर्नल ड्राइवर के बीच वेंडर यूएपीआई में अंतर होने की वजह से, टेबल में काम करने वाले बिल्ड कॉम्बिनेशन दिए गए हैं.
Pixel 6/6 Pro के लिए, Android प्लैटफ़ॉर्म और कर्नल के साथ काम करने वाले कॉम्बिनेशन
Pixel Kernel Manifest Branch | GKI ब्रांच | Android प्लैटफ़ॉर्म बिल्ड |
---|---|---|
gs-android-gs-raviole-mainline | android-mainline | android-latest-release |
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 बिल्ड चुनें.
- इन विकल्पों में से चुनें:
- डिवाइस वाइप करें
- सभी पार्टिशन के लिए Flash को ज़बरदस्ती चालू करना
- पुष्टि करने की सुविधा बंद करना
- डिवाइस को फ़्लैश करने के लिए, बिल्ड इंस्टॉल करें बटन दबाएं.
कर्नेल को डाउनलोड और कंपाइल करना
कर्नल रिपॉज़िटरी सिंक करना
कर्नल के सोर्स कोड को डाउनलोड करने के लिए, ये कमांड चलाएं. Pixel KERNEL_MANIFEST_BRANCH के लिए, Pixel 6/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
पार्टिशन पर डीटीबी और डीएलकेएम रैमडिस्क को सीधे तौर पर फ़्लैश किया जा सकता है. इस्तेमाल करने के लिए,sdk-repo-HOST_OS-platform-tools-12583183.zip
को v35.0.2-12583183 आर्टफ़ैक्ट से डाउनलोड करें और होस्ट मशीन के एनवायरमेंट में एक्सट्रैक्ट करें.Flash the kernel images में, डीटीबी और
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.zip
cd raven-ap1a.240505.004
unzip 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
कर्नेल को कंपाइल करना (Kleaf)
Android 13 में, build.sh
स्क्रिप्ट की जगह Kleaf नाम का नया कर्नल बिल्ड सिस्टम इस्तेमाल किया गया है. android13-5.15
और इसके बाद के वर्शन का इस्तेमाल करने वाले डिवाइसों के लिए, कर्नल को Kleaf का इस्तेमाल करके बनाया जाना चाहिए.
आसानी के लिए, KERNEL_REPO_ROOT
पर मौजूद build_DEVICE.sh
स्क्रिप्ट को चलाया जा सकता है. ज़्यादातर मामलों में, 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 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/6 Pro/6a के लिए, अगर आपने Update the vendor ramdisk सेक्शन में 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 enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
फ़ैक्ट्री इमेज वापस लाना
अपने डिवाइस को फ़ैक्ट्री इमेज पर वापस लाने के लिए, flash.android.com का इस्तेमाल किया जा सकता है.
लेगसी 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 |