Bạn cần duy trì giao diện mô-đun kernel (KMI) ổn định cho các mô-đun nhà cung cấp. Kernel GKI được xây dựng và phân phối ở dạng nhị phân, còn các mô-đun có thể tải của nhà cung cấp được xây dựng trong một cây riêng biệt. Kernel GKI và các mô-đun nhà cung cấp kết quả phải hoạt động như thể chúng được xây dựng cùng nhau.
Nhìn chung, cộng đồng Linux không tán thành khái niệm về tính ổn định của ABI trong kernel cho kernel chính. Khi đối mặt với các chuỗi công cụ, cấu hình khác nhau và kernel chính của Linux luôn phát triển, bạn không thể duy trì KMI ổn định trong kernel chính. Tuy nhiên, bạn có thể duy trì KMI ổn định trong môi trường GKI bị hạn chế cao với các hạn chế sau:
Bạn chỉ có thể sử dụng một cấu hình duy nhất là
gki_defconfigđể xây dựng kernel.KMI chỉ ổn định trong cùng một phiên bản LTS và Android của kernel, chẳng hạn như
android14-6.1,android15-6.6hoặcandroid16-6.12.- Không duy trì tính ổn định của KMI cho
android-mainline.
- Không duy trì tính ổn định của KMI cho
Bạn chỉ sử dụng chuỗi công cụ Clang cụ thể được cung cấp trong AOSP và xác định cho nhánh tương ứng để xây dựng kernel và mô-đun.
Chỉ những ký hiệu được biết là được các mô-đun sử dụng như được chỉ định trong danh sách ký hiệu mới được theo dõi để đảm bảo tính ổn định và được coi là ký hiệu KMI.
- Hệ quả là các mô-đun nhà cung cấp chỉ được sử dụng ký hiệu KMI. Hạn chế này được thực thi bằng cách không tải mô-đun nếu cần ký hiệu không phải KMI.
Sau khi nhánh KMI bị đóng băng, bạn có thể thay đổi nhưng không được phá vỡ KMI. Những thay đổi này bao gồm:
- Thay đổi cấu hình
- Thay đổi mã kernel
- Thay đổi chuỗi công cụ (bao gồm cả bản cập nhật)
Sử dụng quy trình xây dựng khép kín và chuỗi công cụ LLVM
Quy trình xây dựng khép kín đảm bảo KMI ổn định bằng cách có tệp kê khai repo trong kernel/manifest mô tả đầy đủ môi trường tạo bản dựng. Ví dụ: tệp
kê khai cho android16-6.12
bao gồm chuỗi công cụ, hệ thống xây dựng và mọi thứ khác cần thiết để xây dựng kernel Hình ảnh kernel chung (GKI)
. Cấu hình bản dựng, chủ yếu là
BUILD.bazel,
đảm bảo rằng các công cụ được đưa vào được sử dụng đúng cách để tạo kết quả bản dựng
nhất quán.
Việc sử dụng quy trình xây dựng khép kín cũng đảm bảo rằng nội dung mô tả ABI cho cây
nhất quán, cho dù do Google tạo (ví dụ:
gki/aarch64/abi.stg
cho android16-6.12) hay được tạo trong một cây cục bộ bao gồm các mô-đun nhà cung cấp. Các
công cụ để tạo và so sánh nội dung mô tả ABI
cho Giao diện mô-đun kernel (KMI) cũng được cung cấp trong kho lưu trữ được
mô tả trong tệp kê khai.
Chuỗi công cụ dùng để xây dựng kernel GKI phải hoàn toàn tương thích với chuỗi công cụ dùng để xây dựng các mô-đun nhà cung cấp. Kể từ Android 10, tất cả kernel Android phải được xây dựng bằng chuỗi công cụ LLVM. Với GKI, chuỗi công cụ LLVM dùng để xây dựng kernel sản phẩm và các mô-đun nhà cung cấp phải tạo ra cùng một ABI như chuỗi công cụ LLVM từ AOSP và các đối tác phải đảm bảo rằng KMI tương thích với kernel GKI. Bạn nên sử dụng các công cụ xây dựng được cung cấp vì chúng mang lại khả năng tương thích tốt nhất.
Tiếp theo là gì?
Để biết hướng dẫn về cách xây dựng kernel bằng quy trình xây dựng khép kín và chuỗi công cụ LLVM, hãy tham khảo bài viết Xây dựng kernel.
Để biết hướng dẫn về cách giám sát ABI và khắc phục vấn đề, hãy tham khảo bài viết Theo dõi ABI kernel Android