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 wirdsystem.imgals/systembereitgestellt. Anschließend wird ein Switch-Root-Vorgang ausgeführt, um die Bereitstellung von/systemnach/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
/initin 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.imgwird als/systembereitgestellt, der Root wird gewechselt, um die Bereitstellung zu/zu verschieben, und die Ramdisk-Inhalte werden nach der Bereitstellung freigegeben. Wennandroidboot.force_normal_boot=1in 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
-/
- 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 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
-/
- 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 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)
...