Ramdisk partitions

In Android 10 and 11, the first stage ramdisk contains the first stage init binary (which performs early mounting as specified by fstab entries) and vendor fstab files. (As in Android 9 and lower, system.img contains the contents of $TARGET_ROOT_OUT.)

  • For devices with a boot-ramdisk (non-A/B), first stage init is a static executable located at /init. These devices mount system.img as /system, then perform a switch root operation to move the mount at /system to /. The contents of the ramdisk are freed after mounting has completed.

  • For devices that use recovery as a ramdisk, first stage init is located at /init within the recovery ramdisk. These devices first switch root to /first_stage_ramdisk to remove the recovery components from the environment, then proceed the same as devices with a boot-ramdisk (that is, mount system.img as /system, switch root to move that mount to /, and free ramdisk contents after mounting). If androidboot.force_normal_boot=1 is present in the kernel command line (or bootconfig from Android 12 onward), devices boot normally (into Android) instead of booting into recovery mode.

After first stage init finishes, it executes /system/bin/init with the selinux_setup argument to compile and load SELinux onto the system. Finally, init executes /system/bin/init again with the second_stage argument. At this point, the main phase of init runs and continues the boot process using the init.rc scripts.

The following sections detail differences in partition layouts for non-A/B devices before and after Android 10.

Partition layouts (non-A/B devices)

The following sections detail differences in partition layouts for non-A/B devices before and after Android 10.

boot.img

Ramdisk
(Android 8.x and lower)
System as root
(Android 9)
Ramdisk
(Android 10 and 11)

Contains a kernel and a ramdisk.img.

ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    
Contains a normal boot kernel only.

Contains a kernel and ramdisk.img.

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

recovery.img

Contains a recovery kernel and a recovery ramdisk.img

system.img

Ramdisk
(Android 8.x and lower)
System as root
(Android 9)
Ramdisk
(Android 10 and 11)

Contains a system.img.

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

Contains the merged contents of $TARGET_SYSTEM_OUT and $TARGET_ROOT_OUT.

system.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/
      - bin/
      - etc/
      - vendor -> /vendor
      - ...
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

Contains the merged contents of $TARGET_SYSTEM_OUT and $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)
    ...
    

Partition layouts (A/B devices)

The following sections detail differences in partition layouts for A/B devices before and after Android 10.

boot.img

System as root
(Android 9)
Ramdisk
(Android 10 and 11)
Contains normal boot kernel and recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk is used only to boot into recovery.
Contains normal boot kernel and recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk is used to boot into both recovery and 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

Contains the merged contents of $TARGET_SYSTEM_OUT and $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)
    ...