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.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. Wennandroidboot.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 -/ - 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)
...