Phân vùng Ramdisk

Trong Android 10 và 11, ramdisk giai đoạn đầu chứa nhị phân khởi động giai đoạn đầu (thực hiện việc gắn sớm như được chỉ định bởi các mục fstab) và 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), quá trình khởi động giai đoạn đầu là một tệp thực thi tĩnh nằm 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 gốc để di chuyển điểm gắn tại /system sang /. Nội dung của ramdisk 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 tính năng khôi phục dưới dạng ramdisk, quá trình khởi chạy giai đoạn đầu tiên nằm tại /init trong ramdisk khôi phục. Trước tiên, các thiết bị này chuyển đổi thư mục gốc sang /first_stage_ramdisk để xoá 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 (tức là gắn system.img dưới dạng /system, chuyển đổi thư mục gốc để di chuyển phương tiện gắn đó sang / và giải phóng nội dung ramdisk sau khi gắn). Nếu androidboot.force_normal_boot=1 có trong dòng lệnh hạt nhân (hoặc bootconfig từ Android 12 trở lên), thì các 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 hoàn tất giai đoạn khởi chạy đầu tiên, quá trình này sẽ thực thi /system/bin/init bằng đối số selinux_setup để biên dịch và tải SELinux vào hệ thống. Cuối cùng, init sẽ thực thi lại /system/bin/init bằng đối số second_stage. Tại thời điểm này, giai đoạn chính của quá trình khởi chạy sẽ chạy và tiếp tục quá trình khởi động bằng các tập lệnh init.rc.

Các phần sau đây trình bày chi tiết sự 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 sự 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

Ramdisk
(Android 8.x trở xuống)
Hệ thống dưới dạng thư mục gốc
(Android 9)
Ramdisk
(Android 10 và 11)

Chứa một hạt nhân và ramdisk.img.

ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    
Chỉ chứa một hạt nhân khởi động thông thường.

Chứa một hạt nhân và ramdisk.img.

ramdisk.img
  -/
    - init
    - vendor fstab files
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

recovery.img

Chứa hạt nhân khôi phục và ramdisk.img khôi phục

system.img

Ramdisk
(Android 8.x trở xuống)
Hệ thống dưới dạng thư mục gốc
(Android 9)
Ramdisk
(Android 10 và 11)

Chứa system.img.

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

Chứa nội dung đã 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 đã 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 sự 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 dưới dạng thư mục gốc
(Android 9)
Ramdisk
(Android 10 và 11)
Chứa hạt nhân khởi động thông thường và recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk chỉ được dùng để khởi động vào chế độ khôi phục.
Chứa hạt nhân khởi động thông thường và recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk được dùng để khởi động vào cả chế độ khôi phục 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)
    ...
    

system.img

Chứa nội dung đã 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)
    ...