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

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

GKI के साथ काम करने वाले Pixel के कर्नेल की शाखाएं
डिवाइस AOSP ट्री में बाइनरी पाथ रिपॉज़िटरी की शाखाएं जीकेआई कर्नेल
Pixel 9 Pro Fold (comet) device/google/comet-kernel android-gs-comet-6.1-android14-qpr3-d1 Android14-6.1
Pixel 9 (टोके)
Pixel 9 Pro (केमैन)
Pixel 9 Pro XL (Kkomod)
device/google/caimito-kernel android-gs-caimito-6.1-android14-qpr3-d1 Android14-6.1
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 (फ़ेलिक्स) device/google/felix-kernel android-gs-फ़ेलिक्स-5.10-android14-qpr3 android13-5.10
Pixel Tablet (tangorpro) device/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) device/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 प्लैटफ़ॉर्म के HAL और Pixel के kernel ड्राइवर के बीच, वेंडर के UAPI में अंतर होने की वजह से, टेबल में काम करने वाले बिल्ड कॉम्बिनेशन दिए गए हैं.

Pixel 6/6 Pro पर काम करने वाले Android प्लैटफ़ॉर्म और कर्नेल के कॉम्बिनेशन
Pixel Kernel मेनिफ़ेस्ट की शाखा जीकेआई ब्रांच 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

वेंडर की रैमडिस्क अपडेट करना

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

पहला विकल्प) 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 repository में कॉपी करें.

    डिवाइस 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 प्लैटफ़ॉर्म के डेटा स्टोर करने की जगह से vendor_ramdisk को कॉपी करें.
डिवाइस 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 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 स्क्रिप्ट चलाएं. ज़्यादातर मामलों में, DEVICE कोड का नाम वही होना चाहिए जो जीकेआई के साथ काम करने वाले Pixel कर्नेल ब्रांच के एओएसपी ट्री में बाइनरी पाथ कॉलम में इस्तेमाल किए गए कोड नाम से मेल खाता हो. यह किसी एक डिवाइस का कोड नेम हो सकता है, जैसे कि "akita" (Pixel 8a) या कोई ऐसा कोड नेम जो एक कर्नेल के साथ एक-दूसरे से जुड़े हुए डिवाइसों के ग्रुप को दिखाता हो. जैसे, "caamito", जिसका मतलब है Pixel 9 (tokay), Pixel 9 Pro (caiman), और Pixel 9 Pro XL (komode). android14 और इससे पहले की रिलीज़ के लिए, Pixel 6 और Pixel 6 Pro के लिए build_slider.sh का इस्तेमाल करें. साथ ही, Pixel 7 और Pixel 7 Pro के लिए build_cloudripper.sh का इस्तेमाल करें.

उदाहरण के लिए, ब्रांच पर Pixel 6 के लिए कर्नेल बनाने के लिए android-gs-raviole-5.10-android14, आपको यह निर्देश देना होगा:

build_slider.sh

डिफ़ॉल्ट रूप से, build_DEVICE.sh स्क्रिप्ट, बिल्ड प्रोसेस को तेज़ करने के लिए पहले से बने GKI कर्नेल का इस्तेमाल करती हैं. अगर आपको कोर कर्नेल में बदलाव करना है, तो स्थानीय सोर्स से कर्नेल बनाने के लिए, एनवायरमेंट वैरिएबल BUILD_AOSP_KERNEL=1 को सेट करें.

कर्नेल बिल्ड सिस्टम और बिल्ड को पसंद के मुताबिक बनाने के तरीके के बारे में ज़्यादा जानने के लिए, Kleaf - Bazel की मदद से Android कर्नेल बनाना लेख पढ़ें.

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

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

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

डिवाइस कर्नेल के सेगमेंट
Pixel 6 (oriole)
Pixel 6 Pro (raven)
Pixel 6a (bluejay)
बूट
dtbo
vendor_boot
vendor_dlkm (डाइनैमिक पार्टीशन)
Pixel 8 (शिबा)
Pixel 8 Pro (हस्की)
Pixel फ़ोल्ड (फ़ेलिक्स)
Pixel टैबलेट (टैंगोरप्रो)
Pixel 7a (lynx)
Pixel 7 (पैंथर)
Pixel 7 Pro (चीता)
boot
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
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 (sunfish) 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 (नीले रंग की लाइन)
Pixel 3 XL (क्रॉसहैच)
device/google/crosshatch-kernel android-msm-क्रॉसहैच-4.9-android12
Pixel 2 (वॉलआई)
Pixel 2 XL (टाइमन)
device/google/wahoo-kernel android-msm-wahoo-4.4-android10-qpr3
Pixel (सेलफ़िश)
Pixel XL (मार्लिन)
डिवाइस/google/marlin-kernel android-msm-marlin-3.18-pie-qpr2