במדריך הזה מפורטות הוראות מפורטות להורדה, להדרכה ול-flash של ליבה מותאמת אישית של Pixel לצורכי פיתוח. בעזרת GKI, עכשיו אפשר לעדכן את הליבה בנפרד מה-build של פלטפורמת Android. השלבים האלה רלוונטיים רק למכשירים מדגם Pixel 6 ואילך. הסיבה לכך היא שבמכשירי Pixel 5 ודגמים קודמים צריך לעדכן את מודולי הליבה במחיצה vendor
, והעדכון תלוי ב-build של פלטפורמת Android למכשירים האלה. בטבלה הסתעפויות של ליבה של Pixel שנתמכות ב-GKI מופיע ההסתעפות של המניפסט של מאגר הליבה לכל מכשיר Pixel שנתמך ב-GKI. בקטע גרסאות ליבה קודמות של Pixel מפורט מידע על ההסתעפויות של המניפסט של הליבה ב-Pixel 5 ובגרסאות קודמות.
ההסתעפויות של הליבה של Pixel שנתמכות ב-GKI
מכשירים | נתיב בינארי בעץ 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 (shiba) Pixel 8 Pro (husky) |
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 (panther) Pixel 7 Pro (cheetah) |
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 ו-Pixel 6 Pro נתמכים למטרות פיתוח של GKI רק בהסתעפויות הליבה הנפוצות של Android שכלולות בטבלה שילובים נתמכים של פלטפורמת Android וליבה ב-Pixel 6/6 Pro. בגלל ההבדלים ב-UAPI של הספקים בין HALs של פלטפורמת Android לבין מנהלי הליבה של Pixel, בטבלה מפורטות השילובים הנתמכים של גרסאות build.
שילובים נתמכים של ליבה ופלטפורמת Android ב-Pixel 6/6 Pro
Pixel Kernel Manifest Branch | GKI Branch | Android Platform Build | תמיכה ב-aosp-main ? |
---|---|---|---|
gs-android-gs-raviole-mainline | android-mainline (v6.12) | BP11.241025.006 (12620009) | כן |
android-gs-raviole-6.1-android15-qpr2-beta | android14-6.1 | BP11.241025.006 (12620009) | כן |
gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) | לא |
הכנת מכשיר Pixel
בתרשים התהליך הבא מתואר תהליך העדכון של הליבה במכשירי Pixel 6 ואילך:
איך מבצעים איפוס למכשיר באמצעות flash.android.com
- עוברים אל flash.android.com
- בוחרים את גרסת build של Android על סמך השילובים הנתמכים של Android Platform ו-Kernel.
- בוחרים באפשרויות הבאות:
- איפוס נתוני המכשיר
- איך מוחקים את כל המחיצות ב-Flash
- השבתת האימות
- לוחצים על הלחצן Install build כדי לבצע את ה-flash של המכשיר.
הורדה וקמפלור של הליבה
סנכרון של מאגר הליבה
מריצים את הפקודות הבאות כדי להוריד את קוד המקור של הליבה. הטבלה של שילובי הליבה והפלטפורמה הנתמכים ב-Android ל-Pixel 6/6 ProKERNEL_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
במאגר הליבה כך שיתאים לגרסה של Android שתותקן במכשיר. יש כמה אפשרויות לעדכון הקובץ vendor_ramdisk-DEVICE.img
. משתמשים באפשרות (1) אם אתם משתמשים ב-Android 15 QPR2 (BP11.241025.006) ואילך. אחרת, משתמשים באפשרות (2).
אפשרות 1) מעדכנים רק את הביטים של DTB ו-DLKM ב-ramdisk של מחיצת vendor_boot
החל מגרסה 35.0.2-12583183 של fastboot, אפשר להפעיל את DTB ואת DLKM ישירות ב-ramdisk במחיצה
vendor_boot
. מורידים אתsdk-repo-HOST_OS-platform-tools-12583183.zip
ומחליצים אותו מארטיפקטים של v35.0.2-12583183 לסביבה של המכונה המארחת לשימוש.פועלים לפי ההוראות ל-flash של DTB ו-
vendor_boot:dlkm
בקטע Flashing 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
הוחלף במערכת build חדשה של ליבה שנקראת Kleaf. במכשירים עם android13-5.15
ואילך, צריך ליצור את הליבה באמצעות Kleaf.
בטלפונים מדגמי Pixel 6 ו-Pixel 6 Pro עם ליבות android13-5.15
, מריצים את הפקודה ליצירת קובץ build של Kleaf:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
בכל שאר הליבות של Pixel, מריצים את הסקריפט build_DEVICE.sh
שנמצא בכתובת KERNEL_REPO_ROOT
. ברוב המקרים, השדה DEVICE
צריך להיות שם הקוד שתואם לשם הקוד שמצוין בעמודה Binary path in AOSP tree בטבלה GKI supported Pixel kernel branches. זה יכול להיות שם הקוד של מכשיר אחד, כמו '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 של הליבה ועל אופן ההתאמה האישית של ה-build מופיעים במאמר Kleaf – Building Android Kernels with Bazel.
איך מאפסים את קובצי האימג' של הליבה
הערה: אם לא השבתתם את האימות, עליכם לעשות זאת לפני שתוכלו להריץ את הקושחה של הליבה בהתאמה אישית. זו הפקודה לביצוע הפעולה הזו:fastboot oem disable-verification
אזהרה: אם אתם מבצעים הפעלה (flash) של ליבה מותאמת אישית מעל build של פלטפורמה, יכול להיות שתצטרכו למחוק את המכשיר אם יש הורדה לאחור של רמת תיקון האבטחה (SPL) שמשויכת לליבה החדשה. התהליך הזה גורם למחיקת כל המידע האישי שלכם. חשוב לגבות את הנתונים לפני שמוחקים אותם.fastboot -w
כדי להפעיל את קובצי האימג' של הליבה, מריצים את הפקודה fastboot flash
לכל מחיצה של הליבה שמופיעה במכשיר. במחיצות דינמיות, צריך להפעיל מחדש את המכשיר למצב fastbootd
לפני ה-flash.
מכשירים | מחיצות ליבה |
---|---|
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 (dynamic partition) system_dlkm (dynamic partition) |
בטלפונים מדגמי Pixel 6/6 Pro/6a, אם דילגתם על ההורדה של vendor_ramdisk
בקטע עדכון ה-ramdisk של הספק, תוכלו להשתמש בפקודה הבאה כדי לעדכן את ה-ramdisk של DTB ו-DLKM במקום לבצע את הפלאש של קובץ האימג' vendor_boot.img
:
fastboot flash --dtb out/DEVICE/dist/dtb.img vendor_boot:dlkm out/slider/dist/initramfs.img
אלה הפקודות להצגת 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.
ליבות 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 (קו כחול) 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 (sailfish) Pixel XL (marlin) |
device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |