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
incluye el contenido de $TARGET_ROOT_OUT
).
En el caso de los dispositivos con un boot-ramdisk (no A/B), el init de la primera etapa es un ejecutable 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 después de que se completa el montaje.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 la raíz a/first_stage_ramdisk
para quitar los componentes de recuperación del entorno. procede de la misma manera que con los dispositivos con un disco RAM de arranque (es decir,system.img
como/system
, cambia la raíz para mover ese soporte a/
y libera contenido del ramdisk después de la activación). Siandroidboot.force_normal_boot=1
es presente en la línea de comandos del kernel (o bootconfig de Android 12 en adelante), los dispositivos se inician normalmente (en Android) en lugar de iniciarlo 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
la fase principal de init se ejecuta y continúa el proceso de inicio mediante el
init.rc
.
En las siguientes secciones, se detallan las diferencias en los diseños de partición para dispositivos que no sean A/B dispositivos anteriores y posteriores a 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 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 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 un kernel de inicio normal y el recovery-ramdisk
(BOARD_USES_RECOVERY_AS_BOOT := true ).Disco RAM de recuperación. solo se usa para iniciarse en la recuperación. |
Contiene un kernel de inicio normal y el recovery-ramdisk
(BOARD_USES_RECOVERY_AS_BOOT := true ). Disco RAM de recuperación se usa para iniciarse en Android y en la 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)
...