Tổng quan về mô-đun hạt nhân

Có hai loại mô-đun hạt nhân: mô-đun GKI bất khả tri về phần cứng và mô- đun nhà cung cấp phần cứng cụ thể. Trang này cung cấp thông tin tổng quan về cả hai loại mô-đun.

mô-đun GKI

Các mô-đun Hình ảnh hạt nhân chung (GKI) được sử dụng để cung cấp chức năng hạt nhân không cần khởi động, tách biệt với hạt nhân lõi chung. Với các mô-đun GKI, bạn có thể chọn chức năng hạt nhân cụ thể để sử dụng, thường giảm kích thước hình ảnh hạt nhân và mức tiêu thụ bộ nhớ thời gian chạy. Việc giảm kích thước giúp GKI rất phù hợp với các thiết bị Android Go và các kiểu dáng bị hạn chế về tài nguyên khác.

Các mô-đun GKI cũng cung cấp cơ chế cho phép các nhà cung cấp kết hợp các tính năng ngược dòng mới sau cột mốc đóng băng KMI. Không thể thay thế mã tích hợp nếu không xây dựng một hình ảnh khác, trong khi mã được phân phối dưới dạng mô-đun có thể được thay thế bằng một mô-đun khác.

Các mô-đun GKI sử dụng cơ sở hạ tầng ký thời gian xây dựng của hạt nhân để phân biệt giữa GKI và các mô-đun khác trong thời gian chạy. Các mô-đun chưa được ký được phép tải miễn là chúng chỉ sử dụng các ký hiệu xuất hiện trên danh sách cho phép hoặc được cung cấp bởi các mô-đun chưa được ký khác.

Có hai loại mô-đun GKI logic: mô-đun GKI được bảo vệmô-đun GKI không được bảo vệ .

Mô-đun GKI được bảo vệ

Mô-đun GKI được bảo vệ do Google cung cấp, không bị hạn chế dưới bất kỳ hình thức nào và hoạt động như thể được xây dựng bằng nhân sau khi tải. Ngoài ra, các mô-đun GKI được bảo vệ có các đặc điểm sau:

  • Các mô-đun GKI được bảo vệ có quyền truy cập vào các ký hiệu hạt nhân không phải KMI không có sẵn cho các mô-đun của nhà cung cấp hoặc các mô-đun GKI không được bảo vệ.
  • Các mô-đun GKI được bảo vệ có thể xuất các ký hiệu trở thành một phần của bề mặt KMI miễn là các ký hiệu đó được trích dẫn trong danh sách ký hiệu.
  • Các mô-đun GKI được bảo vệ không thể bị ghi đè bởi các mô-đun của nhà cung cấp.

Mô-đun GKI được bảo vệ là lớp mô-đun GKI mặc định. Tất cả các mô-đun GKI được coi là được bảo vệ tại thời điểm đóng băng KMI.

Mô-đun GKI không được bảo vệ

Mô-đun GKI không được bảo vệ có thể bị mô-đun nhà cung cấp ghi đè. Sau khi KMI bị đóng băng, mô-đun GKI được bảo vệ có thể được phân loại lại thành không được bảo vệ nếu nhóm GKI quyết định rằng nhà cung cấp cần ghi đè cách triển khai mặc định bằng một phiên bản bao gồm các tính năng mới từ Linux ngược dòng. Trong bản phát hành GKI tiếp theo, các mô-đun không được bảo vệ sẽ được phân loại lại thành được bảo vệ sau khi mã ngược dòng nằm trong Hạt nhân chung của Android (ACK). Các mô-đun GKI không được bảo vệ có các đặc điểm sau:

  • Các mô-đun GKI không được bảo vệ có cùng quyền truy cập vào các ký hiệu được xuất như các mô-đun của nhà cung cấp.
  • Các mô-đun GKI không được bảo vệ không thể xuất các biểu tượng được xuất bởi các mô-đun GKI được bảo vệ.
  • Các mô-đun GKI không được bảo vệ phải bảo toàn mọi giao diện KMI như một phần của lõi lõi.
  • Các mô-đun GKI không được bảo vệ có thể bị ghi đè bởi các mô-đun của nhà cung cấp.

Mô-đun nhà cung cấp

Một mô-đun nhà cung cấp được các đối tác phân phối để triển khai SoC và chức năng dành riêng cho thiết bị. Bất kỳ mô-đun hạt nhân hiện có nào không được phân phối như một phần của hạt nhân GKI đều có thể được phân phối dưới dạng mô-đun nhà cung cấp.

Vì một trong những mục tiêu chính của dự án GKI là giảm thiểu mã dành riêng cho phần cứng trong nhân lõi nên các nhà cung cấp có thể mong đợi rằng nhân GKI sẽ không bao gồm các mô-đun đang quản lý rõ ràng phần cứng của riêng họ. Ví dụ: nhà cung cấp ABC Inc có thể mong đợi rằng các cấu hình như CONFIG_ABC_SOC_SUPPORT sẽ không được bật dưới dạng mô-đun GKI tích hợp hoặc có thể tải nếu không có sự hỗ trợ của chúng.

Nếu trình điều khiển hoặc khung hạt nhân tồn tại trong ACK nhưng không được phân phối như một phần của hạt nhân GKI thì nhà cung cấp có thể sửa đổi trình điều khiển và phân phối nó dưới dạng mô-đun nhà cung cấp. Những sửa đổi như vậy không được khuyến khích đối với các mô-đun không dành riêng cho nhà cung cấp vì chức năng tương tự có thể được cung cấp cùng với nhân GKI trong bản phát hành trong tương lai. Khi nhân GKI chứa chức năng do mô-đun nhà cung cấp cung cấp, mô-đun nhà cung cấp sẽ không tải. Ví dụ: CONFIG_GREYBUS chưa được đặt cho GKI trong Android 11, vì vậy nhà cung cấp có thể cung cấp mô-đun nhà cung cấp greybus. Tuy nhiên, CONFIG_GREYBUS có thể được bật dưới dạng mô-đun hoặc tích hợp GKI trong Android 12, trong trường hợp đó, các mô-đun của nhà cung cấp greybus sẽ không được tải. Cách tốt nhất là sử dụng phiên bản ngược dòng của trình điều khiển không dành riêng cho nhà cung cấp nếu chúng được phân phối dưới dạng mô-đun của nhà cung cấp.

Bạn có thể phân phối các mô-đun nhà cung cấp trong hình ảnh vendor hoặc vendor_boot . Các mô-đun được yêu cầu sớm trong quá trình khởi động phải có trong vendor_boot . Có chi phí về thời gian khởi động liên quan đến việc tải mô-đun từ vendor_boot .