Ramdisk-Partitionen

Unter Android 10 und 11 enthält die Ramdisk der ersten Phase die Binärdatei der ersten Phase (die die frühe Bereitstellung gemäß den fstab-Einträgen ausführt) und die fstab-Dateien des Anbieters. Wie bei Android 9 und niedriger enthält system.img die Inhalte von $TARGET_ROOT_OUT.

  • Bei Geräten mit einer Boot-Ramdisk (nicht A/B) ist die Init-Datei der ersten Phase eine statische ausführbare Datei unter /init. Auf diesen Geräten wird system.img als /system bereitgestellt, dann wird ein Root-Switch-Vorgang ausgeführt, um die Bereitstellung unter /system nach / zu verschieben. Die Inhalte der Ramdisk werden freigegeben, nachdem die Bereitstellung abgeschlossen ist.

  • Bei Geräten, die die Wiederherstellung als Ramdisk verwenden, befindet sich die Init-Datei der ersten Phase unter /init in der Wiederherstellungs-Ramdisk. Auf diesen Geräten wird zuerst der Root-Switch zu /first_stage_ramdisk ausgeführt, um die Wiederherstellungskomponenten aus der Umgebung zu entfernen. Anschließend wird wie bei Geräten mit einer Boot-Ramdisk vorgegangen (d. h. system.img wird als /system bereitgestellt, der Root-Switch wird ausgeführt, um die Bereitstellung nach / zu verschieben, und die Ramdisk-Inhalte werden nach der Bereitstellung freigegeben). Wenn androidboot.force_normal_boot=1 in der Kernel-Befehlszeile (oder in der Boot-Konfiguration ab Android 12) vorhanden ist, werden Geräte normal (in Android) anstatt im Wiederherstellungsmodus gestartet.

Nachdem die Init-Datei 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 noch einmal mit dem Argument second_stage ausgeführt. An diesem Punkt wird die Hauptphase der Init-Datei ausgeführt und der Startvorgang mit den init.rc-Skripten fortgesetzt.

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

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

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

boot.img

Ramdisk
(Android 8.x und niedriger)
System als Root
(Android 9)
Ramdisk
(Android 10 and 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 Wiederherstellungs-Kernel und eine Wiederherstellungs-ramdisk.img.

system.img

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

Enthält eine 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 and 11)
Enthält einen normalen Boot-Kernel und eine Wiederherstellungs-Ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Die Wiederherstellungs-Ramdisk wird nur verwendet, um im Wiederherstellungsmodus zu starten.
Enthält einen normalen Boot-Kernel und eine Wiederherstellungs-Ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Die Wiederherstellungs-Ramdisk wird verwendet, um sowohl im Wiederherstellungsmodus als auch in 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 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)
    ...