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 montansystem.imgcomo/systemy, luego, realizan una operación de cambio de raíz para mover el montaje en/systema/. 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
/initdentro del disco RAM de recuperación. Primero, estos dispositivos cambian la raíz a/first_stage_ramdiskpara 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, montansystem.imgcomo/system, cambian la raíz para mover ese montaje a/y liberan el contenido del ramdisk después del montaje). Siandroidboot.force_normal_boot=1está 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
-/
- 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
-/
- 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
-/
- bin/
- etc
- vendor -> /vendor
- ...
|
Contiene el contenido combinado de
system.img
-/
- init.rc
- init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...
|
Contiene el contenido combinado de
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)
...