在 Android 10 和 Android 11 中,第一阶段 ramdisk 包含第一阶段 init 二进制文件(按照 fstab 条目的指定执行早期装载)和供应商 fstab 文件。(与在 Android 9 及更低版本中一样,system.img 包含 $TARGET_ROOT_OUT 的内容。)
对于具有 boot-ramdisk 的设备(非 A/B),第一阶段 init 是位于
/init的静态可执行文件。这些设备将system.img作为/system进行装载,然后执行切换根操作以将装载从/system移动到/。装载完成后,ramdisk 的内容将会释放。对于将恢复模式用作 ramdisk 的设备,第一阶段 init 位于恢复 ramdisk 中的
/init。这些设备首先将根切换到/first_stage_ramdisk,以便从环境中移除恢复组件,然后执行与具有 boot-ramdisk 的设备一样的操作(即,将system.img作为/system进行装载,切换根以将该装载移动到/,然后在装载完成后释放 ramdisk 内容)。如果内核命令行(或 Android 12 及更高版本中的 bootconfig)中存在androidboot.force_normal_boot=1,设备会正常启动(启动到 Android),而不是启动到恢复模式。
在第一阶段 init 完成后,它会使用 selinux_setup 参数执行 /system/bin/init,以编译 SELinux 并将其加载到系统中。最后,init 会使用 second_stage 参数再次执行 /system/bin/init。此时,init 的主阶段将会运行,并使用 init.rc 脚本继续执行启动过程。
下面的部分将详细介绍非 A/B 设备在使用 Android 10 前后的分区布局差异。
分区布局(非 A/B 设备)
下面的部分将详细介绍非 A/B 设备在使用 Android 10 前后的分区布局差异。
boot.img
| Ramdisk (Android 8.x 及更低版本)  | 
    System as root (Android 9)  | 
    Ramdisk (Android 10 和 11)  | 
  
|---|---|---|
包含内核和  
ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
     | 
   仅包含正常启动内核。 | 包含内核和  
ramdisk.img
  -/
    - init
    - vendor fstab files
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
     | 
  
recovery.img
包含恢复内核和恢复 ramdisk.img
system.img
| Ramdisk (Android 8.x 及更低版本)  | 
    System as root (Android 9)  | 
    Ramdisk (Android 10 和 11)  | 
  
|---|---|---|
包含  
system.img
  -/
    - bin/
    - etc
    - vendor -> /vendor
    - ...
    | 
   包含  
system.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/
      - bin/
      - etc/
      - vendor -> /vendor
      - ...
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
     | 
   包含  
system.img
  -/
    - init.rc
    - init -> /system/bin/init
    - etc -> /system/etc
    - system/
      - bin/
      - etc/
      - vendor -> /vendor
      - ...
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
     | 
  
分区布局(A/B 设备)
下面的部分将详细介绍 A/B 设备在使用 Android 10 前后的分区布局差异。
boot.img
| System as root (Android 9)  | 
    Ramdisk (Android 10 和 11)  | 
  
|---|---|
包含正常启动内核和 recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true)。recovery-ramdisk 仅用于启动到恢复模式。  | 
   包含正常启动内核和 recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true)。recovery-ramdisk 用于启动到恢复模式和 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
包含 $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)
    ...