במדריך הזה מוסבר איך להוריד, לקמפל ולצרוב ליבת Pixel מותאמת אישית לצורך פיתוח. בגלל GKI, עכשיו אפשר לעדכן את ליבת המערכת באופן עצמאי, בלי קשר לבניית פלטפורמת Android. השלבים האלה רלוונטיים רק למכשירים מדגם Pixel 6 ואילך. הסיבה לכך היא שבמכשירי Pixel 5 ומכשירים מוקדמים יותר נדרש עדכון של מודולי הליבה במחיצה vendor
, שמותנה בגרסת ה-build של פלטפורמת Android במכשירים האלה. בטבלה GKI supported Pixel kernel branches (ענפי ליבת Pixel שנתמכים ב-GKI) מופיע ענף המניפסט של מאגר הליבה לכל מכשיר Pixel שנתמך ב-GKI. מידע נוסף על סניפים של מניפסטים של ליבות Pixel 5 וגרסאות קודמות זמין בקטע Legacy Pixel Kernels.
ענפי ליבת Pixel שנתמכים על ידי GKI
מכשיר | ענפים במאגר | GKI Kernel |
---|---|---|
Pixel 9a (tegu) | android-gs-tegu-6.1-android16 | android14-6.1 |
Pixel 9 Pro Fold (כוכב שביט) | 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 ו-Pixel 6 Pro נתמכים למטרות פיתוח GKI רק בענפי ליבת Android Common שכלולים בטבלה Supported Pixel 6/6 Pro Android Platform and Kernel Combinations. בגלל ההבדלים ב-UAPI של הספקים בין ה-HAL של פלטפורמת Android לבין מנהלי ההתקנים של ליבת Pixel, בטבלה מפורטים שילובי הבנייה הנתמכים.
שילובים נתמכים של פלטפורמת Android וליבת המערכת ב-Pixel 6/6 Pro
Pixel Kernel Manifest Branch | GKI Branch | Android Platform Build |
---|---|---|
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 במכשיר באמצעות flash.android.com
- עוברים אל flash.android.com
- בוחרים את גרסת ה-Android בהתאם לשילובים של פלטפורמת Android וליבת מערכת הפעלה נתמכים.
- בוחרים באפשרויות הבאות:
- איפוס נתוני המכשיר
- אילוץ הפעלת Flash בכל המחיצות
- השבתת האימות
- לוחצים על הלחצן Install build (התקנת גרסת build) כדי לצרוב את המכשיר.
הורדה והידור של ליבת המערכת
סנכרון מאגר הליבה
מריצים את הפקודות הבאות כדי להוריד את קוד המקור של הליבה. בטבלה שילובי פלטפורמת Android וליבת מערכת נתמכים ב-Pixel 6/6 Pro מפורטים המכשירים מסוג Pixel KERNEL_MANIFEST_BRANCH.
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
עדכון של ramdisk הספק
מעדכנים את הקובץ vendor_ramdisk-DEVICE.img
במאגר ליבת המערכת כך שיתאים לגרסת ה-build של פלטפורמת Android שמועברת למכשיר. יש כמה אפשרויות לעדכן את הקובץ vendor_ramdisk-DEVICE.img
. משתמשים באפשרות (1) אם אתם משתמשים ב-Android 15
QPR2 (BP11.241025.006) ואילך. אחרת, משתמשים באפשרות (2).
אפשרות 1) עדכון רק של חלקי ה-DTB וה-DLKM ramdisk של מחיצת vendor_boot
החל מגרסת fastboot 35.0.2-12583183, אפשר לצרוב ישירות את DTB ואת DLKM ramdisk במחיצה
vendor_boot
. מורידים אתsdk-repo-HOST_OS-platform-tools-12583183.zip
מv35.0.2-12583183 artifacts ומחלצים אותו לסביבה של המחשב המארח לשימוש.פועלים לפי ההוראות כדי להפעיל את DTB ואת
vendor_boot:dlkm
בקטע Flash the kernel images.אפשרות 2) חילוץ תמונת ה-ramdisk של הספק מתמונת המפעל של 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
כדי לקבל את ה-ramdisk של הספק.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.
לנוחותכם, תוכלו להריץ את הסקריפט build_DEVICE.sh
שנמצא בכתובת KERNEL_REPO_ROOT
. ברוב המקרים, DEVICE
צריך להיות שם הקוד, שיכול להיות שם הקוד של מכשיר אחד, כמו akita (Pixel 8a), או שם קוד שמייצג קבוצה של מכשירים קשורים שמשתפים ליבה, כמו caimito, שמשמעותו Pixel 9 (tokay), Pixel 9 Pro (caiman) ו-Pixel 9 Pro XL (komodo). בגרסאות android14
ומגרסאות קודמות, משתמשים ב-build_slider.sh
ב-Pixel 6 וב-Pixel 6 Pro, וב-build_cloudripper.sh
ב-Pixel 7 וב-Pixel 7 Pro.
לדוגמה, כדי ליצור את ליבת המערכת של Pixel 6 בענף android-gs-raviole-5.10-android14
, מריצים את הפקודה:
build_slider.sh
כברירת מחדל, בסניפים של ליבת הייצור, סקריפטים של build_DEVICE.sh
משתמשים בליבת GKI שנוצרה מראש כדי להאיץ את תהליך ה-build. אם רוצים לשנות את ליבת הקרנל, צריך להגדיר את משתנה הסביבה BUILD_AOSP_KERNEL=1
כדי לבצע build של הקרנל מהמקורות המקומיים במקום זאת. ענפי ליבת הפיתוח יוצרים ישירות את מקור הליבה כברירת מחדל.
פרטים נוספים על מערכת בניית הליבה ועל התאמה אישית של הבנייה זמינים במאמר Kleaf – בניית ליבות Android באמצעות Bazel.
הפעלת Flash לתמונות הליבה
הערה: אם לא השבתתם את האימות, תצטרכו לעשות זאת לפני שמבצעים פלאשינג לליבת המערכת בהתאמה אישית. זו הפקודה שצריך להריץ:fastboot oem disable-verification
אזהרה: אם אתם מפעילים פלאשינג של ליבת מערכת מותאמת אישית על גרסת פלטפורמה, יכול להיות שתצטרכו למחוק את הנתונים במכשיר אם יש שדרוג לאחור של רמת תיקון האבטחה (SPL) שמשויך לליבה החדשה. התהליך הזה יגרום למחיקת המידע האישי שלכם. חשוב לגבות את הנתונים לפני המחיקה.fastboot -w
כדי להפעיל את קובצי האימג' של ליבת המערכת, מריצים את הפקודה fastboot flash
לכל מחיצת ליבה שמופיעה עבור המכשיר. במחיצות דינמיות, צריך להפעיל מחדש את המכשיר למצב fastbootd
לפני ההתקנה.
מכשיר | מחיצות ליבה |
---|---|
Pixel 6
(oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
boot dtbo vendor_boot or vendor_boot:dlkm vendor_dlkm (dynamic partition) |
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, אם עדכנתם את vendor_ramdisk
בקטע עדכון של ה-ramdisk של הספק, אתם צריכים להשתמש בפקודה הבאה כדי לעדכן את המחיצה vendor_boot
:
fastboot flash vendor_boot out/slider/dist/vendor_boot.img
תמונות הליבה נמצאות ב-DIST_DIR.
ענף ליבה | DIST_DIR |
---|---|
גרסה 5.10 | out/mixed/dist |
גרסה 5.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 (flame) Pixel 4 XL (coral) |
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 |