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/system, em seguida, realizam uma operação de raiz de troca 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 init da primeira etapa está localizada em
/initno ramdisk de recuperação. Esses dispositivos primeiro trocam a raiz para/first_stage_ramdiskpara remover os componentes de recuperação do ambiente, em seguida, seguem da mesma forma que os dispositivos com um ramdisk de inicialização (ou seja, montamsystem.imgcomo/system, trocam a raiz para mover essa montagem para/, e liberam o conteúdo do ramdisk após a montagem). Seandroidboot.force_normal_boot=1estiver presente na linha de comando do kernel (ou bootconfig do Android 12 e versões mais recentes), os dispositivos serão inicializados normalmente (no Android) em vez de serem inicializados no modo de recuperação.
Depois que a init da primeira etapa termina, ela executa /system/bin/init com o argumento selinux_setup para compilar e carregar o SELinux no sistema. Por fim, a init executa /system/bin/init novamente com o argumento second_stage. Nesse ponto, a fase principal da 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 and 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 um ramdisk.img de recuperação.
system.img
| Ramdisk (Android 8.x e versões anteriores) |
Sistema como raiz (Android 9) |
Ramdisk (Android 10 and 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 and 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 ramdisk de recuperação
(BOARD_USES_RECOVERY_AS_BOOT := true). O ramdisk de recuperação é 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)
...