Partycje Ramdisk

.

W Androidzie 10 i 11 pierwsza faza pamięci RAM zawiera pierwszy etap binarnego init (który wykonuje wczesne montowanie zgodnie z informacjami w plikach fstab) oraz pliki fstab producenta. (w Androidzie 9 i starszych wersjach system.img zawiera zawartość $TARGET_ROOT_OUT).

  • W przypadku urządzeń z dyskiem rozruchowym (innym niż A/B) inicjowanie pierwszego etapu jest statycznym plikiem wykonawczym znajdującym się w lokalizacji /init. Te urządzenia montują system.img jako /system, a następnie wykonują operację przełączenia katalogu, aby przenieść punkt zamontowania /system do /. Treści z pamieci RAM są zwalniane po zakończeniu montowania.

  • W przypadku urządzeń, które używają odzyskiwania jako dysku RAM, inicjowanie pierwszego etapu znajduje się w /init w obrębie dysku pamięci RAM. Te urządzenia najpierw przełączają poziom główny na /first_stage_ramdisk, aby usunąć komponenty przywracania ze środowiska, a następnie postępują tak samo jak w przypadku urządzeń z dyskiem rozruchowym (zamontuj system.img jako /system, przełącz na poziomie roota, aby przenieść punkt montowania do /, i pozostaw zawartość dysku RAM po podłączeniu). Jeśli androidboot.force_normal_boot=1 jest obecny na linii poleceń jądra (lub w bootconfig od Androida 12), urządzenia uruchamiają się normalnie (w Androidzie), a nie w trybie odzyskiwania.

Po zakończeniu pierwszego etapu inicjalizacji uruchamia się /system/bin/init z argumentem selinux_setup, aby skompilować i wczytać SELinux do systemu. Na koniec funkcja init ponownie wykonuje funkcję /system/bin/init, podając jej argument second_stage. W tym momencie uruchamia się główna faza inicjalizacji i kontynuuje proces uruchamiania za pomocą skryptów init.rc.

W następnych sekcjach szczegółowo opisujemy różnice w schematach partycji na urządzeniach innych niż A/B przed i po Androidzie 10.

Układy partycji (urządzenia inne niż A/B)

W następnych sekcjach szczegółowo opisujemy różnice w schematach partycji na urządzeniach innych niż A/B przed i po Androidzie 10.

boot.img

Ramdisk
(Android 8.x lub starszy)
System jako root
(Android 9)
Ramdisk
(Android 10 i 11)

Zawiera jądro i ramdisk.img.

ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    
zawiera tylko zwykłe jądro rozruchowe.

Zawiera jądro i ramdisk.img.

ramdisk.img
  -/
    - init
    - vendor fstab files
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

recovery.img

Zawiera jądro odzyskiwania i element odzyskiwania ramdisk.img

system.img

Ramdisk
(Android 8.x i starsze)
System jako root
(Android 9)
Ramdisk
(Android 10 i 11)

Zawiera system.img.

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

Zawiera scalone treści z plików $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)
    ...
    

Zawiera scalone treści z plików $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)
    ...
    

Układy partycji (urządzenia A/B)

W następnych sekcjach opisaliśmy szczegółowo różnice w rozmieszczeniu partycji na urządzeniach z Androidem 10 i wcześniej.

boot.img

System jako root
(Android 9)
Ramdisk
(Android 10 i 11)
Zawiera normalne jądro rozruchowe i dysk RAMdysk przywracania (BOARD_USES_RECOVERY_AS_BOOT := true).

Dysk twardy przywracania jest używany tylko do rozruchu podczas przywracania.
Zawiera zwykłe jądro rozruchowe i recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk służy do uruchamiania zarówno trybu odzyskiwania, jak i Androida.
ramdisk.img
  -/
    - init -> /system/bin/init
    - first_stage_ramdisk
       - vendor fstab files
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

obraz systemu.

Zawiera scaloną zawartość pól $TARGET_SYSTEM_OUT i $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)
    ...