Tổng quan về mô-đun 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 dành riêng cho nhà cung cấp phần cứng . Trang này cung cấp 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 yêu cầu 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 nhân cụ thể để sử dụng, thường giảm kích thước hình ảnh 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 yếu tố hình thức hạn chế 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 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ô-đ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 ký được phép tải miễn là chúng chỉ sử dụng các ký hiệu xuất hiện trong danh sách cho phép hoặc được cung cấp bởi các mô-đun chưa ký khác.

Có hai loại mô-đun GKI logic: mô-đun GKI được bảo vệ 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ế theo bất kỳ cách nào và hoạt động như thể mô-đun này được tạo cùng với 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ị các mô-đun của nhà cung cấp ghi đè.

Mô-đun GKI được bảo vệ là lớp mặc định của mô-đun GKI. 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 của nhà cung cấp ghi đè. Sau khi đóng băng KMI, 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 đè triển khai mặc định bằng 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 hạ cánh trong Android Common Kernel (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 biểu tượng đã 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 vệ mọi giao diện KMI như thể một phần của nhân lõi.
  • Các mô-đun GKI không được bảo vệ có thể bị các mô-đun của nhà cung cấp ghi đè.

mô-đun nhà cung cấp

Mô-đun của 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 của 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 quản lý rõ ràng phần cứng của 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 mà không có sự hỗ trợ của chúng.

Nếu trình điều khiển nhân hoặc khung tồn tại trong ACK, nhưng không được phân phối như một phần của nhân GKI, 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 của 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 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 của nhà cung cấp cung cấp, mô-đun của nhà cung cấp sẽ không tải. Ví dụ: CONFIG_GREYBUS không được đặt cho GKI trong Android 11, vì vậy nhà cung cấp có thể cung cấp các mô-đun của nhà cung cấp greybus. Tuy nhiên, CONFIG_GREYBUS có thể được bật dưới dạng mô-đun hoặc GKI tích hợp sẵn 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. Phương pháp hay 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 của nhà cung cấp trong hình ảnh vendor hoặc nhà cung vendor_boot . Các mô-đun được yêu cầu sớm trong quá trình khởi động phải ở trong vendor_boot . Có một chi phí thời gian khởi động liên quan đến việc tải các mô-đun từ vendor_boot .