במדריך הזה תמצאו הוראות מפורטות להורדה, להדר ולעדכון של ליבה (kernel) מותאמת אישית של Pixel לצורך פיתוח. בגלל GKI, עכשיו אפשר לעדכן את הליבה ללא תלות ב-build של פלטפורמת Android. השלבים האלה רלוונטיים רק למכשירים מדגם Pixel 6 ואילך. הסיבה לכך היא שבמכשירי Pixel 5 ודגמים קודמים צריך לעדכן את מודולים של הליבה במחיצה vendor
, בהתאם לגרסת ה-build של פלטפורמת Android במכשירים האלה. טבלת הסתעפויות הליבה של Pixel שנתמכות ב-GKI כוללת את הסתעפות המניפסט של מאגר הליבה של GKI לכל מכשיר Pixel שנתמך ב-GKI. אפשר לעיין בסעיף ה-Kernels של Pixel מדור קודם להסתעפויות של מניפסט הליבה של Pixel 5 ודגמים קודמים.
הסתעפויות ליבה (kernel) של Pixel שנתמכות ב-GKI
מכשיר | נתיב בינארי בעץ AOSP | הסתעפויות מאגר | ליבת GKI |
---|---|---|---|
Pixel 8a (אקיטה) | device/google/akita-kernel | android-gs-akita-5.15-android14-qpr3 | android14-5.15 |
Pixel 8 (shiba) 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-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 (פנתר) 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 (עורב) |
device/google/ra שליד-kernel | android-gs-rawavee-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 | 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-rawavee-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 כדי להבהב את המכשיר.
מורידים ומרכיבים את הליבה
סנכרון מאגר הליבה
מריצים את הפקודות הבאות כדי להוריד את קוד המקור של הליבה. עיינו בטבלה של שילובי ליבה ופלטפורמה נתמכים של Pixel 6 Pro ל-Android ב-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 שמובנית במכשיר. יש כמה אפשרויות שאפשר לעקוב אחריהן.
אפשרות 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 (אוריל)
Pixel 6 Pro (עורב)prestructureds/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 (אוריל) Pixel 6 Pro (עורב) |
prestructureds/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img |
Pixel 6a (bluejay) | פרטי/מכשירים/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 עם ליבה (kernel) של android14
ואילך, מריצים את הפקודה Kleaf build:
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. לדוגמה, כדי ליצור את הליבה של Pixel 6 בהסתעפות android-gs-raviole-5.10-android14
, מריצים את הפקודה:
build_slider.sh
כברירת מחדל, הסקריפטים build_DEVICE.sh
משתמשים בליבה (kernel) המוכנה מראש של GKI כדי לזרז את תהליך ה-build. אם רוצים לשנות את הליבה, צריך להגדיר את משתנה הסביבה BUILD_AOSP_KERNEL=1
כדי לבנות את הליבה מהמקורות המקומיים.
פרטים נוספים על מערכת הליבה של גרסת ה-build ועל התאמה אישית של ה-build מופיעים במאמר Kleaf – פיתוח ליבה של Android באמצעות Bazel.
יצירת Flash של תמונות הליבה
הערה: אם לא השבתתם את האימות, צריך לעשות זאת לפני שמבצעים שדרוג של הליבה המותאמת אישית. זו הפקודה:fastboot oem disable-verification
אזהרה: אם מבצעים שדרוג לאחור של ליבה (kernel) מותאמת אישית מעל גרסת build של פלטפורמה, יכול להיות שתצטרכו למחוק את המכשיר שלכם אם יש שדרוג לאחור לרמת תיקון אבטחה (SPL) שמשויכת לליבה החדשה. התהליך הזה מוחק את כל המידע האישי שלך. חשוב לגבות את הנתונים לפני מחיקת הנתונים.fastboot -w
כדי לבצע Flash של תמונות הליבה, מריצים את הפקודה fastboot flash
לכל מחיצת הליבה שרשומה במכשיר. למחיצות דינמיות צריך להפעיל מחדש למצב fastbootd
לפני ההבהוב.
מכשיר | מחיצות ליבה |
---|---|
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) (בראמבל) Pixel 5 (redfin) |
device/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
Pixel 4a (דג שמש) | 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 (טייוואן) |
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 |