Partitions de ramdisk

Dans Android 10 et 11, le ramdisk de première étape contient le binaire d'initialisation de première étape (qui effectue le montage anticipé 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 avec un ramdisk de démarrage (non-A/B), l'initialisation de première étape 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 ramdisk est libéré une fois le montage terminé.

  • Pour les appareils qui utilisent la récupération comme ramdisk, l'initialisation de première étape se trouve dans /init au sein du ramdisk de récupération. Ces appareils passent d'abord à la 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 ramdisk de démarrage (c'est-à-dire, monter system.img en tant que /system, changer de racine pour déplacer ce montage vers /, et libérer le contenu du ramdisk 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 (dans Android) au lieu de démarrer en mode de récupération.

Une fois l'initialisation de première étape terminée, elle exécute /system/bin/init avec l'argument selinux_setup pour compiler et charger SELinux sur le système. Enfin, l'initialisation exécute à nouveau /system/bin/init avec l'argument second_stage. À ce stade, la phase principale de l'initialisation s'exécute et poursuit le processus de démarrage à l'aide des scripts init.rc.

Les sections suivantes décrivent les différences dans les mises en page des partitions pour les appareils non-A/B avant et après Android 10.

Mises en page des partitions (appareils non-A/B)

Les sections suivantes décrivent les différences dans les mises en page des partitions pour les appareils non-A/B avant et après Android 10.

boot.img

Ramdisk
(Android 8.x et versions antérieures)
Système en tant que racine
(Android 9)
Ramdisk
(Android 10 and 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)
    ...
    

recovery.img

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

system.img

Ramdisk
(Android 8.x et versions antérieures)
Système en tant que racine
(Android 9)
Ramdisk
(Android 10 and 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 des partitions (appareils A/B)

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

boot.img

Système en tant que racine
(Android 9)
Ramdisk
(Android 10 and 11)
Contient le noyau de démarrage normal et le ramdisk de récupération (BOARD_USES_RECOVERY_AS_BOOT := true).

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

Le ramdisk de récupération est utilisé pour démarrer en mode de récupération et dans 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)
    ...