Partizioni Ramdisk

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

  • Per i dispositivi con un disco di avvio (non A/B), l'init della prima fase è un eseguibile posizionato all'indirizzo /init. Questi dispositivi montano system.img come /system, quindi esegui un'operazione di cambio root per spostare il montaggio in /system in /. I contenuti del ramdisk vengono liberati al termine del montaggio.

  • Per i dispositivi che utilizzano il ripristino come ramdisk, l'init della prima fase si trova nella /init all'interno del ramdisk di ripristino. Questi dispositivi eseguono prima il passaggio alla root /first_stage_ramdisk per rimuovere i componenti di ripristino dall'ambiente, procedi allo stesso modo dei dispositivi con un boot-ramdisk (ossia, system.img come /system, cambia root per spostare il supporto in / e libera contenuti del ramdisk dopo il montaggio). Se androidboot.force_normal_boot=1 è presenti nella riga di comando del kernel (o bootconfig da Android Dalla versione 12 in poi), i dispositivi si avviano normalmente (in Android) anziché avviare la modalità Recovery.

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

Le seguenti sezioni descrivono in dettaglio le differenze nei layout di partizione per le unità non A/B prima e dopo Android 10.

Layout di partizione (dispositivi non A/B)

Le seguenti sezioni descrivono in dettaglio le differenze nei layout di partizione per le unità 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)
    ...
    

ripristino.img

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

system.img

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

Contiene un valore system.img.

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

Contiene i contenuti uniti 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 i contenuti uniti 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 di partizione (dispositivi A/B)

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

boot.img

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

Rramdisk di ripristino è usato solo per avviare il ripristino.
Contiene un kernel di avvio normale e un ramdisk di ripristino (BOARD_USES_RECOVERY_AS_BOOT := true).

ramdisk di ripristino sia per il ripristino che per 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

Contiene i contenuti uniti 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)
    ...