Pixel कर्नेल बनाएं

इस गाइड में, डेवलपमेंट के लिए कस्टम Pixel कर्नेल को डाउनलोड करने, कंपाइल करने, और फ़्लैश करने के बारे में सिलसिलेवार निर्देश दिए गए हैं. जीकेआई की वजह से, अब कर्नेल को Android प्लैटफ़ॉर्म बिल्ड के बिना अपडेट किया जा सकता है. यह तरीका सिर्फ़ Pixel 6 और उसके बाद के वर्शन वाले डिवाइसों पर लागू होता है. ऐसा इसलिए है, क्योंकि Pixel 5 और इससे पहले के डिवाइसों के लिए, vendor पार्टीशन में कर्नेल मॉड्यूल को अपडेट करना ज़रूरी होता है. यह मॉड्यूल, उन डिवाइसों के Android प्लैटफ़ॉर्म के बिल्ड पर निर्भर करता है. GKI के साथ काम करने वाले Pixel Kernel ब्रांच की टेबल में, कर्नेल रिपॉज़िटरी मेनिफ़ेस्ट ब्रांच में शामिल है. यह ब्रांच, GKI के साथ काम करने वाले हर Pixel डिवाइस के लिए होती है. Pixel 5 और उसके पहले के कर्नेल मेनिफ़ेस्ट ब्रांच के लिए, लेगसी Pixel Kernel सेक्शन देखें.

GKI के साथ काम करने वाली Pixel kernel ब्रांच
डिवाइस एओएसपी ट्री में बाइनरी पाथ डेटा स्टोर करने की जगह की शाखाएं जीकेआई कर्नेल
Pixel 8a (akita) device/google/akita-kernel android-gs-akita-5.15-android14-qpr3 Android14-5.15
Pixel 8 (शिबा)
Pixel 8 Pro (हस्की)
device/google/shusky-kernel android-gs-shusky-5.15-android14-qpr3 Android14-5.15
Pixel Fold (फ़ेलिक्स) डिवाइस/google/फ़ेलिक्स-कर्नेल android-gs-फ़ेलिक्स-5.10-android14-qpr3 Android13-5.10
Pixel Tablet (टैंगोरप्रो) डिवाइस/google/tangorpro-kernel android-gs-tangorpro-5.10-android14-qpr3 Android13-5.10
Pixel 7a (lynx) device/google/lynx-kernel android-gs-lynx-5.10-android14-qpr3 Android13-5.10
Pixel 7 (पैनथर)
Pixel 7 Pro (चीता)
device/google/pantah-kernel android-gs-pantah-5.10-android14-qpr3 Android13-5.10
Pixel 6a (bluejay) डिवाइस/google/bluejay-kernel android-gs-bluejay-5.10-android14-qpr3 Android13-5.10
Pixel 6 (ऑरिओल)
Pixel 6 Pro (रेवन)
डिवाइस/google/raviole-कर्नेल android-gs-raviole-5.10-android14-qpr3 Android13-5.10

फ़ैक्ट्री के साथ काम करने वाले कर्नेल के अलावा, Pixel 6 और 6 Pro डिवाइस, जीकेआई डेवलपमेंट के लिए सिर्फ़ साथ काम करने वाले Pixel 6/6 Pro Android प्लैटफ़ॉर्म और कर्नेल कॉम्बिनेशन टेबल में शामिल Android सामान्य कर्नेल ब्रांच पर काम करते हैं. Android प्लैटफ़ॉर्म के एचएएल और Pixel कर्नेल ड्राइवर के बीच वेंडर यूएपीआई में अंतर होने की वजह से, टेबल में काम करने वाले बिल्ड कॉम्बिनेशन उपलब्ध कराए जाते हैं.

साथ काम करने वाले Pixel 6/6 Pro Android प्लैटफ़ॉर्म और कर्नेल के कॉम्बिनेशन
Pixel कर्नेल मेनिफ़ेस्ट ब्रांच जीकेआई ब्रांच Android प्लैटफ़ॉर्म बिल्ड aosp-main की सहायता टीम से संपर्क करना है?
gs-android-gs-raviole-mainline android-mainline (v6.8) AP1A.240505.004 (11583682) हां
android14-gs-pixel-6.1 Android14-6.1 AP1A.240505.004 (11583682) हां
gs-android13-gs-raviole-5.15 Android13-5.15 TQ1A.230205.002 (9471150) नहीं

