Duy trì giao diện mô-đun nhân ổn định

Điều quan trọng là phải duy trì giao diện mô-đun hạt nhân (KMI) ổn định cho các mô-đun của nhà cung cấp. Hạt nhân GKI được tạo và vận chuyển ở dạng tệp nhị phân và các mô-đun có thể tải của nhà cung cấp được tạo trong một cây riêng biệt. Hạt nhân GKI và mô-đun nhà cung cấp thu được phải hoạt động như thể chúng được tạo cùng nhau.

Nhìn chung, cộng đồng Linux không đồng tình với khái niệm về độ ổn định của ABI trong nhân đối với nhân chính. Khi có nhiều chuỗi công cụ, cấu hình và một nhân hệ điều hành dòng chính Linux không ngừng phát triển, việc duy trì KMI ổn định trong dòng chính là không thể. Tuy nhiên, bạn có thể duy trì KMI ổn định trong môi trường GKI bị ràng buộc cao với các quy tắc ràng buộc sau:

  • Bạn chỉ có thể sử dụng một cấu hình duy nhất, gki_defconfig, để tạo hạt nhân.

  • KMI chỉ ổn định trong cùng một phiên bản LTS và Android của một hạt nhân, chẳng hạn như android13-5.10, android12-5.10 hoặc android13-5.15.

    • Không duy trì độ ổn định KMI 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 dùng để tạo nhân và mô-đun.

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

    • Theo đó, các mô-đun của nhà cung cấp chỉ được sử dụng các ký hiệu KMI. Quy tắc ràng buộc này được thực thi bằng cách không thực hiện được quá trình tải mô-đun nếu bắt buộc phải sử dụng biểu tượng không phải KMI.
  • Sau khi nhánh KMI bị đóng băng, bạn vẫn có thể thay đổi nhưng không được làm hỏng KMI. Những thay đổi này bao gồm:

    • Thay đổi về cấu hình
    • Thay đổi mã hạt nhân
    • Thay đổi về chuỗi công cụ (bao gồm cả nội dung 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 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 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 bản 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 nội dung mô tả ABI cho cây luôn nhất quán, cho dù là do Google tạo (ví dụ: abi_gki_aarch64.xml cho android13-5.15) hay được tạo trong một 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 nội dung mô tả ABI cho Giao diện mô-đun hạt nhân (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 để tạo hạt nhân GKI phải hoàn toàn tương thích với chuỗi công cụ dùng để tạo mô-đun của nhà cung cấp. Kể từ Android 10, tất cả nhân Android phải được tạo bằng chuỗi công cụ LLVM. Với GKI, chuỗi công cụ LLVM dùng để tạo nhân sản phẩm và mô-đun nhà cung cấp phải tạo ABI giống với 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. 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 tạo hạt nhân bằng quy trình xây dựng kín và chuỗi công cụ LLVM, hãy tham khảo phần Tạo hạt nhân.

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