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 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, proceden 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 desde Android 12 y versiones posteriores), 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 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)
    ...