Particiones ramdisk

En Android 10 y 11, el ramdisk de la primera etapa contiene el binario de inicio de la primera etapa (que realiza el montaje inicial según lo especificado por las entradas 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 ).

  • Para dispositivos con un ramdisk de arranque (no A/B), la primera etapa init es un ejecutable estático ubicado en /init . Estos dispositivos montan system.img como /system , luego realizan una operación de cambio de raíz para mover el montaje en /system a / . El contenido del ramdisk se libera una vez finalizado el montaje.

  • Para los dispositivos que utilizan la recuperación como ramdisk, la primera etapa init se encuentra en /init dentro del ramdisk de recuperación. Estos dispositivos primero cambian la raíz a /first_stage_ramdisk para eliminar los componentes de recuperación del entorno, 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 contenido libre del ramdisk después del montaje). Si androidboot.force_normal_boot=1 está presente en la línea de comando del kernel (o bootconfig desde Android 12 en adelante), los dispositivos se inician normalmente (en Android) en lugar de iniciarse en modo de recuperación.

Después de que finaliza el inicio de la primera etapa, ejecuta /system/bin/init con el argumento selinux_setup para compilar y cargar SELinux en el sistema. Finalmente, init ejecuta /system/bin/init nuevamente con el argumento second_stage . En este punto, la fase principal de init se ejecuta y continúa el proceso de arranque utilizando los scripts init.rc

Las siguientes secciones detallan las diferencias en los diseños de partición para dispositivos que no son A/B antes y después de Android 10.

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

Las siguientes secciones detallan las diferencias en los diseños de partición 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 root
(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)
    ...
    

recuperación.img

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

sistema.img

ramdisk
(Android 8.x y versiones anteriores)
Sistema como root
(Android 9)
ramdisk
(Android 10 y 11)

Contiene un system.img .

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

Contiene los contenidos combinados 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 los contenidos combinados 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)

Las siguientes secciones detallan las diferencias en los diseños de partición para dispositivos A/B antes y después de Android 10.

boot.img

Sistema como root
(Android 9)
ramdisk
(Android 10 y 11)
Contiene un kernel de arranque normal y un ramdisk de recuperación ( BOARD_USES_RECOVERY_AS_BOOT := true ).

Recovery-ramdisk se usa solo para iniciar la recuperación.
Contiene un kernel de arranque normal y un ramdisk de recuperación ( BOARD_USES_RECOVERY_AS_BOOT := true ).

Recovery-ramdisk se usa para iniciar 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)
    ...
    

sistema.img

Contiene los contenidos combinados 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)
    ...