En Android 10 y 11, el disco RAM de la primera etapa contiene el objeto binario init de la primera etapa (que realiza el acceso anticipado como lo especifican 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 boot-ramdisk (no A/B), el inicio de la primera etapa es un ejecutable estático ubicado en
/init
. Estos dispositivos activansystem.img
como/system
y, luego, realizan una operación de raíz de interruptor para mover el activador en/system
a/
. El contenido del ramdisk se libera una vez que se completa la activación.En el caso de los dispositivos que usan la recuperación como un disco RAM, el inicio de la primera etapa se encuentra en
/init
dentro del disco RAM de recuperación. Estos dispositivos primero cambian el permiso de administrador a/first_stage_ramdisk
para quitar los componentes de recuperación del entorno y, luego, proceden de la misma manera que los dispositivos con un boot-ramdisk (es decir, activansystem.img
como/system
, cambian el permiso de administrador para mover ese activador a/
y liberan el contenido de ramdisk después de activarlo). Siandroidboot.force_normal_boot=1
está 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 inicio 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 particiones (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 inicio 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 particiones (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 root (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 iniciar el modo de recuperación. |
Contiene el kernel de inicio normal y el disco de ramificación de recuperación (BOARD_USES_RECOVERY_AS_BOOT := true ). El ramdisk de recuperación se usa para iniciar en los dispositivos Android y de recuperación. 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)
...