No Android 10 e 11, o ramdisk da primeira etapa contém o binário init da primeira etapa (que realiza a montagem inicial conforme especificado pelas entradas fstab) e os arquivos fstab do fornecedor. (Como no Android 9 e versões anteriores,
system.img contém o conteúdo de $TARGET_ROOT_OUT.)
Para dispositivos com um ramdisk de inicialização (não A/B), a init da primeira etapa é um executável estático localizado em
/init. Esses dispositivos montamsystem.imgcomo/systeme realizam uma operação de troca de raiz 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, a inicialização da primeira etapa está localizada em
/initno ramdisk de recuperação. Esses dispositivos primeiro mudam a raiz para/first_stage_ramdiskpara remover os componentes de recuperação do ambiente, e depois seguem o mesmo processo dos dispositivos com um ramdisk de inicialização (ou seja, ativamsystem.imgcomo/system, mudam a raiz para mover essa ativação para/e liberam o conteúdo do ramdisk após a ativação). Seandroidboot.force_normal_boot=1estiver presente na linha de comando do kernel (ou bootconfig do Android 12 e versões mais recentes), os dispositivos vão inicializar normalmente (no Android) em vez de inicializar no modo de recuperação.
Depois que a inicialização da primeira etapa termina, ela executa /system/bin/init com o argumento selinux_setup para compilar e carregar o SELinux no sistema. Por fim, init executa /system/bin/init novamente com o argumento second_stage. Nesse
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.x e versões anteriores) |
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)
...
|
recovery.img
Contém um kernel de recuperação e uma ramdisk.img de recuperação.
system.img
| Ramdisk (Android 8.x e versões anteriores) |
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 o kernel de inicialização normal e o ramdisk de recuperação
(BOARD_USES_RECOVERY_AS_BOOT := true).O ramdisk de recuperação é usado apenas para inicializar a recuperação. |
Contém o kernel de inicialização normal e o recovery-ramdisk
(BOARD_USES_RECOVERY_AS_BOOT := true). O recovery-ramdisk é usado para inicializar a recuperação e o 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)
...