Android 11 giới thiệu khái niệm về Hạt nhân chung Hình ảnh và phân vùng khởi động nhà cung cấp. Phân vùng khởi động của nhà cung cấp lưu trữ nhân hệ điều hành các mô-đun tương thích với GKI và được tải bằng khởi tạo giai đoạn đầu tiên. Mô-đun hạt nhân trước bản phát hành của Android 11 cũng được lưu trữ trong phân vùng nhà cung cấp và ODM, đồng thời được tải bằng quy trình của nhà cung cấp.
Đối với Android 11 trở lên, nhân và tất cả nhân mô-đun có thể được cập nhật độc lập với phần còn lại của các phân vùng. Để bật bản cập nhật cho các mô-đun nhân được lưu trữ trong phân vùng nhà cung cấp (không có nhà cung cấp cập nhật phân vùng), hãy di chuyển tất 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 nhân hệ điều hành có thể tải động). Sau đó, bạn có thể cập nhật một cách độc lập. Tương tự, bạn có thể di chuyển tất cả mô-đun nhân được lưu trữ trong phân vùng ODM sang một phân vùng mới có tên là ODM DLKM. Phân vùng này có thể là cũng được cập nhật độc lập.
Vị trí phân vùng
Phân vùng vendor_dlkm
và odm_dlkm
nằm trong phân vùng cấp cao dưới dạng
một phân vùng động khác.
Nội dung provider_dlkm trong /vendor/lib/modules
- Mô-đun nhân của nhà cung cấp
modprobe
tệp cấu hình- Một tệp
modules.load
Nội dung odm_dlkm trong /odm/lib/modules
- Mô-đun nhân ODM
modprobe
tệp cấu hình- Một tệp
modules.load
Xem Mô-đun Kernel Hỗ trợ để biết thêm thông tin chi tiết về tệp cấu hình mô-đun nhân.
Hỗ trợ bản dựng
Quá trình tạo vendor_dlkm
và odm_dlkm
là một quy trình tương tự như quy trình tạo
phân vùng động.
Ví dụ về bản dựng provider_dlkm
Tạo vendor_dlkm
như trong các ví dụ sau.
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 bản cập nhật
nhóm. 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à thiết bị ảo A/B, device.mk
AB_OTA_PARTITIONS += vendor_dlkm
thẻ 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
Tỷ lệ phần trăm (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
Tạo odm_dlkm
như trong các ví dụ sau.
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à thiết bị ảo A/B: device.mk
AB_OTA_PARTITIONS += odm_dlkm
thẻ fstab
Thêm mục nhập sau cho odm_dlkm
vào fstab. Thay đổi cờ theo
thiết bị. Sử dụng CL Thêm odm_dlkm
vào
Tỷ lệ phần trăm (CF)
làm ví dụ.
odm_dlkm /odm_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
Sao chép các mô-đun nhân vào một phân vùng
Cách chọn mô-đun nhân mà bạn muốn sao chép vào phân vùng vendor_dlkm
:
liệt kê chúng trong BOARD_VENDOR_KERNEL_MODULES
.
Nếu muốn ghi đè nội dung của modules.load
, bạn có thể chỉ định nội dung này trong
BOARD_VENDOR_KERNEL_MODULES_LOAD
.
Tại thời điểm xây dựng, các mô-đun có trong BOARD_VENDOR_KERNEL_MODULES
sẽ được cài đặt
trong $ANDROID_PRODUCT_OUT/vendor_dlkm/lib/modules
. Mối liên kết tượng trưng
được tạo lúc /vendor/lib/modules
dẫn đến /vendor_dlkm/lib/modules
.
Tương tự, để chọn mô-đun nhân mà bạn muốn sao chép vào 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 rồi sao chép tệp đầu ra depmod
vào hình ảnh.
Bản dựng sẽ tạo một tệp modules.load
và lưu trữ tệp đó 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 muốn ghi đè nội dung của modules.load
, bạn có thể chỉ định nội dung này trong
BOARD_ODM_KERNEL_MODULES_LOAD
.
Tại thời điểm xây dựng, các mô-đun liệt kê trong BOARD_ODM_KERNEL_MODULES
được cài đặt trong
$ANDROID_PRODUCT_OUT/odm_dlkm/lib/modules
. Một liên kết tượng trưng đượ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 nhà cung cấp
và mô-đun nhân ODM.
Tuyệt đối không sử dụng /vendor_dlkm/lib/modules. Thiết bị không có vendor_dlkm
cài đặt phân vùng BOARD_VENDOR_KERNEL_MODULES
đến /vendor/lib/modules
trực tiếp. Đâ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
cài đặt trực tiếp BOARD_ODM_KERNEL_MODULES
vào /odm/lib/modules
. Đây là
có 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 suốt first_stage_init
, các phân vùng vendor_dlkm
và odm_dlkm
được gắn trong phân vùng /vendor_dlkm
và /odm_dlkm
tương ứng. Thời gian
đ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ẽ trở thành
sẵn có.
Sau đó, quy trình của nhà cung cấp (như tập lệnh .rc
) có thể tải các mô-đun nhân dựa trên
cho đơn đặt hàng được chỉ định trong modules.load
. Quy trình của nhà cung cấp cũng có thể tải
mô-đun sau đó, nếu cần.
Tài liệu liên quan
Để xem tài liệu về việc tạo phân vùng khởi động nhà cung cấp ( chứa RAMDisk của nhà cung cấp), tham khảo Mô-đun Kernel Hỗ trợ.