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 montanosystem.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, montasystem.img
come/system
, cambia root per spostare il montaggio su/
e contenuto libero del ramdisk dopo il montaggio). Seandroidboot.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 -/ - 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 -/ - 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 -/ - bin/ - etc - vendor -> /vendor - ... | Contiene il contenuto unito di system.img -/ - init.rc - init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... | Contiene il contenuto unito di 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)
...