Sous Android 10 et 11, le disque virtuel de premier étage contient le binaire d'initialisation de premier étage (qui effectue un montage anticipé comme spécifié par les entrées fstab) et les fichiers fstab du fournisseur. (Comme dans Android 9 et versions antérieures, system.img
contient le contenu de $TARGET_ROOT_OUT
.)
Pour les appareils dotés d'un disque virtuel de démarrage (non-A/B), la première étape init est un exécutable statique situé dans
/init
. Ces appareils montentsystem.img
en tant que/system
, puis effectuent une opération de changement de racine pour déplacer le montage de/system
vers/
. Le contenu du disque virtuel est libéré une fois le montage terminé.Pour les appareils qui utilisent la récupération comme disque virtuel, la première étape d'initialisation est située dans
/init
dans le disque virtuel de récupération. Ces appareils basculent d'abord de la racine sur/first_stage_ramdisk
pour supprimer les composants de récupération de l'environnement, puis procèdent de la même manière que les appareils dotés d'un disque virtuel de démarrage (c'est-à-dire, montezsystem.img
en tant que/system
, changez de racine pour déplacer ce montage vers/
, et contenu libre du disque virtuel après le montage). Siandroidboot.force_normal_boot=1
est présent dans la ligne de commande du noyau (ou bootconfig à partir d'Android 12), les appareils démarrent normalement (sous Android) au lieu de démarrer en mode de récupération.
Une fois la première étape d'initialisation terminée, il exécute /system/bin/init
avec l'argument selinux_setup
pour compiler et charger SELinux sur le système. Enfin, init exécute à nouveau /system/bin/init
avec l'argument second_stage
. À ce stade, la phase principale d'init s'exécute et poursuit le processus de démarrage à l'aide des scripts init.rc
Les sections suivantes détaillent les différences dans la disposition des partitions pour les appareils non-A/B avant et après Android 10.
Dispositions des partitions (périphériques non-A/B)
Les sections suivantes détaillent les différences dans la disposition des partitions pour les appareils non-A/B avant et après Android 10.
démarrage.img
Disque RAM (Android 8.x et versions antérieures) | Système en tant que root (Androïde 9) | Disque RAM (Android 10 et 11) |
---|---|---|
Contient un noyau et un ramdisk.img -/ - init.rc - init - etc -> /system/etc - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... | Contient uniquement un noyau de démarrage normal. | Contient un noyau et ramdisk.img -/ - init - vendor fstab files - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
récupération.img
Contient un noyau de récupération et un ramdisk.img
de récupération
système.img
Disque RAM (Android 8.x et versions antérieures) | Système en tant que root (Androïde 9) | Disque RAM (Android 10 et 11) |
---|---|---|
Contient un system.img -/ - bin/ - etc - vendor -> /vendor - ... | Contient le contenu fusionné de system.img -/ - init.rc - init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... | Contient le contenu fusionné de system.img -/ - init.rc - init -> /system/bin/init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... |
Dispositions des partitions (périphériques A/B)
Les sections suivantes détaillent les différences dans la disposition des partitions pour les appareils A/B avant et après Android 10.
démarrage.img
Système en tant que root (Androïde 9) | Disque RAM (Android 10 et 11) |
---|---|
Contient le noyau de démarrage normal et le disque virtuel de récupération ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk est utilisé uniquement pour démarrer la récupération. | Contient le noyau de démarrage normal et le disque virtuel de récupération ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk est utilisé pour démarrer à la fois la récupération et 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) ... |
système.img
Contient le contenu fusionné de $TARGET_SYSTEM_OUT
et $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)
...