Xây dựng hạt 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à flash hạt nhân Pixel tùy chỉnh để phát triển. Nhờ có GKI, giờ đây có thể cập nhật kernel độ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. Điều này là do các thiết bị Pixel 5 trở xuống yêu cầu cập nhật mô-đun hạt nhân trên phân vùng vendor . Điều này phụ thuộc vào bản dựng nền tảng Android cho các thiết bị đó. Bảng nhánh hạt nhân pixel được GKI hỗ trợ bao gồm nhánh tệp kê khai 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ũ để biết các nhánh tệp kê khai hạt nhân Pixel 5 trở về trước.

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 Chi nhánh kho lưu trữ Hạt nhân GKI
Pixel 8 (shiba)
Pixel 8 Pro (khàn khàn)
thiết bị/google/shusky-kernel android-gs-shusky-5.15-android14-d1 android14-5.15
Pixel Fold (felix) thiết bị/google/felix-kernel android-gs-felix-5.10-android14 android13-5.10
Máy tính bảng Pixel (tangorpro) thiết bị/google/tangorpro-kernel android-gs-tangorpro-5.10-android14 android13-5.10
Pixel 7a (linh miêu) thiết bị/google/lynx-kernel android-gs-lynx-5.10-android14 android13-5.10
Pixel 7 (con báo)
Pixel 7 Pro (báo gêpa)
thiết bị/google/pantah-kernel android-gs-pantah-5.10-android14 android13-5.10
Pixel 6a (bluejay) thiết bị/google/bluejay-kernel android-gs-bluejay-5.10-android14 android13-5.10
Pixel 6 (chim vàng anh)
Pixel 6 Pro (quạ)
thiết bị/google/raviole-kernel android-gs-raviole-5.10-android14 android13-5.10

Ngoài các hạt 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 hạt nhân Android Common 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 nền tảng Android và trình điều khiển hạt nhân Pixel, bảng này cung cấp các kết hợp bản dựng được hỗ trợ.

Hỗ trợ kết hợp hạt nhân và nền tảng Pixel 6/6 Pro Android
Nhánh tệp kê khai hạt nhân Pixel Chi nhánh GKI Xây dựng nền tảng Android hỗ trợ aosp-main ?
gs-android-gs-raviole-mainline android-mainline ( thẻ v6.7 ) UP1A.231005.007.A1 (10762838) Đúng
android14-gs-pixel-6.1 android14-6.1 UP1A.231005.007.A1 (10762838) Đúng
gs-android13-gs-raviole-5.15 android13-5.15 TQ1A.230205.002 (9471150) KHÔNG

Chuẩn bị thiết bị Pixel của bạn

Lưu đồ sau đây mô tả quy trình cập nhật kernel trên thiết bị Pixel 6 trở lên:

**Hình 1.** Biểu đồ luồng cập nhật hạt nhân

Flash thiết bị bằng flash.android.com

  1. Điều hướng đến flash.android.com
  2. Chọn bản dựng Android dựa trên sự kết hợp Nền tảng Android và Hạt nhân được hỗ trợ .
  3. Chọn các tùy chọn sau:
    • Thiết bị lau chùi
    • Buộc Flash tất cả các phân vùng
    • Tắt xác minh
  4. Nhấn nút Install build để flash thiết bị.

**Hình 2.** Ví dụ về Trạm Flash

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

Đồng bộ hóa kho kernel

Chạy các lệnh sau để tải xuống mã nguồn kernel. Tham khảo bảng Kết hợp hạt nhân và nền tảng Android Pixel 6/6 Pro được hỗ trợ để biết 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 kernel để phù hợp với bản dựng nền tảng Android được flash trên thiết bị. Có một số lựa chọn bạn có thể làm theo.

Tùy chọn 1) Trích xuất hình ảnh ramdisk của nhà cung cấp từ hình ảnh nhà máy Pixel .
  1. Tải xuống hình ảnh nhà máy được hỗ trợ cho thiết bị của bạn từ https://developers.google.com/android/images.

  2. Giải nén vendor_boot.img :

    • Các lệnh sau đây sử dụng Pixel 6 Pro UP1A.231005.007.a1 làm ví dụ. Thay thế tên tệp zip bằng tên tệp của hình ảnh nhà máy mà bạn đã tải xuống.
      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
    
  3. 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
    
  4. Sao chép tệp ramdisk_ đã giải nén vào kho lưu trữ hạt nhân Pixel.

    Thiết bị DEVICE_RAMDISK_PATH
    Pixel 6 (chim vàng anh)
    Pixel 6 Pro (quạ)
    prebuilds/boot-artifacts/ramdisks/vendor_ramdisk- oriole.img
    Pixel 6a (bluejay) riêng tư/thiết bị/google/bluejay/vendor_ramdisk- bluejay.img
      cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \
          KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
    
