Trong Android 10 và 11, đĩa ram giai đoạn đầu tiên chứa tệp nhị phân init giai đoạn đầu tiên (thực hiện quá trình gắn sớm theo chỉ định của các mục fstab) và các tệp fstab của nhà cung cấp. (Như trong Android 9 trở xuống, system.img
chứa nội dung của $TARGET_ROOT_OUT
.)
Đối với các thiết bị có boot-ramdisk (không phải A/B), init giai đoạn đầu tiên là tệp thực thi tĩnh được đặt tại
/init
. Các thiết bị này gắnsystem.img
dưới dạng/system
, sau đó thực hiện thao tác chuyển đổi root để di chuyển mount tại/system
sang/
. Nội dung của đĩa RAM sẽ được giải phóng sau khi quá trình gắn kết hoàn tất.Đối với các thiết bị sử dụng recovery làm ramdisk, init giai đoạn đầu tiên được đặt tại
/init
trong ramdisk recovery. Trước tiên, các thiết bị này chuyển root sang/first_stage_ramdisk
để xóa các thành phần khôi phục khỏi môi trường, sau đó tiến hành tương tự như các thiết bị có boot-ramdisk (nghĩa là gắnsystem.img
dưới dạng/system
, chuyển root để di chuyển mount đó sang/
, và nội dung đĩa RAM trống sau khi gắn). Nếuandroidboot.force_normal_boot=1
có trong dòng lệnh kernel (hoặc bootconfig từ Android 12 trở đi), thiết bị sẽ khởi động bình thường (vào Android) thay vì khởi động vào chế độ khôi phục.
Sau khi giai đoạn init đầu tiên kết thúc, nó thực thi /system/bin/init
với đối số selinux_setup
để biên dịch và tải SELinux vào hệ thống. Cuối cùng, init thực thi lại /system/bin/init
với đối số second_stage
. Tại thời điểm này, giai đoạn chính của init chạy và tiếp tục quá trình khởi động bằng cách sử dụng tập lệnh init.rc
Các phần sau đây trình bày chi tiết những khác biệt về bố cục phân vùng cho các thiết bị không phải A/B trước và sau Android 10.
Bố cục phân vùng (thiết bị không phải A/B)
Các phần sau đây trình bày chi tiết những khác biệt về bố cục phân vùng cho các thiết bị không phải A/B trước và sau Android 10.
boot.img
Đĩa RAM (Android 8.x trở xuống) | Hệ thống là root (Android 9) | Đĩa RAM (Android 10 và 11) |
---|---|---|
Chứa kernel và ramdisk.img -/ - init.rc - init - etc -> /system/etc - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... | Chỉ chứa kernel khởi động bình thường. | Chứa kernel và ramdisk.img -/ - init - vendor fstab files - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
recovery.img
Chứa kernel khôi phục và ramdisk.img
khôi phục
hệ thống.img
Đĩa RAM (Android 8.x trở xuống) | Hệ thống là root (Android 9) | Đĩa RAM (Android 10 và 11) |
---|---|---|
Chứa một system.img -/ - bin/ - etc - vendor -> /vendor - ... | Chứa nội dung được hợp nhất của system.img -/ - init.rc - init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... | Chứa nội dung được hợp nhất của system.img -/ - init.rc - init -> /system/bin/init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... |
Bố cục phân vùng (thiết bị A/B)
Các phần sau đây trình bày chi tiết những khác biệt về bố cục phân vùng cho thiết bị A/B trước và sau Android 10.
boot.img
Hệ thống là root (Android 9) | Đĩa RAM (Android 10 và 11) |
---|---|
Chứa kernel khởi động bình thường và recovery-ramdisk ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk chỉ được sử dụng để khởi động vào recovery. | Chứa kernel khởi động bình thường và recovery-ramdisk ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk được sử dụng để khởi động vào cả recovery và Android. ramdisk.img -/ - init -> /system/bin/init - first_stage_ramdisk - vendor fstab files - etc -> /system/etc - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
hệ thống.img
Chứa nội dung được hợp nhất của $TARGET_SYSTEM_OUT
và $TARGET_ROOT_OUT
.
system.img
-/
- init.rc
- init -> /system/bin/init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...