Particiones de Ramdisk

En Android 10 y 11, el disco RAM de la primera etapa contiene el objeto binario init de la primera etapa (que realiza la activación anticipada según lo especificado por las entradas de fstab) y los archivos fstab del proveedor. (Al igual que en Android 9 y versiones anteriores, system.img contiene el contenido de $TARGET_ROOT_OUT).

  • En el caso de los dispositivos con un disco RAM de arranque (no A/B), init de la primera etapa es un ejecutable estático ubicado en /init. Estos dispositivos montan system.img como /system y, luego, realizan una operación de cambio de raíz para mover el montaje en /system a /. El contenido del disco RAM se libera después de que se completa el montaje.

  • En el caso de los dispositivos que usan la recuperación como un disco RAM, el proceso init de la primera etapa se encuentra en /init dentro del disco RAM de recuperación. Primero, estos dispositivos cambian la raíz a /first_stage_ramdisk para quitar los componentes de recuperación del entorno y, luego, continúan de la misma manera que los dispositivos con un ramdisk de arranque (es decir, montan system.img como /system, cambian la raíz para mover ese montaje a / y liberan el contenido del ramdisk después del montaje). Si androidboot.force_normal_boot=1 está presente en la línea de comandos del kernel (o en bootconfig a partir de Android 12), los dispositivos se inician normalmente (en Android) en lugar de iniciarse en el modo de recuperación.

Después de que finaliza la inicialización de la primera etapa, se ejecuta /system/bin/init con el argumento selinux_setup para compilar y cargar SELinux en el sistema. Por último, init vuelve a ejecutar /system/bin/init con el argumento second_stage. En este punto, se ejecuta la fase principal de init y se continúa el proceso de arranque con las secuencias de comandos init.rc.

En las siguientes secciones, se detallan las diferencias en los diseños de particiones para dispositivos que no son A/B antes y después de Android 10.

Diseños de partición (dispositivos que no son A/B)

En las siguientes secciones, se detallan las diferencias en los diseños de particiones para dispositivos que no son A/B antes y después de Android 10.

boot.img

Ramdisk
(Android 8.x y versiones anteriores)
Sistema como raíz
(Android 9)
Ramdisk
(Android 10 y 11)

Contiene un kernel y un ramdisk.img.

ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    
Contiene solo un kernel de arranque normal.

Contiene un kernel y ramdisk.img.

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

recovery.img

Contiene un kernel de recuperación y un ramdisk.img de recuperación.

system.img

Ramdisk
(Android 8.x y versiones anteriores)
Sistema como raíz
(Android 9)
Ramdisk
(Android 10 y 11)

Contiene un system.img.

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

Contiene el contenido combinado de $TARGET_SYSTEM_OUT y $TARGET_ROOT_OUT.

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

Contiene el contenido combinado de $TARGET_SYSTEM_OUT y $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)
    ...
    

Diseños de partición (dispositivos A/B)

En las siguientes secciones, se detallan las diferencias en los diseños de particiones para dispositivos A/B antes y después de Android 10.

boot.img

Sistema como raíz
(Android 9)
Ramdisk
(Android 10 y 11)
Contiene el kernel de arranque normal y el ramdisk de recuperación (BOARD_USES_RECOVERY_AS_BOOT := true).

El ramdisk de recuperación solo se usa para arrancar en el modo de recuperación.
Contiene el kernel de arranque normal y el ramdisk de recuperación (BOARD_USES_RECOVERY_AS_BOOT := true). El

ramdisk de recuperación se usa para arrancar tanto en la recuperación como en 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

Contiene el contenido combinado de $TARGET_SYSTEM_OUT y $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)
    ...