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 boot-ramdisk (non A/B), l'inizializzazione di primo livello è un programma eseguibile statico situato in /init. Questi dispositivi montano system.img come /system, quindi eseguono un'operazione di scambio della radice per spostare il montaggio da /system a /. 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'inizializzazione della prima fase, viene eseguito /system/bin/init con l'argomento selinux_setup per compilare e caricare SELinux sul sistema. Infine, init esegue di nuovo /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 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 utente 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 normale kernel di avvio.

Contiene un kernel e ramdisk.img.

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

recovery.img

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

system.img

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

Contiene un 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 il kernel di avvio normale e il recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk viene utilizzato solo per avviare il sistema in modalità di ripristino.
Contiene il kernel di avvio normale e recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk viene utilizzato per avviare sia il recupero che 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)
    ...