Partizioni del disco ram

In Android 10 e 11, il ramdisk della prima fase contiene il file binario init della prima fase (che esegue il montaggio anticipato come specificato dalle voci fstab) e i file fstab del fornitore. (Come in Android 9 e versioni precedenti, system.img contiene il contenuto di $TARGET_ROOT_OUT .)

  • Per i dispositivi con un disco ram di avvio (non A/B), la prima fase init è un eseguibile statico situato in /init . Questi dispositivi montano system.img come /system , quindi eseguono un'operazione di switch root per spostare il montaggio da /system a / . Il contenuto del ramdisk viene liberato al termine del montaggio.

  • Per i dispositivi che utilizzano il ripristino come ramdisk, la prima fase init si trova in /init all'interno del ramdisk di ripristino. Questi dispositivi innanzitutto passano root a /first_stage_ramdisk per rimuovere i componenti di ripristino dall'ambiente, quindi procedono come i dispositivi con un boot-ramdisk (ovvero, monta system.img come /system , cambia root per spostare il montaggio su / e contenuto libero del ramdisk dopo il montaggio). Se androidboot.force_normal_boot=1 è presente nella riga di comando del kernel (o bootconfig da Android 12 in poi), i dispositivi si avviano normalmente (in Android) invece di avviarsi in modalità di ripristino.

Al termine della prima fase init, esegue /system/bin/init con l'argomento selinux_setup per compilare e caricare SELinux nel sistema. Infine, init esegue nuovamente /system/bin/init con l'argomento second_stage . A questo punto, viene eseguita la fase principale di init e continua il processo di avvio utilizzando gli script init.rc

Le sezioni seguenti descrivono in dettaglio le differenze nei layout delle partizioni per i dispositivi non A/B prima e dopo Android 10.

Layout delle partizioni (dispositivi non A/B)

Le sezioni seguenti descrivono in dettaglio le differenze nei layout delle partizioni per i dispositivi non A/B prima e dopo Android 10.

boot.img

Ramdisk
(Android 8.x e versioni precedenti)
Sistema come root
(Android 9)
Ramdisk
(Android 10 e 11)

Contiene un kernel e un ramdisk.img .

ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    
Contiene solo un kernel di avvio normale.

Contiene un kernel e ramdisk.img .

ramdisk.img
  -/
    - init
    - vendor fstab files
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

recupero.img

Contiene un kernel di ripristino e un ramdisk.img di ripristino

sistema.img

Ramdisk
(Android 8.x e versioni precedenti)
Sistema come root
(Android 9)
Ramdisk
(Android 10 e 11)

Contiene un system.img .

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

Contiene il contenuto unito di $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)
    ...
    

Contiene il contenuto unito di $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)
    ...
    

Layout delle partizioni (dispositivi A/B)

Le sezioni seguenti descrivono in dettaglio le differenze nei layout delle partizioni per i dispositivi A/B prima e dopo Android 10.

boot.img

Sistema come root
(Android 9)
Ramdisk
(Android 10 e 11)
Contiene il kernel di avvio normale e il ramdisk di ripristino ( BOARD_USES_RECOVERY_AS_BOOT := true ).

Recovery-ramdisk viene utilizzato solo per l'avvio in ripristino.
Contiene il kernel di avvio normale e il ramdisk di ripristino ( BOARD_USES_RECOVERY_AS_BOOT := true ).

Recovery-ramdisk viene utilizzato per l'avvio sia in ripristino che in 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)
    ...
    

sistema.img

Contiene il contenuto unito di $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)
    ...