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 wirdsystem.imgals/systembereitgestellt, dann wird ein Root-Switch-Vorgang ausgeführt, um die Bereitstellung unter/systemnach/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
/initin der Wiederherstellungs-Ramdisk. Auf diesen Geräten wird zuerst der Root-Switch zu/first_stage_ramdiskausgeführt, um die Wiederherstellungskomponenten aus der Umgebung zu entfernen. Anschließend wird wie bei Geräten mit einer Boot-Ramdisk vorgegangen (d. h.system.imgwird als/systembereitgestellt, der Root-Switch wird ausgeführt, um die Bereitstellung nach/zu verschieben, und die Ramdisk-Inhalte werden nach der Bereitstellung freigegeben). Wennandroidboot.force_normal_boot=1in 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
-/
- 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
-/
- 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
-/
- bin/
- etc
- vendor -> /vendor
- ...
|
Enthält die zusammengeführten Inhalte von
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
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)
...