Tổng quan về mô-đun kernel

Có hai loại mô-đun nhân: không phụ thuộc vào phần cứng Các mô-đun GKI và phần cứng dành riêng cho mô-đun nhà cung cấp. 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 dùng để phân phối nhân hệ điều hành không bắt buộc khởi động tách biệt với 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 là giảm kích thước hình ảnh nhân và mức tiêu thụ bộ nhớ trong thời gian chạy. Việc giảm kích thước giúp GKI phù hợp với Thiết bị Android Go và các kiểu dáng khác bị hạn chế về tài nguyên.

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

Các mô-đun GKI sử dụng cơ sở hạ tầng ký thời gian xây dựng của nhân hệ điều hành để 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à các trình xử lý này chỉ sử dụng các biểu tượng có trên danh sách cho phép hoặc do các nhà cung cấp dịch vụ các mô-đun chưa được ký.

Có 2 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ệ là do Google phân phối, không bị hạn chế theo 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, 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 biểu tượng hạt nhân không phải KMI 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 biểu tượng trở thành một phần của nền tảng KMI miễn là các biểu tượng đó được trích dẫn trong một danh sách biểu tượng.
  • Các mô-đun của nhà cung cấp không ghi đè được các mô-đun GKI được bảo vệ.

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

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 KMI đóng băng, mô-đun GKI được bảo vệ có thể được phân loại lại là không được bảo vệ nếu nhóm GKI quyết định rằng nhà cung cấp cần ghi đè phương thức triển khai mặc định có phiên bản bao gồm các tính năng mới từ Linux ngược dòng. Vào ngày tiếp theo Bản phát hành GKI, các mô-đun không được bảo vệ sẽ được phân loại lại là được bảo vệ sau mã ngược dòng sẽ nằm trong một Hạt nhân phổ biến (ACK) của Android. 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ư nhà cung cấp các mô-đun.
  • 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 GKI được bảo vệ các mô-đun.
  • 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 nhân hệ điều hành.
  • 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ột mô-đun nhà cung cấp do đối tác phân phối để triển khai SoC và các thiết bị cụ thể của Google. Bất kỳ mô-đun nhân hệ điều hành nào hiện có không được phân phối như một phần của Nhân GKI 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 cụ thể trong nhân lõi, nhà cung cấp có thể kỳ vọng rằng GKI nhân hệ điều hành sẽ không bao gồm các mô-đun rõ ràng đang quản lý phần cứng của riêng chúng. Cho ví dụ: nhà cung cấp ABC Inc, có thể dự kiến rằng các cấu hình như CONFIG_ABC_SOC_SUPPORT sẽ không được bật dưới dạng tích hợp sẵn hoặc có thể tải Các mô-đun GKI không có sự hỗ trợ.

Nếu một 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 nhân GKI, nhà cung cấp có thể sửa đổi trình điều khiển và phân phối trình điều khiển đó với tư cách là nhà cung cấp . Bạn không nên sửa đổi các mô-đun như vậy đố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 một bản phát hành trong tương lai. Khi nhân hệ điều hành GKI chứa chức năng do nhà cung cấp cung cấp mô-đun nhà cung cấp sẽ không tải. Ví dụ: CONFIG_GREYBUS không được thiết lập cho GKI trong Android 11, vì vậy nhà cung cấp có thể phân phối mô-đun nhà cung cấp xe buýt màu xám. Tuy nhiên, CONFIG_GREYBUS có thể được bật dưới dạng GKI tích hợp sẵn hoặc mô-đun trong Android 12, trong trường hợp nào mô-đun của nhà cung cấp Cloudbus 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 các trình điều khiển không dành riêng cho nhà cung cấp nếu các trình điều khiển đó được phân phối dưới dạng mô-đun nhà cung cấp.

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