इस गाइड में, डेवलपमेंट के लिए कस्टम Pixel कर्नेल को डाउनलोड करने, कॉम्पाइल करने, और फ़्लैश करने का तरीका बताया गया है. GKI की मदद से, अब Android प्लैटफ़ॉर्म के बिल्ड के अलावा, अलग से भी कर्नेल को अपडेट किया जा सकता है. यह तरीका सिर्फ़ Pixel 6 और उसके बाद के वर्शन वाले डिवाइसों पर लागू होता है. ऐसा इसलिए है, क्योंकि Pixel 5 और इससे पहले के डिवाइसों के लिए, vendor
पार्टीशन पर मौजूद कर्नेल मॉड्यूल को अपडेट करना ज़रूरी है. यह उन डिवाइसों के लिए Android प्लैटफ़ॉर्म के बिल्ड पर निर्भर करता है. GKI के साथ काम करने वाले Pixel के kernel की शाखाएं टेबल में, GKI के साथ काम करने वाले हर Pixel डिवाइस के लिए, kernel के मेनिफ़ेस्ट की शाखा शामिल होती है. Pixel 5 और इससे पहले के वर्शन के लिए, लेगसी Pixel केनरल सेक्शन देखें.
GKI के साथ काम करने वाले Pixel के कर्नेल की शाखाएं
डिवाइस | AOSP ट्री में बाइनरी पाथ | रिपॉज़िटरी की शाखाएं | GKI कर्नेल |
---|---|---|---|
Pixel 9 Pro Fold (comet) | device/google/comet-kernels/6.1 | android-gs-comet-6.1-android15-qpr1 | android15-6.1 |
Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) |
device/google/caimito-kernels/6.1 | android-gs-caimito-6.1-android15-qpr1 | android15-6.1 |
Pixel 8a (akita) | device/google/akita-kernels/5.15 | android-gs-akita-5.15-android15-qpr1 | android15-5.15 |
Pixel 8 (शिबा) Pixel 8 Pro (हस्की) |
device/google/shusky-kernels/5.15 | android-gs-shusky-5.15-android15-qpr1 | android15-5.15 |
Pixel Fold (felix) | device/google/felix-kernels/5.10 | android-gs-felix-5.10-android15-qpr1 | android15-5.10 |
Pixel Tablet (tangorpro) | device/google/tangorpro-kernels/5.10 | android-gs-tangorpro-5.10-android15-qpr1 | android15-5.10 |
Pixel 7a (lynx) | device/google/lynx-kernels/5.10 | android-gs-lynx-5.10-android15-qpr1 | android15-5.10 |
Pixel 7 (पैंथर) Pixel 7 Pro (चीता) |
device/google/pantah-kernels/5.10 | android-gs-pantah-5.10-android15-qpr1 | android15-5.10 |
Pixel 6a (bluejay) | device/google/bluejay-kernels/5.10 | android-gs-bluejay-5.10-android15-qpr1 | android15-5.10 |
Pixel 6 (oriole) Pixel 6 Pro (raven) |
device/google/raviole-kernels/5.10 | android-gs-raviole-5.10-android15-qpr1 | android15-5.10 |
फ़ैक्ट्री में पहले से मौजूद कर्नेल के अलावा, Pixel 6 और 6 Pro डिवाइसों पर GKI को डेवलप करने के लिए, सिर्फ़ उन Android Common कर्नेल ब्रैंच का इस्तेमाल किया जा सकता है जो Pixel 6/6 Pro पर काम करने वाले Android प्लैटफ़ॉर्म और कर्नेल के कॉम्बिनेशन टेबल में शामिल हैं. Android प्लैटफ़ॉर्म के HAL और Pixel के kernel ड्राइवर के बीच, वेंडर के UAPI में अंतर होने की वजह से, टेबल में काम करने वाले बिल्ड कॉम्बिनेशन दिए गए हैं.
Pixel 6/6 Pro पर काम करने वाले Android प्लैटफ़ॉर्म और कर्नेल के कॉम्बिनेशन
Pixel Kernel मेनिफ़ेस्ट की शाखा | GKI Branch | 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 का इस्तेमाल करके, डिवाइस को फ़्लैश करना
- flash.android.com पर जाएं
- काम करने वाले Android प्लैटफ़ॉर्म और कर्नेल के कॉम्बिनेशन के आधार पर, Android बिल्ड चुनें.
- ये विकल्प चुनें:
- डिवाइस वाइप करें
- सभी पार्टीशन को ज़बरदस्ती फ़्लैश करना
- पुष्टि करने की सुविधा बंद करना
- डिवाइस को फ़्लैश करने के लिए, बिल्ड इंस्टॉल करें बटन दबाएं.
कर्नेल डाउनलोड और कंपाइल करना
कर्नेल रिपॉज़िटरी को सिंक करना
कर्नेल का सोर्स कोड डाउनलोड करने के लिए, ये कमांड चलाएं. PixelKERNEL_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
को अपडेट करें. इसके लिए, ये तरीके अपनाए जा सकते हैं.
पहला विकल्प) 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 के 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
कोड का वह नाम होना चाहिए जो GKI के साथ काम करने वाले Pixel के kernel की शाखाओं वाली टेबल के AOSP ट्री में बाइनरी पाथ कॉलम में इस्तेमाल किए गए कोड के नाम से मेल खाता हो. यह किसी एक डिवाइस का कोड नेम हो सकता है, जैसे कि "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 - Bazel की मदद से Android कर्नेल बनाना लेख पढ़ें.
कर्नेल इमेज फ़्लैश करना
ध्यान दें: अगर आपने पुष्टि करने की सुविधा बंद नहीं की है, तो कस्टम कर्नेल को फ़्लैश करने से पहले, आपको इसे बंद करना होगा. ऐसा करने के लिए, यह कमांड दें:fastboot oem disable-verification
चेतावनी: अगर किसी प्लैटफ़ॉर्म के बिल्ड के ऊपर कस्टम कर्नेल फ़्लैश किया जा रहा है, तो हो सकता है कि आपको अपने डिवाइस को मिटाना पड़े. ऐसा तब होगा, जब नए कर्नेल के साथ सुरक्षा पैच लेवल (एसपीएल) का डाउनग्रेड हो. इस प्रोसेस से आपका सारा निजी डेटा मिट जाता है. डेटा मिटाने से पहले, उसका बैक अप ज़रूर लें.fastboot -w
कर्नेल इमेज फ़्लैश करने के लिए, अपने डिवाइस के लिए दिए गए हर कर्नेल partition के लिए fastboot flash
कमांड चलाएं. डाइनैमिक पार्टीशन के लिए, आपको फ़्लैश करने से पहले, fastbootd
मोड में रीबूट करना होगा.
डिवाइस | कर्नेल के सेगमेंट |
---|---|
Pixel 6
(oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
boot dtbo vendor_boot 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 (डाइनैमिक पार्टीशन) 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 के kernel की शाखाएं टेबल में, Pixel 5 और उससे पहले के वर्शन वाले डिवाइसों के लिए, kernel की रिपॉज़िटरी की शाखाएं दी गई हैं. ये ऐसे डिवाइस हैं जिन पर 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-crosshatch-4.9-android12 |
Pixel 2 (वॉली) Pixel 2 XL (ताइमैन) |
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 |