במדריך הזה מפורטות הוראות מפורטות להורדה, להדרכה ול-flash של ליבה מותאמת אישית של Pixel לצורכי פיתוח. בעזרת GKI, עכשיו אפשר לעדכן את הליבה בנפרד מה-build של פלטפורמת Android. השלבים האלה רלוונטיים רק למכשירים מדגם Pixel 6 ואילך. הסיבה לכך היא שבמכשירי Pixel 5 ודגמים קודמים צריך לעדכן את מודולים של הליבה במחיצה vendor
, בהתאם לגרסת ה-build של פלטפורמת Android במכשירים האלה. טבלת הסתעפויות הליבה של Pixel שנתמכות ב-GKI כוללת את הסתעפות המניפסט של מאגר הליבה של GKI לכל מכשיר Pixel שנתמך ב-GKI. אפשר לעיין בסעיף ה-Kernels של Pixel מדור קודם להסתעפויות של מניפסט הליבה של Pixel 5 ודגמים קודמים.
ההסתעפויות של הליבה של Pixel שנתמכות ב-GKI
מכשירים | נתיב בינארי בעץ AOSP | הענפים של המאגר | ליבת GKI |
---|---|---|---|
Pixel 9 Pro Fold (comet) | device/google/comet-kernel | android-gs-comet-6.1-android14-qpr3-d1 | android14-6.1 |
Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) |
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 (shiba) Pixel 8 Pro (husky) |
מכשיר/google/shusky-kernel | android-gs-shusky-5.15-android14-qpr3 | android14-5.15 |
Pixel Fold (felix) | device/google/felix-kernel | android-gs-felix-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 (panther) Pixel 7 Pro (cheetah) |
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 (oriole) Pixel 6 Pro (raven) |
device/google/raviole-kernel | android-gs-raviole-5.10-android14-qpr3 | android13-5.10 |
בנוסף לליבה (kernel) שנתמכת על ידי היצרן, מכשירי Pixel 6 ו-Pixel 6 Pro נתמכים למטרות פיתוח GKI רק בהסתעפויות הליבה של Android Common שכלולות בטבלה שילובי ליבה ופלטפורמה נתמכים של Pixel 6/6 Pro. בגלל ההבדלים ב-UAPI של הספק בין HALs של פלטפורמת Android לבין מנהלי התקנים של ליבה (kernel) של Pixel, הטבלה מספקת את שילובי ה-build הנתמכים.
שילובים נתמכים של ליבה ופלטפורמת Android ב-Pixel 6/6 Pro
הסתעפות מניפסט ליבה של Pixel | GKI Branch | Build של פלטפורמת 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 של המכשיר באמצעות flash.android.com
- מעבר אל Flash.android.com
- בוחרים את גרסת ה-build של Android על סמך השילובים הנתמכים של פלטפורמת Android והליבה.
- בוחרים את האפשרויות הבאות:
- איפוס נתוני המכשיר
- אילוץ הפעלה של כל המחיצות ב-Flash
- השבתת האימות
- לוחצים על הלחצן Install build כדי לבצע את ה-flash של המכשיר.
מורידים ומרכיבים את הליבה
סנכרון של מאגר הליבה
מריצים את הפקודות הבאות כדי להוריד את קוד המקור של הליבה. הטבלה של שילובי הליבה והפלטפורמה הנתמכים ב-Android ל-Pixel 6/6 Pro
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
עדכון של ה-ramdisk של הספק
מעדכנים את הקובץ vendor_ramdisk-DEVICE.img
במאגר הליבה כך שיתאים לגרסה של Android שרוצים להטמיע במכשיר. יש כמה אפשרויות שאפשר לפעול לפיהן.
אפשרות 1) מחלצים את תמונת הרדיסק של הספק מתמונת היצרן של Pixel.
מורידים את קובץ האימג' הנתמך של היצרן למכשיר בכתובת https://developers.google.com/android/images.
מחלצים את
vendor_boot.img
:- כדוגמה, הפקודות הבאות משתמשות ב-AP1A.240505.004 של Pixel 6 Pro. מחליפים את שם קובץ ה-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) פרטי/מכשירים/google/bluejay/vendor_ramdisk-bluejay.img cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \ KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
אפשרות 2) מעתיקים את vendor_ramdisk
ממאגר פלטפורמת Android שפותח באופן מקומי.
מכשירים | 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
הוחלף במערכת ליבה (kernel) חדשה שנקראת Kleaf. במכשירים עם android13-5.15
ואילך, צריך ליצור את הליבה באמצעות Kleaf.
בטלפונים מדגמי Pixel 6 ו-Pixel 6 Pro עם ליבות מגרסה android14
ואילך, מריצים את הפקודה ליצירת קובץ build של Kleaf:
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist
בטלפונים מדגמי Pixel 6 ו-Pixel 6 Pro עם ליבות של android13-5.15
, מריצים את הפקודה Kleaf build:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
עבור כל שאר הליבות (kernel) של Pixel, מריצים את הסקריפט build_DEVICE.sh
שנמצא ב-KERNEL_REPO_ROOT
. ברוב המקרים, השדה DEVICE
צריך להיות שם הקוד שתואם לשם הקוד שמצוין בעמודה Binary path in AOSP tree בטבלה GKI supported Pixel kernel branches. זה יכול להיות שם הקוד של מכשיר אחד, כמו 'akita' (Pixel 8a), או שם קוד שמייצג קבוצה של מכשירים קשורים שחולקים ליבה (kernel) כמו '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
משתמשים בליבה (kernel) המוכנה מראש של GKI כדי לזרז את תהליך ה-build. אם רוצים לשנות את הליבה, צריך להגדיר את משתנה הסביבה BUILD_AOSP_KERNEL=1
כדי לבנות את הליבה מהמקורות המקומיים.
פרטים נוספים על מערכת ה-build של הליבה ועל אופן ההתאמה האישית של ה-build מופיעים במאמר Kleaf – Building Android Kernels with Bazel.
איך מבצעים פלאש של קובצי האימג' של הליבה
הערה: אם לא השבתתם את האימות, צריך לעשות זאת לפני שמבצעים שדרוג של הליבה המותאמת אישית. זו הפקודה לביצוע הפעולה הזו:fastboot oem disable-verification
אזהרה: אם מבצעים שדרוג לאחור של ליבה (kernel) מותאמת אישית מעל גרסת build של פלטפורמה, יכול להיות שתצטרכו לאפס את נתוני המכשיר שלכם אם תשויך שדרוג לאחור ברמת תיקון האבטחה (SPL) לליבה החדשה. התהליך הזה גורם למחיקת כל המידע האישי שלכם. חשוב לגבות את הנתונים לפני מחיקת הנתונים.fastboot -w
כדי לבצע Flash של תמונות הליבה, מריצים את הפקודה fastboot flash
לכל מחיצת הליבה שרשומה במכשיר. במחיצות דינמיות, צריך להפעיל מחדש את המכשיר למצב fastbootd
לפני ה-flash.
מכשירים | מחיצות ליבה |
---|---|
Pixel 6
(אוריולה) Pixel 6 Pro (עורב) Pixel 6a (bluejay) |
אתחול dtbo vendor_boot vendor_dlkm (מחיצה דינמית) |
Pixel 8 (shiba) Pixel 8 Pro (האסקי) Pixel Fold (felix) Pixel טאבלט (tangorpro) Pixel 7a (lynx) Pixel 7 (פנתר) Pixel 7 Pro (צ'יטה) |
אתחול dtbo vendor_kernel_boot vendor_dlkm (מחיצה דינמית) system_dlkm (מחיצה דינמית) |
אלה הפקודות להצגת הפלאש של Pixel 6 ב-android-mainline
:
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 |
גרסה 5.15 ואילך | out/DEVICE/dist |
הערה: אם יש לכם מתאם טורי ואתם רוצים להפעיל יומנים טוריים, הפקודה היא:פקודת לדוגמה שצריך להתחבר מהמארח: fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
שחזור קובצי האימג' של המפעל
כדי לשחזר את המכשיר לתמונות המקוריות, אפשר להשתמש ב-Flash.android.com.
ליבות (kernel) של Pixel מדור קודם
לידיעתך, בטבלה הסתעפויות הליבה של Pixel מדור קודם מופיעים ההסתעפויות של מאגר הליבה של מכשיר Pixel 5 ודגמים קודמים. אלה מכשירים שלא נתמכים ב-GKI.
הסתעפויות ליבה (kernel) של 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 (walleye) Pixel 2 XL (taimen) |
device/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
Pixel (דג מפרשים) Pixel XL (מרלין) |
device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |