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 montansystem.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, montansystem.img
como/system
, cambian la raíz para mover ese montaje a/
y contenido libre del disco ram después del montaje). Siandroidboot.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 -/ - 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 -/ - 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 -/ - 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)
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)
...