Ramdisk 分区

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

在 Android 10 和 11 中,第一阶段 ramdisk 包含第一阶段 init 二进制文件(执行 fstab 条目指定的早期挂载)和供应商 fstab 文件。 (与 Android 9 及更低版本一样, system.img包含$TARGET_ROOT_OUT的内容。)

  • 对于具有引导内存盘(非 A/B)的设备,第一阶段 init 是位于/init的静态可执行文件。这些设备将system.img挂载为/system ,然后执行 switch root 操作以将/system上的挂载移动到/ 。挂载完成后,ramdisk 的内容将被释放。

  • 对于将恢复用作 ramdisk 的设备,第一阶段 init 位于恢复 ramdisk 内的/init 。这些设备首先将 root 切换到/first_stage_ramdisk以从环境中删除恢复组件,然后进行与具有 boot-ramdisk 的设备相同的操作(即将system.img挂载为/system ,切换 root 以将该挂载移动到/ ,然后安装后释放 ramdisk 内容)。如果内核命令行中存在androidboot.force_normal_boot=1 (或 Android 12 及更高版本的 bootconfig),则设备会正常启动(进入 Android),而不是启动到恢复模式。

第一阶段 init 完成后,它使用selinux_setup参数执行/system/bin/init以编译 SELinux 并将其加载到系统上。最后,init 使用second_stage参数再次执行/system/bin/init 。此时,init 的主要阶段运行并使用init.rc脚本继续引导过程。

以下部分详细介绍了 Android 10 前后非 A/B 设备的分区布局差异。

分区布局(非 A/B 设备)

以下部分详细介绍了 Android 10 前后非 A/B 设备的分区布局差异。

引导文件

内存盘
(Android 8.x 及更低版本)
系统作为根
(安卓 9)
内存盘
(安卓 10 和 11)

包含一个内核和一个ramdisk.img

ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    
仅包含一个正常的引导内核。

包含内核和ramdisk.img

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

恢复.img

包含一个恢复内核和一个恢复ramdisk.img

系统.img

内存盘
(Android 8.x 及更低版本)
系统作为根
(安卓 9)
内存盘
(安卓 10 和 11)

包含一个system.img

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

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

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

分区布局(A/B 设备)

以下部分详细介绍了 Android 10 前后 A/B 设备的分区布局差异。

引导文件

系统作为根
(安卓 9)
内存盘
(安卓 10 和 11)
包含正常启动内核和恢复内存盘( BOARD_USES_RECOVERY_AS_BOOT := true )。

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

系统.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)
    ...