Ramdisk-Partitionen

In Android 10 und 11 enthält die Ramdisk der ersten Phase die Init-Binärdatei der ersten Phase (die das frühe Mounten gemäß den fstab-Einträgen ausführt) und die fstab-Dateien des Anbieters. 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 die erste Phase von „init“ eine statische ausführbare Datei unter /init. Bei diesen Geräten wird system.img als /system bereitgestellt. Anschließend wird ein Switch-Root-Vorgang ausgeführt, um die Bereitstellung von /system nach / zu verschieben. Der Inhalt der Ramdisk wird nach dem Mounten freigegeben.

  • Bei Geräten, bei denen die Wiederherstellung als Ramdisk verwendet wird, befindet sich die erste Phase von „init“ unter /init in der Wiederherstellungs-Ramdisk. Diese Geräte wechseln zuerst den Root zu /first_stage_ramdisk, um die Wiederherstellungskomponenten aus der Umgebung zu entfernen. Anschließend wird wie bei Geräten mit einer Boot-Ramdisk vorgegangen: system.img wird als /system bereitgestellt, der Root wird gewechselt, um die Bereitstellung zu / zu verschieben, und die Ramdisk-Inhalte werden nach der Bereitstellung freigegeben. Wenn androidboot.force_normal_boot=1 in der Kernel-Befehlszeile (oder in der Bootkonfiguration ab Android 12) vorhanden ist, werden Geräte normal (in Android) statt im Wiederherstellungsmodus gestartet.

Nachdem die Initialisierung der ersten Phase abgeschlossen ist, wird /system/bin/init mit dem Argument selinux_setup ausgeführt, um SELinux zu kompilieren und in das System zu laden. Schließlich wird /system/bin/init mit dem Argument second_stage noch einmal ausgeführt. An diesem Punkt wird die Hauptphase von init ausgeführt und der Bootvorgang mit den init.rc-Skripts fortgesetzt.

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

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

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

boot.img

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

Enthält einen Kernel und ein 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 ein system.img.

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

Enthält die zusammengeführten Inhalte 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 die zusammengeführten Inhalte 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 bei den Partitionslayouts für A/B-Geräte vor und nach Android 10 beschrieben.

boot.img

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

Die Recovery-Ramdisk wird nur zum Booten in den Wiederherstellungsmodus verwendet.
Enthält den normalen Boot-Kernel und die Recovery-Ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Die Recovery-Ramdisk wird verwendet, um sowohl in den Recovery-Modus als auch in Android zu booten.
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 die zusammengeführten Inhalte 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)
    ...