Particiones ramdisk

En Android 10 y 11, el disco RAM de la primera etapa contiene el binario de inicio de la primera etapa (que realiza el montaje temprano según lo especificado en 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 disco ram de arranque (no A/B), la primera etapa init 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 / . El contenido del disco ram se libera una vez completado el montaje.

  • Para los dispositivos que utilizan la recuperación como disco RAM, el inicio de la primera etapa se encuentra en /init dentro del disco RAM 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 disco ram de arranque (es decir, montan system.img como /system , cambian la raíz para mover ese montaje a / y contenido libre del disco ram 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 arrancan normalmente (en Android) en lugar de arrancar en modo de recuperación.

Una vez finalizada la primera etapa de inicio, 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, se ejecuta la fase principal de init 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 que no son 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.

arranque.img

disco ram
(Android 8.x y versiones anteriores)
Sistema como raíz
(Android 9)
disco ram
(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 únicamente 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.img

sistema.img

disco ram
(Android 8.x y versiones anteriores)
Sistema como raíz
(Android 9)
disco ram
(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)

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

arranque.img

Sistema como raíz
(Android 9)
disco ram
(Android 10 y 11)
Contiene un kernel de arranque normal y un disco ram 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 disco ram de recuperación ( BOARD_USES_RECOVERY_AS_BOOT := true ).

Recovery-ramdisk se utiliza para iniciar tanto en Recovery 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 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)
    ...