Phân vùng Ramdisk

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ắn system.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ắn system.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ếu androidboot.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 .

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 .

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 .

system.img
  -/
    - bin/
    - etc
    - vendor -> /vendor
    - ...
   

Chứa nội dung được hợp nhất của $TARGET_SYSTEM_OUT$TARGET_ROOT_OUT .

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 $TARGET_SYSTEM_OUT$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)
    ...
    

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$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)
    ...