Duy trì Giao diện mô-đun hạt nhân (KMI) ổn định

Điều quan trọng là duy trì KMI ổn định cho các mô-đun của nhà cung cấp. Nhân GKI được xây dựng và vận chuyển ở dạng nhị phân và 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. Nhân GKI và mô-đun nhà cung cấp thu được phải hoạt động như thể chúng được xây dựng cùng nhau.

Nói chung, cộng đồng Linux không tán thành khái niệm về tính ổn định ABI trong nhân đối với nhân chính. Trước các chuỗi công cụ, cấu hình khác nhau và nhân dòng chính Linux ngày càng phát triển, việc duy trì KMI ổn định trong dòng chính là không khả thi. Tuy nhiên, có thể duy trì KMI ổn định trong môi trường GKI có nhiều ràng buộc với những ràng buộc sau:

  • Chỉ có một cấu hình duy nhất, gki_defconfig , có thể được sử dụng để 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ư android13-5.10 , android12-5.10 hoặc android13-5.15 .

    • Không có sự ổn định KMI nào được duy trì cho android-mainline .
  • Chỉ chuỗi công cụ Clang cụ thể được cung cấp trong AOSP và được xác định cho nhánh tương ứng mới được sử dụng để xây dựng kernel và mô-đun.

  • Chỉ các ký hiệu được biết là được mô-đun sử dụng như được chỉ định trong danh sách ký hiệu mới được giám sát về độ ổn định và được coi là ký hiệu KMI.

    • Hệ quả tất yếu là các mô-đun của nhà cung cấp chỉ được sử dụng ký hiệu KMI. Ràng buộc này được thực thi bằng cách tải mô-đun không thành công nếu yêu cầu các ký hiệu không phải KMI.
  • Sau khi nhánh KMI bị đóng băng, được phép thay đổi nhưng không thể phá vỡ KMI. Những thay đổi này bao gồm:

    • Thay đổi cấu hình
    • Thay đổi mã hạt nhân
    • 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 kín và chuỗi công cụ LLVM

Quá trình xây dựng kín đảm bảo KMI ổn định bằng cách có các tệp kê khai repo trong kernel/manifest mô tả đầy đủ môi trường xây dựng. Ví dụ: tệp kê khai cho android13-5.15 bao gồm chuỗi công cụ, tập lệnh xây dựng và mọi thứ khác cần thiết để xây dựng hạt nhân Hình ảnh hạt nhân chung (GKI). Các tệp cấu hình build.config tương ứng, chẳng hạn như cấu hình bản dựng GKI build.config.gki.aarch64 , đảm bảo rằng các công cụ đi kèm được sử dụng đúng cách để tạo ra kết quả bản dựng nhất quán.

Việc sử dụng quy trình xây dựng kín cũng đảm bảo rằng mô tả ABI cho cây nhất quán cho dù được tạo bởi Google (ví dụ: abi_gki_aarch64.xml cho android13-5.15 hay được tạo trong cây cục bộ bao gồm các mô-đun của nhà cung cấp. Các công cụ để tạo và so sánh Mô tả ABI cho Giao diện mô-đun hạt nhân (KMI) cũng được cung cấp như một phần của kho lưu trữ được mô tả trong tệp kê khai.

Chuỗi công cụ được sử dụng để xây dựng hạt nhân GKI phải hoàn toàn tương thích với chuỗi công cụ được sử dụng để xây dựng các mô-đun của nhà cung cấp. Kể từ Android 10, tất cả nhân 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 được sử dụng để xây dựng nhân sản phẩm và mô-đun nhà cung cấp phải tạo ra ABI giống 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 nhân GKI. Chúng tôi đặc biệt khuyến khích sử dụng các công cụ xây dựng được cung cấp vì chúng mang lại sự đảm bảo về khả năng tương thích.

Cái gì tiếp theo?

  • Để biết hướng dẫn xây dựng kernel bằng quy trình xây dựng kín và chuỗi công cụ LLVM, hãy tham khảo Xây dựng kernel .

  • Để biết hướng dẫn về cách giám sát ABI và khắc phục sự cố, hãy tham khảo Giám sát ABI hạt nhân Android