Phân vùng RAM

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 việc gắn kết sớm như đã chỉ định theo các mục nhập 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ó ổ đĩa khởi động (không phải A/B), khởi động giai đoạn đầu tiên là một giá trị tĩnh tệp thực thi đượ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 gốc để di chuyển giá đỡ ở /system sang /. Các nội dung của ổ đĩa RAM được giải phóng sau khi quá trình gắn 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 ổ đĩa RAM, quá trình khởi tạo giai đoạn đầu tiên sẽ nằm ở /init trong ổ đĩa khôi phục. Trước tiên, các thiết bị này sẽ chuyển đổi thư mục gốc thành /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ó ổ đĩa RAM khởi động (tức là gắn kết system.img dưới dạng /system, chuyển đổi gốc để di chuyển giá trị gắn kết đó sang / và giải phóng nội dung trong ổ đĩa cứng sau khi kết nối). Nếu androidboot.force_normal_boot=1 là có trong dòng lệnh kernel (hoặc bootconfig từ Android 12 trở đi), thiết bị khởi động bình thường (vào Android) thay vì khởi động vào chế độ khôi phục.

Sau khi quá trình init giai đoạn đầu tiên kết thúc, hàm này sẽ thực thi /system/bin/init bằng hàm Đối số selinux_setup để biên dịch và tải SELinux lên hệ thống. Cuối cùng, init thực thi lại /system/bin/init với đối số second_stage. Lúc này một điểm, giai đoạn chính của init sẽ chạy và tiếp tục quá trình khởi động bằng cách sử dụng init.rc tập lệnh.

Các phần sau đây trình bày chi tiết về sự khác biệt trong bố cục phân vùng cho các ứng dụng không phải A/B thiết bị trước và sau Android 10.

Bố cục phân vùng (các thiết bị không phải A/B)

Các phần sau đây trình bày chi tiết về sự khác biệt trong bố cục phân vùng cho các ứng dụng không phải A/B thiết bị trước và sau Android 10.

boot.img

Ramdisk
(Android 8.x trở xuống)
Hệ thống là thư mục gốc
(Android 9)
Ramdisk
(Android 10 trở lên 11)

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

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

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

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

khôi phục.img

Chứa nhân hệ điều hành khôi phục và ramdisk.img khôi phục

system.img

Ramdisk
(Android 8.x trở xuống)
Hệ thống là thư mục gốc
(Android 9)
Ramdisk
(Android 10 trở lên 11)

Chứa một 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 về sự khác biệt về bố cục phân vùng cho các thiết bị A/B trước và sau Android 10.

boot.img

Hệ thống là thư mục gốc
(Android 9)
Ramdisk
(Android 10 trở lên 11)
Chứa nhân hệ điều hành khởi động bình thường và ổ đĩa khôi phục (BOARD_USES_RECOVERY_AS_BOOT := true).

Đĩa ram khôi phục chỉ được dùng để khởi động vào quá trình khôi phục.
Chứa nhân hệ điều hành khởi động bình thường và ổ đĩa khôi phục (BOARD_USES_RECOVERY_AS_BOOT := true).

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