Разделы Рамдиска

В 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 .

ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    
Содержит только обычное загрузочное ядро.

Содержит ядро ​​и ramdisk.img .

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 .

system.img
  -/
    - bin/
    - etc
    - vendor -> /vendor
    - ...
   

Содержит объединенное содержимое файлов $TARGET_SYSTEM_OUT и $TARGET_ROOT_OUT .

system.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/
      - bin/
      - etc/
      - vendor -> /vendor
      - ...
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

Содержит объединенное содержимое файлов $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)
    ...
    

Схема расположения перегородок (устройства 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)
    ...