Partições do ramdisk

No Android 10 e 11, o ramdisk da primeira etapa contém o binário de inicialização da primeira etapa (que realiza a montagem antecipada conforme especificado pelas entradas do fstab) e os arquivos do 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 inicialização de primeiro estágio é um executável estático localizado em /init. Esses dispositivos ativam system.img como /system e executam uma operação switch root para mover a ativação em /system para /. 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 /init no ramdisk de recuperação. Primeiro, esses dispositivos mudam de raiz para /first_stage_ramdisk para remover os componentes de recuperação do ambiente. Em seguida, eles continuam da mesma forma que os dispositivos com um ramdisk de inicialização, ou seja, montam system.img como /system, trocam a raiz para mover essa ativação para / e liberam o conteúdo do ramdisk após a montagem. Se androidboot.force_normal_boot=1 estiver presente na linha de comando do kernel (ou bootconfig do Android 12 em diante), os dispositivos serão inicializados normalmente (no Android) em vez de inicializar no modo de recuperação.

Depois que o init do primeiro estágio é concluído, ele executa /system/bin/init com o argumento selinux_setup para compilar e carregar o SELinux no sistema. Por fim, o init executa /system/bin/init novamente com o argumento second_stage. Nesse ponto, a fase principal da inicialização é executada e continua o processo de inicialização usando os scripts init.rc.

As seções abaixo 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 abaixo 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.

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.

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 e 11)

Contém um system.img.

system.img
  -/
    - bin/
    - etc
    - vendor -> /vendor
    - ...
   

Contém o conteúdo mesclado de $TARGET_SYSTEM_OUT e $TARGET_ROOT_OUT.

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 $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)
    ...
    

Layouts de partição (dispositivos A/B)

As seções abaixo 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 recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk é 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).

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)
    ...