Partizioni Ramdisk

In Android 10 e 11, la 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 i contenuti di $TARGET_ROOT_OUT.

  • Per i dispositivi con un disco di avvio (non A/B), l'init della prima fase è un file eseguibile statico situato all'indirizzo /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 recovery come ramdisk, l'inizializzazione della prima fase si trova in/init all'interno del ramdisk di ripristino. Questi dispositivi passano prima al ruolo di utente root su /first_stage_ramdisk per rimuovere i componenti di ripristino dall'ambiente, quindi procedono come i dispositivi con un boot-ramdisk (ovvero montano system.img come /system, passano al ruolo di utente root per spostare il montaggio su / e liberano i contenuti del ramdisk dopo il montaggio). Se androidboot.force_normal_boot=1 è presente nella riga di comando del kernel (o in bootconfig da Android 12 in poi), i dispositivi si avviano normalmente (in Android) anziché in modalità di ripristino.

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 nuovamente /system/bin/init con l'argomento second_stage. A questo punto, viene eseguita la fase principale di init e il processo di avvio continua 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 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 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 delle partizioni (dispositivi A/B)

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

boot.img

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

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