Partitions Ramdisk

Dans Android 10 et 11, le ramdisk de la première étape contient le binaire d'initialisation de la première étape (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 boot-ramdisk (non-A/B), l'initialisation de la première étape est un exécutable statique situé dans /init. Ces appareils installent system.img en tant que /system, puis effectuent une opération racine de commutateur pour déplacer l'installation de /system vers /. Le contenu du disque RAM est libéré une fois l'installation terminée.

  • Pour les appareils qui utilisent la récupération en tant que ramdisk, l'initialisation de la première étape se trouve dans /init dans le ramdisk de récupération. Ces appareils passent d'abord en racine /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 avec un boot-ramdisk (c'est-à-dire qu'ils installent system.img en tant que /system, passent en racine pour déplacer cette installation vers / et libèrent le contenu du ramdisk après l'installation). Si androidboot.force_normal_boot=1 est présent dans la ligne de commande du kernel (ou dans bootconfig à partir d'Android 12), les appareils démarrent normalement (dans Android) au lieu de démarrer en mode récupération.

Une fois l'initialisation de la première étape terminée, /system/bin/init s'exécute 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 de mise en page des partitions pour les appareils autres qu'A/B avant et après Android 10.

Mises en page de partition (appareils autres qu'A/B)

Les sections suivantes détaillent les différences de mise en page des partitions pour les appareils autres qu'A/B avant et après Android 10.

boot.img

Ramdisk
(Android 8.x et versions antérieures)
Système en tant que root
(Android 9)
Ramdisk
(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)
    ...
    
Ne contient qu'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)
    ...
    

recovery.img

Contient un noyau de récupération et un ramdisk.img de récupération

system.img

Ramdisk
(Android 8.x ou version antérieure)
Système en tant que root
(Android 9)
Ramdisk
(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)
    ...
    

Mises en page de partitionnement (appareils A/B)

Les sections suivantes détaillent les différences de mise en page des partitions pour les appareils A/B avant et après Android 10.

boot.img

Système en tant que root
(Android 9)
Ramdisk
(Android 10 et 11)
Contient le noyau de démarrage normal et le recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk n'est utilisé que pour démarrer en mode récupération.
Contient le noyau de démarrage normal et le recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk permet de démarrer en mode 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)
    ...
    

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