Tùy chọn 2) Sao chép vendor_ramdisk từ kho lưu trữ nền tảng Android được xây dựng cục bộ.
Thiết bị DEVICE_RAMDISK_PATH
Pixel 6 (chim vàng anh)
Pixel 6 Pro (quạ)
prebuilds/boot-artifacts/ramdisks/vendor_ramdisk- oriole.img
Pixel 6a (bluejay) riêng tư/thiết bị/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 kernel (Kleaf)

Trong Android 13, tập lệnh build.sh đã được thay thế bằng hệ thống xây dựng kernel mới có tên Kleaf . Đối với các thiết bị sử dụng android13-5.15 trở lên, kernel phải được xây dựng bằng Kleaf.

Đối với Pixel 6 và 6 Pro có nhân android14 trở lên, hãy chạy lệnh xây dựng Kleaf:

tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist

Đối với Pixel 6 và 6 Pro có nhân android13-5.15 , hãy chạy lệnh xây 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 có tại KERNEL_REPO_ROOT . Ví dụ: để xây dựng 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, tập lệnh build_ DEVICE .sh sử dụng hạt nhân GKI dựng sẵn để tăng tốc quá trình xây 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 để xây dựng hạt nhân từ các nguồn cục bộ.

Để biết thêm chi tiết về hệ thống xây dựng kernel và cách tùy chỉnh bản dựng, hãy tham khảo Tài liệu Kleaf .

Flash hình ảnh hạt nhân

Lưu ý: Nếu chưa tắt xác minh, bạn cần thực hiện việc này trước khi flash kernel tùy chỉnh. Đây là lệnh để làm như vậy:
fastboot oem disable-verification
CẢNH BÁO: Nếu bạn đang cài đặt một hạt nhân tùy chỉnh trên bản dựng nền tảng thì bạn có thể cần phải xóa thiết bị của mình nếu có sự hạ cấp cấp bản vá bảo mật (SPL) liên quan đến hạt nhân mới. Quá trình này sẽ xóa tất cả dữ liệu cá nhân của bạn. Hãy chắc chắn sao lưu dữ liệu của bạn trước khi xóa.
fastboot -w

Để flash ảnh kernel, hãy chạy lệnh fastboot flash cho từng phân vùng kernel được liệt kê cho thiết bị của bạn. Đối với phân vùng động, bạn cần khởi động lại vào chế độ fastbootd trước khi flash.

Thiết bị Phân vùng hạt nhân
Pixel 6 (chim vàng anh)
Pixel 6 Pro (quạ)
Pixel 6a (bluejay)
khởi động
dtbo
nhà cung cấp_boot
nhà cung cấp_dlkm (phân vùng động)
Pixel 8 (shiba)
Pixel 8 Pro (khàn khàn)
Pixel Fold (felix)
Máy tính bảng Pixel (tangorpro)
Pixel 7a (linh miêu)
Pixel 7 (con báo)
Pixel 7 Pro (báo gêpa)
khởi động
dtbo
nhà cung cấp_kernel_boot
nhà cung cấp_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 vendor_boot out/slider/dist/vendor_boot.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img

Hình ảnh hạt nhân có thể được tìm thấy trong DIST_DIR .

Nhánh hạt nhân DIST_DIR
v5.10 out/mixed/dist
v5.15 trở lên out/ DEVICE /dist
Lưu ý: Nếu bạn có dongle nối tiếp và muốn bật nhật ký nối tiếp, lệnh là:
fastboot oem uart enable
fastboot oem uart config 3000000
Lệnh ví dụ để kết nối từ máy chủ:
screen -fn /dev/ttyUSB* 3000000

Khôi phục hình ảnh nhà máy

Để khôi phục thiết bị của bạn về hình ảnh gốc, bạn có thể sử dụng flash.android.com .

Hạt nhân Pixel kế thừa

Để tham khảo, bảng nhánh hạt nhân Pixel cũ cung cấp các nhánh kho lưu trữ hạt nhân cho các thiết bị Pixel 5 trở xuống. Đây là những thiết bị không được hỗ trợ GKI.

Các nhánh hạt nhân Pixel kế thừa
Thiết bị Đường dẫn nhị phân trong cây AOSP Chi nhánh kho lưu trữ
Pixel 5a (thịt nướng)
Pixel 4a (5G) (mâm xôi)
Pixel 5 (vây đỏ)
thiết bị/google/redbull-kernel android-msm-redbull-4.19-android14
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 (san hô)
thiết bị/google/hạt nhân san hô android-msm-san hô-4.14-android13
Pixel 3a (sargo)
Pixel 3a XL (cá ngừ)
thiết bị/google/bonito-kernel android-msm-bonito-4.9-android12L
Pixel 3 (đường xanh)
Pixel 3 XL (chéo)
thiết bị/google/crosshatch-kernel android-msm-crosshatch-4.9-android12
Pixel 2 (walleye)
Pixel 2 XL (taimen)
thiết bị/google/wahoo-kernel android-msm-wahoo-4.4-android10-qpr3
Pixel (cá cờ)
Pixel XL (marlin)
thiết bị/google/marlin-kernel android-msm-marlin-3.18-pie-qpr2