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 i contenuti di $TARGET_ROOT_OUT.)
Per i dispositivi con un ramdisk di avvio (non A/B), init della prima fase è un eseguibile statico che si trova in
/init. Questi dispositivi montanosystem.imgcome/system, quindi eseguono un'operazione di root di commutazione per spostare il montaggio in/systemin/. I contenuti del ramdisk vengono liberati al termine del montaggio.Per i dispositivi che utilizzano il ripristino come ramdisk, init della prima fase si trova in
/initall'interno del ramdisk di ripristino. Questi dispositivi eseguono prima la root di commutazione in/first_stage_ramdiskper rimuovere i componenti di ripristino dall'ambiente, quindi procedono come i dispositivi con un ramdisk di avvio (ovvero montanosystem.imgcome/system, eseguono la root di commutazione per spostare il montaggio in/, e liberano i contenuti del ramdisk dopo il montaggio). Seandroidboot.force_normal_boot=1è presente nella riga di comando del kernel (o nella configurazione di avvio di Android 12 e versioni successive), i dispositivi si avviano normalmente (in Android) anziché in modalità di ripristino.
Al termine di init 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. 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 root (Android 9) |
Ramdisk (Android 10 and 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)
...
|
recovery.img
Contiene un kernel di ripristino e un ramdisk.img di ripristino
system.img
| Ramdisk (Android 8.x e versioni precedenti) |
Sistema come root (Android 9) |
Ramdisk (Android 10 and 11) |
|---|---|---|
Contiene un
system.img
-/
- bin/
- etc
- vendor -> /vendor
- ...
|
Contiene i contenuti uniti di
system.img
-/
- init.rc
- init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...
|
Contiene i contenuti uniti 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 and 11) |
|---|---|
Contiene il kernel di avvio normale e il ramdisk di ripristino
(BOARD_USES_RECOVERY_AS_BOOT := true).Il ramdisk di ripristino viene utilizzato solo per l'avvio in modalità di ripristino. |
Contiene il kernel di avvio normale e il ramdisk di ripristino
(BOARD_USES_RECOVERY_AS_BOOT := true). Il ramdisk di ripristino viene utilizzato per l'avvio sia in modalità di ripristino sia 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)
...
|
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)
...