Partições de disco Ram

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. (Como no Android 9 e inferior, system.img contém o conteúdo de $TARGET_ROOT_OUT .)

  • Para dispositivos com boot-ramdisk (não-A/B), o primeiro estágio init é um executável estático localizado em /init . Esses dispositivos montam system.img como /system , então executam uma operação de switch root 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, o primeiro estágio init está localizado em /init dentro do ramdisk de recuperação. Esses dispositivos primeiro alternam o root para /first_stage_ramdisk para remover os componentes de recuperação do ambiente e, em seguida, procedem da mesma forma que os dispositivos com um boot-ramdisk (ou seja, montam system.img como /system , alternam o root para mover essa montagem para / e conteúdo ramdisk livre 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 inicializarão normalmente (no Android) em vez de inicializar no modo de recuperação.

Depois que o init do primeiro estágio termina, 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 . 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

disco RAM
(Android 8.xe inferior)
Sistema como root
(Android 9)
disco RAM
(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

disco RAM
(Android 8.xe inferior)
Sistema como root
(Android 9)
disco RAM
(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 root
(Android 9)
disco RAM
(Android 10 e 11)
Contém kernel de inicialização normal e disco RAM de recuperação ( BOARD_USES_RECOVERY_AS_BOOT := true ).

Recovery-ramdisk é usado apenas para inicializar na recuperação.
Contém kernel de inicialização normal e disco RAM de recuperação ( 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)
    ...