В Android 10 и 11 первый образ ramdisk содержит исполняемый файл инициализации первого этапа (который выполняет предварительное монтирование в соответствии с записями в fstab) и файлы fstab поставщика. (Как и в Android 9 и более ранних версиях, system.img содержит содержимое $TARGET_ROOT_OUT .)
Для устройств с загрузочным образом в оперативной памяти (не A/B) инициализация на первом этапе представляет собой статический исполняемый файл, расположенный по адресу
/init. На этих устройствахsystem.imgмонтируется как/system, а затем выполняется операция переключения корневого каталога для перемещения точки монтирования из/systemв/. Содержимое образа в оперативной памяти освобождается после завершения монтирования.Для устройств, использующих режим восстановления в качестве оперативной памяти (ramdisk), инициализация первого этапа находится в
/initвнутри оперативной памяти восстановления. Сначала эти устройства переключаются на корневой каталог/first_stage_ramdiskчтобы удалить компоненты восстановления из среды, а затем выполняют те же действия, что и устройства с загрузочным ramdisk (то есть монтируютsystem.imgкак/system, переключаются на корневой каталог, чтобы переместить этот монтированный файл в/, и освобождают содержимое ramdisk после монтирования). Если в командной строке ядра (или bootconfig начиная с Android 12 и выше) присутствуетandroidboot.force_normal_boot=1, устройства загружаются в обычном режиме (в 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
| Ramdisk (Android 8.x и ниже) | Система как корневой пользователь (Андроид 9) | Ramdisk (Android 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
| Ramdisk (Android 8.x и ниже) | Система как корневой пользователь (Андроид 9) | Ramdisk (Android 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) | Ramdisk (Android 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)
...