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à nạp một nhân Pixel tuỳ chỉnh để phát triển. Nhờ GKI, giờ đây, bạn có thể cập nhật nhân 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 cần cập nhật các mô-đun nhân trên phân vùng vendor
. Phân vùng này phụ thuộc vào bản dựng nền tảng Android cho các thiết bị đó. Bảng Các nhánh kernel Pixel được GKI hỗ trợ bao gồm nhánh tệp kê khai kho lưu trữ kernel cho từng thiết bị Pixel được GKI hỗ trợ. Hãy tham khảo phần Nhân Pixel cũ để biết các nhánh kê khai nhân của Pixel 5 và các phiên bản trước đó.
Các nhánh hạt nhân Pixel được GKI hỗ trợ
Thiết bị | Nhánh kho lưu trữ | Kernel GKI |
---|---|---|
Pixel 9a (tegu) | android-gs-tegu-6.1-android16 | android14-6.1 |
Pixel 9 Pro Fold (comet) | android-gs-comet-6.1-android16 | android14-6.1 |
Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) |
android-gs-caimito-6.1-android16 | android14-6.1 |
Pixel 8a (akita) | android-gs-akita-6.1-android16 | android14-6.1 |
Pixel 8 (shiba) Pixel 8 Pro (husky) |
android-gs-shusky-6.1-android16 | android14-6.1 |
Pixel Fold (felix) | android-gs-felix-6.1-android16 | android14-6.1 |
Pixel Tablet (tangorpro) | android-gs-tangorpro-6.1-android16 | android14-6.1 |
Pixel 7a (lynx) | android-gs-lynx-6.1-android16 | android14-6.1 |
Pixel 7 (panther) Pixel 7 Pro (cheetah) |
android-gs-pantah-6.1-android16 | android14-6.1 |
Pixel 6a (bluejay) | android-gs-bluejay-6.1-android16 | android14-6.1 |
Pixel 6 (oriole) Pixel 6 Pro (raven) |
android-gs-raviole-6.1-android16 | android14-6.1 |
Ngoài các nhân được nhà máy hỗ trợ, 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 nhân Android Common có trong bảng Các tổ hợp nền tảng và nhân Android được hỗ trợ trên Pixel 6/6 Pro. Do sự khác biệt về UAPI của nhà cung cấp giữa các HAL nền tảng Android và trình điều khiển nhân Pixel, bảng này cung cấp các tổ hợp bản dựng được hỗ trợ.
Các tổ hợp nền tảng và nhân Android được hỗ trợ trên Pixel 6/6 Pro
Nhánh tệp kê khai nhân Pixel | Nhánh GKI | Bản dựng nền tảng Android |
---|---|---|
gs-android-gs-raviole-mainline | android-mainline | android-latest-release |
android16-6.12-gs101 | android16-6.12 | android-latest-release |
gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) |
Chuẩn bị thiết bị Pixel
Biểu đồ quy trình sau đây mô tả quy trình cập nhật nhân trên 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 và Nhân Android được hỗ trợ.
- Chọn các mục sau:
- Xóa dữ liệu thiết bị
- Buộc Flash tất cả các phân vùng
- Tắt quy trình xác minh
- Nhấn vào nút Install build (Cài đặt bản dựng) để truyền nhanh thiết bị.
Tải xuống và biên dịch nhân
Đồng bộ hoá kho lưu trữ kernel
Chạy các lệnh sau để tải mã nguồn nhân xuống. Tham khảo bảng Các tổ hợp Nền tảng và Nhân Android được hỗ trợ trên Pixel 6/6 Pro 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 ramdisk của nhà cung cấp
Cập nhật tệp vendor_ramdisk-DEVICE.img
trong kho lưu trữ nhân để khớp với bản dựng nền tảng Android được flash trên thiết bị. Có một số cách để cập nhật tệp vendor_ramdisk-DEVICE.img
. Sử dụng lựa chọn (1) nếu bạn đang dùng Android 15 QPR2 (BP11.241025.006) trở lên. Nếu không, hãy sử dụng lựa chọn (2).
Lựa chọn 1) Chỉ cập nhật các bit DTB và DLKM của phân vùng vendor_boot
Kể từ phiên bản fastboot 35.0.2-12583183, bạn có thể trực tiếp flash DTB và DLKM ramdisk trên phân vùng
vendor_boot
. Tải và trích xuấtsdk-repo-HOST_OS-platform-tools-12583183.zip
từ các cấu phần phần mềm v35.0.2-12583183 vào môi trường của máy chủ để sử dụng.Làm theo hướng dẫn để flash DTB và
vendor_boot:dlkm
trong phần Flash the kernel images (Flash hình ảnh hạt nhân).Cách 2) Trích xuất hình ảnh ramdisk 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 xuống từ https://developers.google.com/android/images.
Trích xuất
vendor_boot.img
:Các lệnh sau đây sử dụng Pixel 6 Pro AP1A.240505.004 làm ví dụ. 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_
đã trích xuất vào kho lưu trữ nhân Pixel.Thiết bị 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
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 tạo kernel 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 nhân bằng Kleaf.
Để thuận tiện, bạn có thể chạy tập lệnh build_DEVICE.sh
có tại KERNEL_REPO_ROOT
. Trong hầu hết các trường hợp, DEVICE
phải là tên mã. Tên mã nà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 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 phiên bản android14
trở xuống, hãy dùng build_slider.sh
cho Pixel 6 và Pixel 6 Pro, còn build_cloudripper.sh
cho Pixel 7 và Pixel 7 Pro.
Ví dụ: để tạo kernel 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 trên các nhánh kernel sản xuất, tập lệnh build_DEVICE.sh
sẽ sử dụng kernel GKI được tạo sẵn để tăng tốc quá trình xây dựng. Nếu bạn muốn sửa đổi nhân cốt 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ộ. Theo mặc định, các nhánh kernel phát triển sẽ trực tiếp tạo nguồn kernel.
Để 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 nhân Android bằng Bazel.
Nạp các hình ảnh kernel
Lưu ý: Nếu chưa tắt quy trình xác minh, bạn cần phải tắt trước khi cài đặt kernel 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 một nhân tuỳ chỉnh lên trên bản dựng nền tảng, thì bạn có thể cần xoá dữ liệu trên thiết bị nếu có bản hạ cấp mức bản vá bảo mật (SPL) liên kết với 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á.fastboot -w
Để cài đặt ROM hình ảnh nhân, hãy chạy lệnh fastboot flash
cho từng phân vùng 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 ở chế độ fastbootd
trước khi nhấp nháy.
Thiết bị | Phân vùng kernel |
---|---|
Pixel 6
(oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
boot dtbo vendor_boot hoặc vendor_boot:dlkm 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 (phân vùng động) system_dlkm (phân vùng động) |
Dưới đây là các lệnh nhấp nháy cho Pixel 6 trên android-mainline
:
fastboot flash boot out/slider/dist/boot.img
fastboot flash dtbo out/slider/dist/dtbo.img
fastboot flash --dtb out/slider/dist/dtb.img vendor_boot:dlkm out/slider/dist/initramfs.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img
Đối với Pixel 6/6 Pro/6a, nếu bạn đã cập nhật vendor_ramdisk
trong phần Cập nhật ramdisk của nhà cung cấp, thì thay vào đó, hãy dùng lệnh sau để cập nhật phân vùng vendor_boot
:
fastboot flash vendor_boot out/slider/dist/vendor_boot.img
Bạn có thể tìm thấy hình ảnh của nhân trong DIST_DIR.
Nhánh kernel | DIST_DIR |
---|---|
v5.10 | out/mixed/dist |
v5.15 trở lên | out/DEVICE/dist |
Lưu ý: Nếu bạn có một khoá nối tiếp và muốn bật nhật ký nối tiếp, thì lệnh là:Ví dụ về lệnh 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.
Nhân Pixel cũ
Để tham khảo, bảng các nhánh kernel Pixel cũ cung cấp các nhánh kho lưu trữ kernel cho thiết bị Pixel 5 trở xuống. Đây là những thiết bị không được GKI hỗ trợ.
Các nhánh kernel Pixel cũ
Thiết bị | Đường dẫn nhị phân trong cây AOSP | Nhánh kho lưu trữ |
---|---|---|
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 (đỏ cam) Pixel 4 XL (cam san hô) |
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 (blueline) Pixel 3 XL (crosshatch) |
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 |