Ramdisk-Partitionen

In Android 10 und 11 enthält die Ramdisk der ersten Stufe die Init-Binärdatei der ersten Stufe (die das frühe Mounten durchführt, wie durch fstab-Einträge angegeben) und fstab-Dateien des Herstellers. (Wie in Android 9 und niedriger enthält system.img den Inhalt von $TARGET_ROOT_OUT .)

  • Bei Geräten mit einer Boot-Ramdisk (nicht A/B) ist Init der ersten Stufe eine statische ausführbare Datei, die sich unter /init befindet. Diese Geräte mounten system.img als /system und führen dann einen Switch-Root-Vorgang durch, um den Mount bei /system nach / zu verschieben. Der Inhalt der Ramdisk wird nach Abschluss der Bereitstellung freigegeben.

  • Bei Geräten, die die Wiederherstellung als Ramdisk verwenden, befindet sich die erste Init-Stufe unter /init innerhalb der Wiederherstellungs-Ramdisk. Diese Geräte wechseln zunächst den Root zu /first_stage_ramdisk , um die Wiederherstellungskomponenten aus der Umgebung zu entfernen, und gehen dann genauso vor wie Geräte mit einer Boot-Ramdisk (d. h. mounten Sie system.img als /system , wechseln Sie den Root, um diesen Mount nach / zu verschieben, und freier Ramdisk-Inhalt nach dem Mounten). Wenn androidboot.force_normal_boot=1 in der Kernel-Befehlszeile (oder bootconfig ab Android 12) vorhanden ist, starten die Geräte normal (in Android), anstatt im Wiederherstellungsmodus zu starten.

Nach Abschluss der ersten Init-Phase wird /system/bin/init mit dem Argument selinux_setup ausgeführt, um SELinux zu kompilieren und auf das System zu laden. Schließlich führt init /system/bin/init erneut mit dem Argument second_stage aus. Zu diesem Zeitpunkt wird die Hauptphase von init ausgeführt und der Startvorgang mithilfe der init.rc Skripte fortgesetzt.

In den folgenden Abschnitten werden die Unterschiede in den Partitionslayouts für Nicht-A/B-Geräte vor und nach Android 10 detailliert beschrieben.

Partitionslayouts (Nicht-A/B-Geräte)

In den folgenden Abschnitten werden die Unterschiede in den Partitionslayouts für Nicht-A/B-Geräte vor und nach Android 10 detailliert beschrieben.

boot.img

Ramdisk
(Android 8.x und niedriger)
System als Root
(Android 9)
Ramdisk
(Android 10 und 11)

Enthält einen Kernel und eine ramdisk.img .

ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    
Enthält nur einen normalen Boot-Kernel.

Enthält einen Kernel und ramdisk.img .

ramdisk.img
  -/
    - init
    - vendor fstab files
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

Recovery.img

Enthält einen Wiederherstellungskernel und eine Wiederherstellungs ramdisk.img

system.img

Ramdisk
(Android 8.x und niedriger)
System als Root
(Android 9)
Ramdisk
(Android 10 und 11)

Enthält eine system.img .

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

Enthält den zusammengeführten Inhalt von $TARGET_SYSTEM_OUT und $TARGET_ROOT_OUT .

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

Enthält den zusammengeführten Inhalt von $TARGET_SYSTEM_OUT und $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)
    ...
    

Partitionslayouts (A/B-Geräte)

In den folgenden Abschnitten werden die Unterschiede in den Partitionslayouts für A/B-Geräte vor und nach Android 10 detailliert beschrieben.

boot.img

System als Root
(Android 9)
Ramdisk
(Android 10 und 11)
Enthält den normalen Boot-Kernel und die Wiederherstellungs-Ramdisk ( BOARD_USES_RECOVERY_AS_BOOT := true ).

Recovery-Ramdisk wird nur zum Starten der Wiederherstellung verwendet.
Enthält den normalen Boot-Kernel und die Wiederherstellungs-Ramdisk ( BOARD_USES_RECOVERY_AS_BOOT := true ).

Recovery-Ramdisk wird verwendet, um sowohl die Wiederherstellung als auch Android zu starten.
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

Enthält den zusammengeführten Inhalt von $TARGET_SYSTEM_OUT und $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)
    ...