Xây dựng nhân Pixel

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 một nhân hệ điều hành 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 hạt nhân Pixel được hỗ trợ của GKI bao gồm nhánh tệp kê khai của kho lưu trữ hạt nhân cho từng thiết bị Pixel được GKI hỗ trợ. Tham khảo phần Hạt nhân Pixel cũ đối với Pixel 5 và các nhánh tệp kê khai hạt nhân trước đó.

Các nhánh nhân hệ điều hành 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 của kho lưu trữ Hạt nhân GKI
Pixel 8a (akita) thiết bị/google/akita-kernel Android-gs-akita-5.15-android14-qpr3 android14 – 5.15
Pixel 8 (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-gs-Fplix-5.10-android14-qpr3 android13 – 5.10
Máy tính bảng Pixel (tangorpro) thiết bị/google/tangorpro-kernel Android-gs-tangorpro-5.10-android14-qpr3 android13 – 5.10
Pixel 7a (Linh miêu) thiết bị/google/lynx-hạt nhân Android-gs-lynx-5.10-android14-qpr3 android13 – 5.10
Pixel 7 (báo đốm)
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 nhà máy hỗ trợ, 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 phổ biến của Android có trong bảng Kết hợp hạt nhân và Nền tảng Android 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 hạt 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 Xây 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)
android14-gs-pixel-6.1 android14-6.1 AP1A.240505.004 (11583682)
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 nhân hệ điều hành trên các thiết bị Pixel 6 trở lên:

**Hình 1.** Biểu đồ quy trình cập nhật kernel

Cài đặt ROM thiết bị bằng flash.android.com

  1. Chuyển đến flash.android.com
  2. Chọn bản dựng Android dựa trên tổ hợp Nền tảng Android và Kernel được hỗ trợ.
  3. 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
  4. Nhấn nút Install build (Cài đặt bản dựng) để cài đặt ROM thiết bị.

**Hình 2.** Ví dụ về Flash Station

Tải xuống và biên dịch nhân

Đồng bộ hoá kho lưu trữ nhân hệ điều hành

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 6/6 Pro được hỗ trợ cho KERNEL_MANIFEST_BRANCH của Pixel.

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.
  1. 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.

  2. 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
    
  3. Giải nén vendor_boot.img để lấy ổ đĩa ram của nhà cung cấp.

      KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \
          --out vendor_boot_out
    
  4. 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 (màu xanh dương) private/devices/google/bluejay/vendor_ramdisk-bluejay.img
      cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \
          KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
    
Lựa chọn 2) Sao chép vendor_ramdisk từ mộ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 (màu xanh dương) 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 nhân Pixel khác, hãy chạy tập lệnh build_DEVICE.sh có tại KERNEL_REPO_ROOT. Ví dụ: để tạo nhân 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 hạt nhân lõi, hãy đặt biến môi trường BUILD_AOSP_KERNEL=1 để tạo hạt 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. Đâ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 ở trên một bản dựng nền tảng, thì bạn có thể phải xoá sạch thiết bị của mình nếu có quy trình hạ cấp ở cấp bản vá bảo mật (SPL) được liên kết với nhân hệ điều hành mới. Quá trình này sẽ xoá tất cả dữ liệu cá nhân của bạn. Hãy nhớ sao lưu dữ liệu của bạn trước khi xóa.
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 cài đặt ROM.

Thiết bị Vách ngăn 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 (chó husky)
Pixel Fold (gói)
Pixel Máy tính bảng (tangorpro)
Pixel 7a (lynx)
Pixel 7 (báo cáo)
Pixel 7 Pro (cheetah)
khởi động
dtbo
vendor_kernel_boot
vendor_dlkm (phân vùng động)
system_dlkm (phân vùng động)

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
phiên bản 5.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à:
fastboot oem uart enable
fastboot oem uart config 3000000
Lệnh mẫu để kết nối từ máy chủ:
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 nhân hệ điều hành của Pixel cung cấp các nhánh kho lưu trữ nhân hệ điều hành cho các 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) (vàng)
Pixel 5 (vây đỏ)
thiết bị/google/redbull-kernel Android-msm-redbull-4.19-android14-qpr3
Pixel 4a (cá mặt trời) thiết bị/google/sunfish-kernel Android-msm-sunfish-4.14-android13-qpr3
Pixel 4 (ngọn lửa)
Pixel 4 XL (màu đỏ san hô)
thiết bị/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 chéo)
thiết bị/google/crosshatch-kernel Android-msm-crosshatch-4.9-android12
Pixel 2 (mắt tường)
Pixel 2 XL (taimen)
thiết bị/google/wahoo-kernel Android-msm-wahoo-4.4-android10-qpr3
Pixel (cá kỳ biển)
Pixel XL (marlin)
thiết bị/google/marlin-kernel android-msm-marlin-3.18-pie-qpr2