Hướng dẫn này cung cấp hướng dẫn từng bước về cách tải xuống, biên dịch và cài đặt ROM hạt nhân Pixel tuỳ chỉnh để phát triển. Nhờ có GKI, giờ đây bạn có thể cập nhật nhân hệ điều hành một cách độc lập với bản dựng nền tảng Android. Các bước này chỉ áp dụng cho thiết bị Pixel 6 trở lên. Lý do là Pixel 5 và các thiết bị cũ hơn yêu cầu cập nhật các mô-đun nhân trên phân vùng vendor
, tuỳ thuộc vào bản dựng nền tảng Android của các thiết bị đó. Bảng Nhánh nhân hệ điều hành Pixel được hỗ trợ trên GKI bao gồm nhánh tệp kê khai của kho lưu trữ nhân hệ điều hành cho từng thiết bị Pixel được GKI hỗ trợ. Hãy tham khảo phần Hạt nhân Pixel cũ cho Pixel 5 và các nhánh tệp kê khai hạt nhân cũ hơn.
Các nhánh hạt nhân Pixel được GKI hỗ trợ
Thiết bị | Đường dẫn nhị phân trong cây AOSP (Dự án nguồn mở Android) | Nhánh kho lưu trữ | Hạt nhân GKI |
---|---|---|---|
Pixel 9 Pro Fold (comet) | thiết bị/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) | thiết bị/google/akita-kernel | Android-gs-akita-5.15-android14-qpr3 | android14 – 5.15 |
Pixel 8 (chó Shiba) Pixel 8 Pro (chó Husky) |
thiết bị/google/shusky-kernel | Android-gs-shusky-5.15-android14-qpr3 | android14-5.15 |
Pixel Fold (đối tượng) | thiết bị/google/feix-kernel | Android 14 - qpr3 | android13 – 5.10 |
Máy tính bảng Pixel (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 (báo cáo) Pixel 7 Pro (báo đốm) |
thiết bị/google/pantah-kernel | Android-gs-pantah-5.10-android14-qpr3 | android13 – 5.10 |
Pixel 6a (màu xanh dương) | thiết bị/google/bluejay-kernel | Android-gs-bluejay-5.10-android14-qpr3 | android13 – 5.10 |
Pixel 6 (oriole) Pixel 6 Pro (raven) |
thiết bị/google/raviole-kernel | android-gs-raviole-5.10-android14-qpr3 | android13 – 5.10 |
Ngoài các hạt nhân được hỗ trợ từ nhà sản xuất, các thiết bị Pixel 6 và 6 Pro chỉ được hỗ trợ cho mục đích phát triển GKI trên các nhánh hạt nhân Android Common có trong bảng Nền tảng Android và tổ hợp hạt nhân Pixel 6/6 Pro được hỗ trợ. Do sự khác biệt về UAPI của nhà cung cấp giữa HAL (Lớp trừu tượng phần cứng) của nền tảng Android và trình điều khiển nhân Pixel, nên bảng này sẽ cung cấp các tổ hợp bản dựng được hỗ trợ.
Tổ hợp nền tảng Android và nhân hệ điều hành Pixel 6/6 Pro được hỗ trợ
Nhánh tệp kê khai hạt nhân Pixel | Chi nhánh GKI | Bản dựng nền tảng Android | Bạn có muốn hỗ trợ aosp-main không? |
---|---|---|---|
gs-android-gs-raviole-mainline | android-mainline (phiên bản 6.8) | AP1A.240505.004 (11583682) | Có |
android14-gs-pixel-6.1 | android14-6.1 | AP1A.240505.004 (11583682) | Có |
gs-android13-gs-raviole-5.15 | android13 – 5.15 | TQ1A.230205.002 (9471150) | Không |
Chuẩn bị thiết bị Pixel
Biểu đồ quy trình sau đây mô tả quy trình cập nhật hạt nhân trên các thiết bị Pixel 6 trở lên:
Cài đặt ROM thiết bị bằng flash.android.com
- Truy cập vào flash.android.com
- Chọn bản dựng Android dựa trên các tổ hợp Nền tảng Android và nhân được hỗ trợ.
- Chọn các tuỳ chọn sau:
- Xóa dữ liệu thiết bị
- Buộc Flash tất cả phân vùng
- Tắt tính năng Xác minh
- Nhấn nút Install build (Cài đặt bản dựng) để cài đặt ROM thiết bị.
Tải xuống và biên dịch nhân
Đồng bộ hoá kho lưu trữ nhân
Chạy các lệnh sau để tải mã nguồn kernel xuống. Tham khảo bảng Các tổ hợp hạt nhân và nền tảng Android Pixel 6/6 Pro được hỗ trợ cho Pixel KERNEL_MANIFEST_BRANCH.
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Cập nhật ổ đĩa cứng của nhà cung cấp
Cập nhật tệp vendor_ramdisk-DEVICE.img
trong kho lưu trữ hạt nhân để khớp với bản dựng nền tảng Android được cài đặt ROM trên thiết bị. Dưới đây là một số cách mà bạn có thể làm theo.
Lựa chọn 1) Trích xuất hình ảnh ổ đĩa RAM của nhà cung cấp từ Hình ảnh gốc của Pixel.
Tải hình ảnh gốc được hỗ trợ cho thiết bị của bạn từ https://developers.google.com/android/images.
Trích xuất
vendor_boot.img
:- Ví dụ: các lệnh sau đây sử dụng AP1A.240505.004 của Pixel 6 Pro. Thay thế tên tệp zip bằng tên tệp của hình ảnh gốc mà bạn đã tải xuống.
unzip raven-ap1a.240505.004-factory-9d783215.zip
cd raven-ap1a.240505.004
unzip image-raven-ap1a.240505.004.zip vendor_boot.img
Giải nén
vendor_boot.img
để lấy ramdisk của nhà cung cấp.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_out
Sao chép tệp
vendor-ramdisk-by-name/ramdisk_
đã giải nén vào kho lưu trữ nhân hệ điều hành Pixel.Thiết bị DEVICE_RAMDISK_PATH Pixel 6 (oriole)
Pixel 6 Pro (raven)tạo sẵn/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
Cách 2) Sao chép vendor_ramdisk
từ kho lưu trữ nền tảng Android được tạo cục bộ.
Thiết bị | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6 (oriole) Pixel 6 Pro (raven) |
tạo sẵn/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
Biên dịch hạt nhân (Kleaf)
Trong Android 13, tập lệnh build.sh
đã được thay thế bằng một hệ thống xây dựng nhân mới có tên là Kleaf. Đối với các thiết bị sử dụng android13-5.15
trở lên, bạn nên tạo hạt nhân bằng Kleaf.
Đối với điện thoại Pixel 6 và 6 Pro có nhân android14
trở lên, hãy chạy lệnh tạo bản dựng Kleaf:
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist
Đối với điện thoại Pixel 6 và 6 Pro có nhân android13-5.15
, hãy chạy lệnh tạo bản dựng Kleaf:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
Đối với tất cả các hạt nhân Pixel khác, hãy chạy tập lệnh build_DEVICE.sh
tại KERNEL_REPO_ROOT
. Trong hầu hết trường hợp, DEVICE
cần phải là tên mã khớp với tên mã được sử dụng trong cột Binary path in AOSP tree (Đường dẫn tệp nhị phân trong cây AOSP) của bảng GKI supported Pixel kernel branches (Các nhánh hạt nhân Pixel được hỗ trợ bởi GKI). Đây có thể là tên mã của một thiết bị, chẳng hạn như "akita" (Pixel 8a) hoặc tên mã đại diện cho một nhóm thiết bị có liên quan dùng chung một hạt nhân, chẳng hạn như "caimito" có nghĩa là Pixel 9 (tokay), Pixel 9 Pro (caiman) và Pixel 9 Pro XL (komodo). Đối với các bản phát hành android14
trở xuống, hãy sử dụng build_slider.sh
cho Pixel 6 và Pixel 6 Pro, cũng như build_cloudripper.sh
cho Pixel 7 và Pixel 7 Pro.
Ví dụ: để tạo nhân hệ điều hành cho Pixel 6 trên nhánh android-gs-raviole-5.10-android14
, bạn sẽ chạy lệnh:
build_slider.sh
Theo mặc định, các tập lệnh build_DEVICE.sh
sử dụng hạt nhân GKI tạo sẵn để tăng tốc quá trình tạo bản dựng. Nếu bạn muốn sửa đổi nhân lõi, hãy đặt biến môi trường BUILD_AOSP_KERNEL=1
để tạo nhân từ các nguồn cục bộ.
Để biết thêm thông tin chi tiết về hệ thống xây dựng nhân và cách tuỳ chỉnh bản dựng, hãy tham khảo bài viết Kleaf – Xây dựng hạt nhân Android bằng Bazel.
Lưu hình ảnh nhân hệ điều hành
Lưu ý: Nếu chưa tắt tính năng xác minh, bạn cần bật lại trước khi cài đặt ROM nhân tuỳ chỉnh. Sau đây là lệnh để thực hiện việc này:fastboot oem disable-verification
CẢNH BÁO: Nếu đang cài đặt ROM một hạt nhân tuỳ chỉnh trên bản dựng nền tảng, thì bạn có thể cần phải xoá sạch thiết bị nếu có mức bản vá bảo mật (SPL) hạ cấp liên kết với hạt nhân mới. Quá trình này sẽ xoá toàn bộ dữ liệu cá nhân của bạn. Hãy nhớ sao lưu dữ liệu trước khi xoá sạch.fastboot -w
Để cài đặt ROM hình ảnh hạt nhân, hãy chạy lệnh fastboot flash
cho từng phân vùng hạt nhân được liệt kê cho thiết bị của bạn. Đối với các phân vùng động, bạn cần khởi động lại vào chế độ fastbootd
trước khi cài đặt ROM.
Thiết bị | Phân vùng hạt nhân |
---|---|
Pixel 6
(oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
khởi động dtbo vendor_boot vendor_dlkm (phân vùng động) |
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) |
Sau đây là các lệnh cài đặt ROM cho điện thoại Pixel 6 trên 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
Bạn có thể tìm thấy hình ảnh hạt nhân trong DIST_DIR.
Nhánh kernel | DIST_DIR |
---|---|
v5.10 | out/mixed/dist |
phiên bản 5.15 trở lên | out/DEVICE/dist |
Lưu ý: Nếu bạn có thiết bị phần cứng nối tiếp và muốn bật nhật ký nối tiếp, lệnh sẽ là:Lệnh mẫu để kết nối từ máy chủ: fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Khôi phục hình ảnh gốc
Để khôi phục thiết bị về hình ảnh gốc, bạn có thể sử dụng flash.android.com.
Hạt nhân Pixel cũ
Để tham khảo, bảng các nhánh hạt nhân Pixel cũ cung cấp các nhánh kho lưu trữ hạt nhân cho thiết bị Pixel 5 trở xuống. Đây là các thiết bị không hỗ trợ GKI.
Nhánh nhân hệ điều hành Pixel cũ
Thiết bị | Đường dẫn nhị phân trong cây AOSP (Dự án nguồn mở Android) | Nhánh của kho lưu trữ |
---|---|---|
Pixel 5a (barbet) Pixel 4a (5G) (bramble) Pixel 5 (redfin) |
thiết bị/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 (ngọn lửa) Pixel 4 XL (màu san hô) |
device/google/coral-kernel | android-msm-coral-4.14-android13 |
Pixel 3a (sargo) Pixel 3a XL (bonito) |
thiết bị/google/bonito-kernel | android-msm-bonito-4.9-android12L |
Pixel 3 (màu xanh dương) Pixel 3 XL (kiểu dáng lai) |
thiết bị/google/crosshatch-kernel | Android-msm-crosshatch-4.9-android12 |
Pixel 2 (mắt tường) 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 |