अपना Pixel डिवाइस सेट अप करें

नीचे दिया गया फ़्लो चार्ट, Pixel 6 और उसके बाद के वर्शन वाले डिवाइसों पर कर्नेल को अपडेट करने की प्रोसेस के बारे में बताता है:

**पहली इमेज.** कर्नेल अपडेट फ़्लो चार्ट

Flash.android.com का इस्तेमाल करके डिवाइस को फ़्लैश करें

  1. flash.android.com पर जाएं
  2. साथ काम करने वाले Android प्लैटफ़ॉर्म और Kernel कॉम्बिनेशन के हिसाब से Android बिल्ड चुनें.
  3. ये विकल्प चुनें:
    • डिवाइस वाइप करें
    • सभी पार्टीशन को फ़्लैश के लिए चालू करें
    • पुष्टि करने की सुविधा बंद करें
  4. डिवाइस को फ़्लैश करने के लिए बिल्ड इंस्टॉल करें बटन दबाएं.

**दूसरी इमेज.** फ़्लैश स्टेशन का उदाहरण

कर्नेल को डाउनलोड और कंपाइल करें

कर्नेल डेटा स्टोर करने की जगह को सिंक करें

कर्नेल सोर्स कोड डाउनलोड करने के लिए, नीचे दिए गए कमांड चलाएं. Pixel के लिए, साथ काम करने वाले Pixel 6/6 Pro Android प्लैटफ़ॉर्म और Kernel कॉम्बिनेशन की टेबल देखें KERNEL_MANIFEST_BRANCH.

repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags

वेंडर के रैम को अपडेट करें

कर्नेल डेटा स्टोर करने की जगह में, vendor_ramdisk-DEVICE.img फ़ाइल को अपडेट करें, ताकि डिवाइस पर फ़्लैश किए गए Android प्लैटफ़ॉर्म के बिल्ड से मिलान किया जा सके. यहां कुछ विकल्प दिए गए हैं, जिन्हें फ़ॉलो किया जा सकता है.

पहला विकल्प) Pixel की फ़ैक्ट्री इमेज से वेंडर रैमडिस्क की इमेज एक्सट्रैक्ट करें.
  1. https://developers.google.com/android/images से अपने डिवाइस पर काम करने वाली फ़ैक्ट्री इमेज डाउनलोड करें.

  2. 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
    
  3. वेंडर रैम डिस्क पाने के लिए, vendor_boot.img को अनपैक करें.

      KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \
          --out vendor_boot_out
    
  4. निकाली गई vendor-ramdisk-by-name/ramdisk_ फ़ाइल को Pixel kernel रिपॉज़िटरी में कॉपी करें.

    डिवाइस DEVICE_RAMDISK_PATH
    Pixel 6 (ऑरिओल)
    Pixel 6 Pro (रेवन)
    पहले से बनाया गया/बूट-आर्टफ़ैक्ट/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 प्लैटफ़ॉर्म का डेटा स्टोर करने की जगह से vendor_ramdisk को कॉपी करें.
डिवाइस DEVICE_RAMDISK_PATH
Pixel 6 (ऑरिओल)
Pixel 6 Pro (रेवन)
पहले से बनाया गया/बूट-आर्टफ़ैक्ट/ramdisks/vendor_ramdisk-oriole.img
Pixel 6a (bluejay) private/devices/google/bluejay/vendor_ramdisk-bluejay.img
cp ANDROID_ROOT/out/target/product/DEVICE/vendor_ramdisk-debug.img \
   KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH/vendor_ramdisk-DEVICE.img

कर्नेल (Kleaf) को कंपाइल करें

Android 13 में, build.sh स्क्रिप्ट को Kleaf नाम के नए कर्नेल बिल्ड सिस्टम से बदल दिया गया है. android13-5.15 और उसके बाद के वर्शन का इस्तेमाल करने वाले डिवाइसों के लिए, Kleaf का इस्तेमाल करके कर्नेल बनाया जाना चाहिए.

android14 और उसके बाद के वर्शन के कर्नेल के साथ Pixel 6 और 6 Pro के लिए, Kleaf बिल्ड कमांड चलाएं:

tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist

android13-5.15 कर्नेल के साथ Pixel 6 और 6 Pro के लिए, Kleaf बिल्ड कमांड चलाएं:

tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist

अन्य सभी Pixel कर्नेल के लिए, KERNEL_REPO_ROOT पर मिली build_DEVICE.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 Baze चैनल देखें.

कर्नेल इमेज को फ़्लैश करें

ध्यान दें: अगर आपने पुष्टि करने की सुविधा को बंद नहीं किया है, तो कस्टम कर्नेल को फ़्लैश करने से पहले आपको ऐसा करना होगा. ऐसा करने के लिए यह निर्देश यहां दिया गया है:
fastboot oem disable-verification
चेतावनी: अगर आप प्लैटफ़ॉर्म बिल्ड के ऊपर कस्टम कर्नेल फ़्लैश कर रहे हैं, तो अगर नए कर्नेल के साथ सिक्योरिटी पैच लेवल (एसपीएल) डाउनग्रेड होता है, तो आपको अपने डिवाइस को वाइप करना पड़ सकता है. इस प्रोसेस के दौरान, आपका सारा निजी डेटा हमेशा के लिए मिट जाता है. वाइप करने से पहले अपने डेटा का बैक अप ज़रूर ले लें.
fastboot -w

कर्नेल इमेज को फ़्लैश करने के लिए, अपने डिवाइस के लिए सूची में दिए गए हर कर्नेल पार्टिशन के लिए fastboot flash कमांड चलाएं. डाइनैमिक पार्टिशन के लिए, आपको फ़्लैश करने से पहले fastbootd मोड में फिर से चालू करना होगा.

डिवाइस कर्नेल पार्टिशन
Pixel 6 (ऑरिओल)
Pixel 6 Pro (रेवेन)
Pixel 6a (bluejay)
बूट
dtbo
vendor_boot
vendor_dlkm (डाइनैमिक पार्टीशन)
Pixel 8 (शिबा)
Pixel 8 Pro (हस्की)
Pixel फ़ोल्ड (फ़ेलिक्स)
Pixel टैबलेट (टैंगोरप्रो)
Pixel 7a (lynx)
Pixel 7 (पैंथर)
Pixel 7 Pro (चीता)
बूट
dtbo
vendor_kernel_boot
vendor_dlkm (डाइनैमिक पार्टीशन)
system_dlkm (डाइनैमिक पार्टीशन)

android-mainline पर Pixel 6 के लिए फ़्लैश होने वाले निर्देश यहां दिए गए हैं:

fastboot flash boot        out/slider/dist/boot.img
fastboot flash dtbo        out/slider/dist/dtbo.img
fastboot flash vendor_boot out/slider/dist/vendor_boot.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img

कर्नेल इमेज, DIST_DIR में पाई जा सकती हैं.

कर्नेल ब्रांच DIST_DIR
वर्शन 5.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 कर्नेल ब्रांच
डिवाइस एओएसपी ट्री में बाइनरी पाथ डेटा स्टोर करने की जगह की शाखाएं
Pixel 5a (barbet)
Pixel 4a (5G) (ब्रैंबल)
Pixel 5 (रेडफ़िन)
device/google/redbull-कर्नेल android-msm-redbull-4.19-android14-qpr3
Pixel 4a (सनफ़िश) डिवाइस/google/सनफ़िश-कर्नेल android-msm-sunफ़िश-4.14-android13-qpr3
Pixel 4 (फ़्लेम)
Pixel 4 XL (कोरल)
device/google/coral-kernel android-msm-coral-4.14-android13
Pixel 3a (सार्गो)
Pixel 3a XL (बोनिटो)
device/google/bonito-kernel android-msm-bonito-4.9-android12L
Pixel 3 (ब्लूलाइन)
Pixel 3 XL (क्रॉसहैच)
डिवाइस/google/क्रॉसहैच-कर्नेल android-msm-क्रॉसहैच-4.9-android12
Pixel 2 (वॉलआई)
Pixel 2 XL (टाइमन)
device/google/wahoo-कर्नेल android-msm-wahoo-4.4-android10-qpr3
Pixel (सेलफ़िश)
Pixel XL (मार्लिन)
डिवाइस/google/marlin-kernel android-msm-marlin-3.18-pie-qpr2