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 nhân hệ điều hành chung (GKI) được dùng để phân phối nhân hệ điều hành không yêu cầu 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 các khả năng của nhân cụ thể để sử dụng, thường là giảm kích thước hình ảnh của 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ệ 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ác chức năng khác nhau. 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ể kỳ vọng 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ì những khả 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 GKI chứa các tính 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.