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 montansystem.imgcomo/system, luego realizan una operación de cambio de raíz para mover el montaje en/systema/. 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
/initdentro del ramdisk de recuperación. Estos dispositivos primero cambian la raíz a/first_stage_ramdiskpara eliminar los componentes de recuperación del entorno, luego proceden 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 contenido libre del ramdisk después del montaje). Siandroidboot.force_normal_boot=1está 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
-/
- 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)
...
|
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
-/
- bin/
- etc
- vendor -> /vendor
- ...
| Contiene los contenidos combinados de
system.img
-/
- init.rc
- init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...
| Contiene los contenidos combinados 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 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)
...