Partitions de disque virtuel

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 montent system.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, montez system.img en tant que /system , changez de racine pour déplacer ce montage vers / , et contenu libre du disque virtuel après le montage). Si androidboot.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 .

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 .

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 .

system.img
  -/
    - bin/
    - etc
    - vendor -> /vendor
    - ...
   

Contient le contenu fusionné de $TARGET_SYSTEM_OUT et $TARGET_ROOT_OUT .

system.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/
      - bin/
      - etc/
      - vendor -> /vendor
      - ...
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

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)
    ...
    

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)
    ...