Android 11 giới thiệu khái niệm về Hình ảnh hạt nhân chung và phân vùng khởi động của nhà cung cấp. Phân vùng khởi động của nhà cung cấp lưu trữ các mô-đun hạt nhân tương thích với GKI và được tải bởi init giai đoạn đầu tiên. Các mô-đun hạt nhân trước khi phát hành Android 11 cũng được lưu trữ trong các phân vùng của nhà cung cấp và ODM, đồng thời được tải bởi các quy trình của nhà cung cấp.
Đối với Android 11 trở lên, kernel và tất cả các mô-đun kernel có thể được cập nhật độc lập với các phân vùng còn lại. Để kích hoạt các bản cập nhật cho các mô-đun hạt nhân được lưu trữ trong phân vùng của nhà cung cấp (không có bản cập nhật phân vùng của nhà cung cấp), hãy di chuyển tất cả các mô-đun phân vùng của nhà cung cấp sang một phân vùng mới có tên là Nhà cung cấp DLKM (mô-đun hạt nhân có thể tải động). Sau đó bạn có thể cập nhật phân vùng này một cách độc lập. Tương tự, bạn có thể di chuyển tất cả các mô-đun hạt nhân được lưu trữ trong phân vùng ODM sang phân vùng mới có tên ODM DLKM . Phân vùng này cũng có thể được cập nhật độc lập.
Vị trí phân vùng
Các phân vùng vendor_dlkm
và odm_dlkm
được đặt trong siêu phân vùng dưới dạng một phân vùng động khác.
nội dung của nhà cung cấp_dlkm trong /vendor/lib/modules
- Mô-đun hạt nhân của nhà cung cấp
- tập tin cấu hình
modprobe
- Một tập tin
modules.load
nội dung odm_dlkm trong /odm/lib/modules
- Mô-đun hạt nhân ODM
- tập tin cấu hình
modprobe
- Một tập tin
modules.load
Xem Hỗ trợ mô-đun hạt nhân để biết thêm chi tiết về các tệp cấu hình mô-đun hạt nhân.
Xây dựng hỗ trợ
Xây dựng vendor_dlkm
và odm_dlkm
là một quá trình tương tự như xây dựng các phân vùng động khác.
ví dụ về bản dựng của nhà cung cấp_dlkm
Xây dựng vendor_dlkm
như trong ví dụ bên dưới.
BoardConfig.mk
BOARD_USES_VENDOR_DLKMIMAGE := true
BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_COPY_OUT_VENDOR_DLKM := vendor_dlkm
BOARD_<GROUP_NAME>_PARTITION_LIST += vendor_dlkm
Thay thế <GROUP_NAME>
bằng tên thích hợp của nhóm cập nhật. Nhóm cập nhật phải là nhóm chứa phân vùng nhà cung cấp.
Đối với thiết bị A/B và A/B ảo, device.mk
AB_OTA_PARTITIONS += vendor_dlkm
fstab
Thêm mục nhập sau cho vendor_dlkm
vào fstab. Thay đổi cờ theo thiết bị. Sử dụng CL Thêm vendor_dlkm
vào CF làm ví dụ.
vendor_dlkm /vendor_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
ví dụ về bản dựng odm_dlkm
Xây dựng odm_dlkm
như trong ví dụ bên dưới.
BoardConfig.mk
BOARD_USES_ODM_DLKIMAGE := true
BOARD_ODM_DLKIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_COPY_OUT_ODM_DLKM := odm_dlkm
BOARD_<group_name>_PARTITION_LIST += odm_dlkm
Đối với thiết bị A/B và A/B ảo, device.mk
AB_OTA_PARTITIONS += odm_dlkm
fstab
Thêm mục sau cho odm_dlkm
vào fstab. Thay đổi cờ theo thiết bị. Sử dụng CL Thêm odm_dlkm
vào CF làm ví dụ.
odm_dlkm /odm_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
Sao chép mô-đun hạt nhân vào một phân vùng
Để chọn các mô-đun hạt nhân bạn muốn sao chép vào phân vùng vendor_dlkm
, hãy liệt kê chúng trong BOARD_VENDOR_KERNEL_MODULES
.
Nếu bạn muốn ghi đè nội dung của modules.load
, bạn có thể chỉ định nội dung đó trong BOARD_VENDOR_KERNEL_MODULES_LOAD
.
Tại thời điểm xây dựng, các mô-đun được liệt kê trong BOARD_VENDOR_KERNEL_MODULES
sẽ được cài đặt trong $ANDROID_PRODUCT_OUT/vendor_dlkm/lib/modules
. Một liên kết tượng trưng được tạo tại /vendor/lib/modules
dẫn đến /vendor_dlkm/lib/modules
.
Tương tự, để chọn các mô-đun hạt nhân bạn muốn sao chép vào phân vùng odm_dlkm
, hãy liệt kê chúng trong BOARD_ODM_KERNEL_MODULES
. Bản dựng nền tảng chạy depmod
trên các mô-đun và sao chép các tệp đầu ra depmod
vào hình ảnh. Bản dựng tạo một tệp modules.load
và lưu trữ nó trong hình ảnh. Tệp này chứa tất cả các mô-đun được liệt kê trong BOARD_ODM_KERNEL_MODULES
.
Nếu bạn muốn ghi đè nội dung của modules.load
, bạn có thể chỉ định nó trong BOARD_ODM_KERNEL_MODULES_LOAD
.
Tại thời điểm xây dựng, các mô-đun được liệt kê trong BOARD_ODM_KERNEL_MODULES
sẽ được cài đặt trong $ANDROID_PRODUCT_OUT/odm_dlkm/lib/modules
. Một liên kết tượng trưng sẽ được tạo tại /odm/lib/modules
dẫn đến /odm_dlkm/lib/modules
.
Luôn sử dụng /vendor/lib/modules
và /odm/lib/modules
cho các mô-đun hạt nhân của nhà cung cấp và ODM.
Không bao giờ sử dụng /vendor_dlkm/lib/modules. Các thiết bị không có phân vùng vendor_dlkm
sẽ cài đặt trực tiếp BOARD_VENDOR_KERNEL_MODULES
vào /vendor/lib/modules
. Đây là vấn đề vì /vendor_dlkm/lib/modules
không tồn tại.
Không bao giờ sử dụng /odm_dlkm/lib/modules. Các thiết bị không có phân vùng odm_dlkm
sẽ cài đặt trực tiếp BOARD_ODM_KERNEL_MODULES
vào /odm/lib/modules
. Đây là vấn đề vì /odm_dlkm/lib/modules
không tồn tại.
Gắn phân vùng và tải mô-đun
Trong first_stage_init
, các phân vùng vendor_dlkm
và odm_dlkm
lần lượt được gắn vào các phân vùng /vendor_dlkm
và /odm_dlkm
. Khi điều này xảy ra, các liên kết tượng trưng tại /vendor/lib/modules
và /odm/lib/modules
sẽ khả dụng.
Sau đó, quy trình của nhà cung cấp (như tập lệnh '.rc') có thể tải các mô-đun hạt nhân dựa trên thứ tự được chỉ định trong modules.load
. Quy trình của nhà cung cấp cũng có thể tải các mô-đun sau, nếu cần.
Tài liệu liên quan
Để biết tài liệu về việc tạo phân vùng khởi động của nhà cung cấp (chứa RAMDisk của nhà cung cấp), hãy tham khảo Hỗ trợ mô-đun hạt nhân .