本指南提供有關如何下載、編譯和刷新自訂 Pixel 核心以進行開發的逐步說明。借助 GKI,現在可以獨立於 Android 平台建置來更新核心。這些步驟僅適用於 Pixel 6 及更高版本的裝置。這是因為 Pixel 5 及更早版本的裝置需要更新vendor
分區上的核心模組,這取決於這些裝置的 Android 平台建置。 GKI 支援的 Pixel 核心分支表包括每個 GKI 支援的 Pixel 裝置的核心儲存庫清單分支。有關 Pixel 5 和更早版本的核心清單分支,請參閱舊版 Pixel Kernels部分。
GKI 支援的 Pixel 核心分支
裝置 | AOSP 樹中的二進位路徑 | 儲存庫分支 | GKI內核 |
---|---|---|---|
Pixel 8(柴犬) Pixel 8 Pro(哈士奇) | 設備/谷歌/shusky-內核 | android-gs-shusky-5.15-android14-d1 | 安卓14-5.15 |
像素折疊(菲利克斯) | 設備/谷歌/felix-內核 | 安卓-gs-felix-5.10-android14 | 安卓13-5.10 |
Pixel 平板電腦 (tangorpro) | 設備/谷歌/tangorpro-內核 | android-gs-tangorpro-5.10-android14 | 安卓13-5.10 |
Pixel 7a(山貓) | 設備/谷歌/lynx-內核 | 安卓-gs-lynx-5.10-android14 | 安卓13-5.10 |
Pixel 7(黑豹) Pixel 7 Pro(獵豹) | 設備/谷歌/pantah-內核 | 安卓-gs-pantah-5.10-android14 | 安卓13-5.10 |
Pixel 6a(冠藍鴉) | 設備/Google/bluejay-內核 | 安卓-gs-bluejay-5.10-android14 | 安卓13-5.10 |
Pixel 6(黃鶯) Pixel 6 Pro(烏鴉) | 設備/谷歌/raviole-內核 | android-gs-raviole-5.10-android14 | 安卓13-5.10 |
除了工廠支援的核心之外,Pixel 6 和 6 Pro 裝置僅在支援的 Pixel 6/6 Pro Android 平台和核心組合表中包含的 Android 通用核心分支上支援 GKI 開發。由於 Android 平台 HAL 和 Pixel 核心驅動程式之間的供應商 UAPI 差異,該表提供了支援的建置組合。
支援的 Pixel 6/6 Pro Android 平台和核心組合
像素內核清單分支 | GKI分公司 | Android平台建置 | aosp-main 支持嗎? |
---|---|---|---|
gs-android-gs-raviole-mainline | android-mainline ( v6.7 標籤) | UP1A.231005.007.A1 (10762838) | 是的 |
android14-gs-pixel-6.1 | 安卓14-6.1 | UP1A.231005.007.A1 (10762838) | 是的 |
gs-android13-gs-raviole-5.15 | 安卓13-5.15 | TQ1A.230205.002 (9471150) | 不 |
準備您的 Pixel 設備
以下流程圖描述了 Pixel 6 及更高版本裝置上更新核心的過程:
使用 flash.android.com 刷新設備
- 導航至flash.android.com
- 根據支援的 Android 平台和核心組合選擇 Android 版本。
- 選擇以下選項:
- 擦拭設備
- 強制刷新所有分割區
- 禁用驗證
- 按下“安裝建置”按鈕來刷新設備。
下載並編譯內核
同步核心儲存庫
執行以下命令下載核心原始碼。有關 Pixel KERNEL_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
更新供應商 ramdisk
更新核心儲存庫中的檔案vendor_ramdisk- DEVICE .img
以符合裝置上快閃記憶體的Android平台版本。您可以遵循以下幾個選項。
選項 1) 從Pixel Factory 映像中擷取供應商 ramdisk 映像。
從 https://developers.google.com/android/images 下載適用於您的裝置的支援的工廠映像。
提取
vendor_boot.img
:- 以下指令以 Pixel 6 Pro UP1A.231005.007.a1為例。將 zip 檔案名稱替換為您下載的工廠映像的檔案名稱。
unzip raven-up1a.231005.007.a1-factory-5d927f3e.zip
cd raven-up1a.231005.007.a1
unzip image-raven-up1a.231005.007.a1.zip vendor_boot.img
解壓縮
vendor_boot.img
,取得vendor ramdisk。KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_out
將提取的
ramdisk_
檔案複製到 Pixel 核心儲存庫。裝置 DEVICE_RAMDISK_PATH Pixel 6(黃鶯)
Pixel 6 Pro(烏鴉)prebuilts/boot-artifacts/ramdisks/vendor_ramdisk- oriole.img Pixel 6a(冠藍鴉) 私人/設備/Google/bluejay/vendor_ramdisk-bluejay.img cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \ KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
選項2)從本地建置的Android平台儲存庫複製vendor_ramdisk
。
裝置 | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6(黃鶯) Pixel 6 Pro(烏鴉) | prebuilts/boot-artifacts/ramdisks/vendor_ramdisk- oriole.img |
Pixel 6a(冠藍鴉) | 私人/設備/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
腳本。例如,要在分支android-gs-raviole-5.10-android14
上建置 Pixel 6 的內核,您可以執行以下命令:
build_slider.sh
預設情況下, build_ DEVICE .sh
腳本使用預先建置的 GKI 核心來加速建置過程。如果要修改核心內核,請設定環境變數BUILD_AOSP_KERNEL=1
以從本機來源建置核心。
有關內核建置系統以及如何自訂建置的更多詳細信息,請參閱Kleaf 文件。
刷新核心映像
注意:如果您尚未停用驗證,則需要在刷新自訂核心之前執行此操作。以下是執行此操作的命令:fastboot oem disable-verification
警告:如果您在平台建置之上刷新自訂內核,並且存在與新內核相關的安全性修補程式等級 (SPL) 降級,則您可能需要擦除裝置。此過程會刪除您的所有個人資料。擦除前請務必備份資料。fastboot -w
若要刷新核心映像,請為您的裝置列出的每個核心分割區執行fastboot flash
命令。對於動態分割區,您需要在刷新之前重新啟動到fastbootd
模式。
裝置 | 核心分區 |
---|---|
Pixel 6(黃鶯) Pixel 6 Pro(烏鴉) Pixel 6a(冠藍鴉) | 啟動 德特博 供應商引導 vendor_dlkm (動態分割區) |
Pixel 8(柴犬) Pixel 8 Pro(哈士奇) 像素折疊(菲利克斯) Pixel 平板電腦 (tangorpro) Pixel 7a(山貓) Pixel 7(黑豹) Pixel 7 Pro(獵豹) | 啟動 德特博 供應商內核啟動 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 核心分支表提供了 Pixel 5 及更早版本裝置的核心儲存庫分支。這些是非 GKI 支援的設備。
舊版 Pixel 核心分支
裝置 | AOSP 樹中的二進位路徑 | 儲存庫分支 |
---|---|---|
Pixel 5a(巴貝) Pixel 4a (5G)(荊棘) Pixel 5(紅鰭) | 設備/谷歌/紅牛內核 | 安卓-msm-redbull-4.19-android14 |
Pixel 4a(翻車魚) | 設備/谷歌/sunfish-內核 | android-msm-sunfish-4.14-android13-qpr3 |
像素4(火焰) Pixel 4 XL(珊瑚色) | 設備/谷歌/珊瑚內核 | android-msm-coral-4.14-android13 |
Pixel 3a(薩爾戈) Pixel 3a XL(鰹魚) | 設備/Google/bonito-kernel | android-msm-bonito-4.9-android12L |
Pixel 3(藍線) Pixel 3 XL(交叉線) | 設備/Google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
Pixel 2(白眼魚) Pixel 2 XL(泰門) | 設備/谷歌/wahoo-內核 | android-msm-wahoo-4.4-android10-qpr3 |
像素(旗魚) Pixel XL(馬林魚) | 設備/谷歌/marlin-內核 | android-msm-marlin-3.18-pie-qpr2 |