Partições de Ramdisk

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 montam system.img como /system e realizam uma operação de troca de raiz para mover a montagem 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. Esses dispositivos primeiro mudam a raiz para /first_stage_ramdisk para remover os componentes de recuperação do ambiente, e depois seguem o mesmo processo dos dispositivos com um ramdisk de inicialização (ou seja, ativam system.img como /system, mudam a raiz para mover essa ativação para / e liberam o conteúdo do ramdisk após a ativação). Se androidboot.force_normal_boot=1 estiver 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.

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

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