No Android 10 e 11, o ramdisk do primeiro estágio contém o binário init do primeiro estágio (que executa a montagem antecipada conforme especificado pelas entradas fstab) e os arquivos fstab do fornecedor. (Assim como no Android 9 e inferior, system.img contém o conteúdo de $TARGET_ROOT_OUT .)
Para dispositivos com um disco de inicialização (não A/B), o primeiro estágio init é um executável estático localizado em
/init. Esses dispositivos montamsystem.imgcomo/systeme, em seguida, executam uma operação switch root para mover a montagem em/systempara/. O conteúdo do ramdisk é liberado após a conclusão da montagem.Para dispositivos que usam a recuperação como um ramdisk, o init do primeiro estágio está localizado em
/initdentro do ramdisk de recuperação. Esses dispositivos primeiro alternam o root para/first_stage_ramdiskpara remover os componentes de recuperação do ambiente e, em seguida, procedem da mesma forma que os dispositivos com um boot-ramdisk (ou seja, montesystem.imgcomo/system, alterne o root para mover essa montagem para/e conteúdo do disco ram livre após a montagem). Seandroidboot.force_normal_boot=1estiver presente na linha de comando do kernel (ou bootconfig do Android 12 em diante), os dispositivos inicializarão normalmente (no Android) em vez de inicializar no modo de recuperação.
Após o término do primeiro estágio, ele executa /system/bin/init com o argumento selinux_setup para compilar e carregar o SELinux no sistema. Finalmente, init executa /system/bin/init novamente com o argumento second_stage . Neste ponto, a fase principal do init é executada e continua o processo de inicialização usando os scripts init.rc
As seções a seguir detalham as diferenças nos layouts de partição para dispositivos não A/B antes e depois do Android 10.
Layouts de partição (dispositivos não A/B)
As seções a seguir detalham as diferenças nos layouts de partição para dispositivos não A/B antes e depois do Android 10.
boot.img
| Ramdisk (Android 8.xe inferior) | Sistema como raiz (Android 9) | Ramdisk (Android 10 e 11) |
|---|---|---|
Contém um kernel e um
ramdisk.img
-/
- init.rc
- init
- etc -> /system/etc
- system/ (mount point)
- vendor/ (mount point)
- odm/ (mount point)
...
| Contém apenas um kernel de inicialização normal. | Contém um kernel e
ramdisk.img
-/
- init
- vendor fstab files
- system/ (mount point)
- vendor/ (mount point)
- odm/ (mount point)
...
|
recuperação.img
Contém um kernel de recuperação e um ramdisk.img de recuperação
system.img
| Ramdisk (Android 8.xe inferior) | Sistema como raiz (Android 9) | Ramdisk (Android 10 e 11) |
|---|---|---|
Contém um
system.img
-/
- bin/
- etc
- vendor -> /vendor
- ...
| Contém o conteúdo mesclado de
system.img
-/
- init.rc
- init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...
| Contém o conteúdo mesclado de
system.img
-/
- init.rc
- init -> /system/bin/init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...
|
Layouts de partição (dispositivos A/B)
As seções a seguir detalham as diferenças nos layouts de partição para dispositivos A/B antes e depois do Android 10.
boot.img
| Sistema como raiz (Android 9) | Ramdisk (Android 10 e 11) |
|---|---|
Contém kernel de inicialização normal e disco de recuperação de memória ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk é usado apenas para inicializar na recuperação. | Contém kernel de inicialização normal e disco de recuperação de memória ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk é usado para inicializar tanto na recuperação quanto no 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
Contém o conteúdo mesclado de $TARGET_SYSTEM_OUT e $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)
...