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

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

Nhìn chung, cộng đồng Linux có không hài lòng với khái niệm ABI trong nhân độ ổn định cho nhân hệ điều hành chính. Khi đối mặt với 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, thì việc duy trì một KMI ổn định trong dòng chính. Tuy nhiên, có thể duy trì KMI ổn định trong môi trường GKI bị ràng buộc chặt chẽ với những hạn chế sau:

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

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

    • Không có KMI ổn định 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 được dùng để tạo hạt nhân và mô-đun.

  • Chỉ những biểu tượng mà các mô-đun đã biết sử dụng như được chỉ định trong danh sách biểu tượng mới là được giám sát 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. Chiến dịch này quy tắc ràng buộc được thực thi bằng cách không thực hiện được các lần tải mô-đun nếu các ký hiệu không phải KMI là là bắt buộc.
  • Sau khi nhánh KMI bị đóng băng, các thay đổi được cho phép nhưng không thể phá vỡ KMI. Có những thay đổi như sau:

    • Thay đổi về cấu hình
    • Thay đổi mã kernel
    • 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 khép kín đảm bảo KMI ổn định bằng cách có repo tệp kê khai trong kernel/manifest mô tả đầy đủ môi trường tạo bản 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 để tạo Hạt nhân Hình ảnh hạt nhân chung (GKI). 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 bản dựng nhất quán kết quả.

Việc sử dụng quy trình xây dựng khép kín cũng đảm bảo rằng phần mô tả ABI cho cho dù là do Google tạo (ví dụ: abi_gki_aarch64.xml cho android13-5.15) hoặc được tạo trong một cây cục bộ có chứa nhà cung cấp các mô-đun. Chiến lược phát hành đĩa đơn 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 như một phần của kho lưu trữ. được mô tả bởi 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 các mô-đun nhà cung cấp. Kể từ Android 10. Tất cả nhân hệ điều hành Android đều 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 để tạo sản phẩm nhân hệ điều hành và mô-đun nhà cung cấp phải tạo cùng ABI 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 cung cấp khả năng tương thích tốt nhất.

Tiếp theo là gì?

  • Để xem hướng dẫn về cách tạo hạt nhân bằng quy trình xây dựng khép kín và Chuỗi công cụ LLVM, tham khảo tham khảo Hạt nhân bản dựng.

  • Để biết hướng dẫn về cách theo dõi ABI và khắc phục vấn đề, hãy tham khảo Giám sát ABI kernel trên Android