В Android 10 и 11 виртуальный диск первого этапа содержит двоичный файл инициализации первого этапа (который выполняет раннее монтирование, как указано в записях fstab) и файлы fstab поставщика. (Как и в Android 9 и ниже, system.img содержит содержимое $TARGET_ROOT_OUT .)
Для устройств с загрузочным RAM-диском (не A/B) первый этап инициализации представляет собой статический исполняемый файл, расположенный в
/init. Эти устройства монтируютsystem.imgкак/system, а затем выполняют корневую операцию переключения, чтобы переместить монтирование в/systemв/. Содержимое виртуального диска освобождается после завершения монтирования.Для устройств, использующих восстановление в качестве виртуального диска, первый этап инициализации находится в
/initна виртуальном диске восстановления. Эти устройства сначала переключают root на/first_stage_ramdisk, чтобы удалить компоненты восстановления из среды, затем действуют так же, как и устройства с загрузочным ramdisk (то есть монтируютsystem.imgкак/system, переключают root для перемещения этого монтирования на/, и свободное содержимое RAM-диска после монтажа). Еслиandroidboot.force_normal_boot=1присутствует в командной строке ядра (или bootconfig, начиная с Android 12 и выше), устройства загружаются в обычном режиме (в Android) вместо загрузки в режиме восстановления.
После завершения первой стадии инициализации выполняется /system/bin/init с аргументом selinux_setup для компиляции и загрузки SELinux в систему. Наконец, init снова запускает /system/bin/init с аргументом second_stage . В этот момент запускается основная фаза инициализации и продолжается процесс загрузки с использованием сценариев init.rc
В следующих разделах подробно описаны различия в расположении разделов для устройств, отличных от A/B, до и после Android 10.
Макеты разделов (устройства без A/B)
В следующих разделах подробно описаны различия в расположении разделов для устройств, отличных от A/B, до и после Android 10.
boot.img
| Рамдиск (Android 8.x и ниже) | Система как корень (Андроид 9) | Рамдиск (Андроид 10 и 11) |
|---|---|---|
Содержит ядро и
ramdisk.img
-/
- init.rc
- init
- etc -> /system/etc
- system/ (mount point)
- vendor/ (mount point)
- odm/ (mount point)
...
| Содержит только обычное загрузочное ядро. | Содержит ядро и
ramdisk.img
-/
- init
- vendor fstab files
- system/ (mount point)
- vendor/ (mount point)
- odm/ (mount point)
...
|
recovery.img
Содержит ядро восстановления и ramdisk.img восстановления.
system.img
| Рамдиск (Android 8.x и ниже) | Система как корень (Андроид 9) | Рамдиск (Андроид 10 и 11) |
|---|---|---|
Содержит
system.img
-/
- bin/
- etc
- vendor -> /vendor
- ...
| Содержит объединенное содержимое
system.img
-/
- init.rc
- init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...
| Содержит объединенное содержимое
system.img
-/
- init.rc
- init -> /system/bin/init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...
|
Макеты разделов (устройства A/B)
В следующих разделах подробно описаны различия в расположении разделов для устройств A/B до и после Android 10.
boot.img
| Система как корень (Андроид 9) | Рамдиск (Андроид 10 и 11) |
|---|---|
Содержит обычное загрузочное ядро и виртуальный диск восстановления ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk используется только для загрузки в рекавери. | Содержит обычное загрузочное ядро и виртуальный диск восстановления ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk используется для загрузки как в рекавери, так и в Android.
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
Содержит объединенное содержимое $TARGET_SYSTEM_OUT и $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)
...