Omówienie partycji

Urządzenia z Androidem zawierają kilka partycji lub określonych sekcji miejsca na dane, które są używane do przechowywania określonych części oprogramowania urządzenia. Każda partycja zawiera obraz partycji (plik IMG) lub migawkę całego oprogramowania partycji. Rysunek 1 przedstawia układ podstawowych partycji na urządzeniu:

Układ podstawowych partycji.

Rysunek 1. Układ podstawowych partycji.

Partycje są podzielone na 3 kategorie:

  • Partycje systemowe to partycje, które są aktualizowane podczas aktualizacji systemu operacyjnego i innych funkcji. system, boot i init_boot to podstawowe partycje systemowe.

  • Partycje dostawcy zawierają kod specyficzny dla urządzenia i sprzętu, który po początkowym wydaniu może nigdy nie zostać zaktualizowany. vendor, vendor_boot i odm to podstawowe partycje dostawcy.

  • Partycje nieaktualizowalne to partycje, których zawartość nie jest aktualizowana lub jest aktualizowana za pomocą danych użytkownika.

Kod w partycjach systemowych i dostawcy może wchodzić w interakcje za pomocą stabilnego interfejsu o nazwie interfejs dostawcy (VINTF).

Partycje systemowe

Poniżej znajdziesz listę wszystkich partycji systemowych i ich zastosowań:

  • Partycja boot Ta partycja zawiera ogólny obraz jądra (GKI). Ta partycja zawiera też ogólny dysk RAM w urządzeniach wprowadzonych na rynek w Androidzie 12 i starszych. Więcej informacji o ogólnym dysku RAM znajdziesz w artykule Zawartość obrazu ogólnego dysku RAM.

  • Partycja init_boot (Android 13 i nowszy) Ta partycja zawiera ogólny dysk RAM. W Androidzie 11 i 12 ogólny dysk RAM znajduje się w partycji boot.

  • Partycja system Ta partycja zawiera obraz systemu używany w produktach OEM.

  • Partycja system_ext Ta partycja zawiera zasoby systemowe i zastrzeżone moduły systemowe, które rozszerzają wspólny obraz systemu w partycji system.

  • Partycja system_dlkm Ta partycja zawiera moduły GKI. Więcej informacji o tej partycji znajdziesz w artykule Implementowanie partycji modułu GKI.

  • Partycja product Ta partycja może zawierać moduły specyficzne dla produktu, które nie są powiązane z żadną inną partycją.

  • Partycja pvmfw Ta partycja przechowuje oprogramowanie Protected Virtual Machine Firmware (pvmfw), które jest pierwszym kodem uruchamianym na chronionych maszynach wirtualnych. Więcej informacji znajdziesz w artykule Protected Virtual Machine Firmware.

  • Partycja generic_bootloader Ta partycja zawiera ogólny program rozruchowy.

Partycje dostawcy

Poniżej znajdziesz listę wszystkich partycji dostawcy i ich zastosowań:

  • Partycja vendor_boot Ta partycja zawiera kod rozruchowy specyficzny dla dostawcy. Więcej informacji znajdziesz w artykule Partycje rozruchowe dostawcy.

  • Partycja recovery Ta partycja przechowuje obraz przywracania systemu, który jest uruchamiany podczas procesu aktualizacji bezprzewodowej (OTA). Urządzenia obsługujące bezproblemowe aktualizacje mogą przechowywać obrazy odzyskiwania jako dysk RAM zawarty w obrazie boot lub init_boot. Więcej informacji o bezproblemowych aktualizacjach, zobacz Aktualizacje A/B (bezproblemowe).

  • Partycja misc Ta partycja jest używana przez partycję odzyskiwania i ma rozmiar co najmniej 4 KB.

  • Partycja vbmeta Ta partycja zawiera informacje o weryfikacji podczas uruchamiania wszystkich partycji. Te informacje potwierdzają, że obrazy zainstalowane w każdej partycji są zaufane. Więcej informacji o weryfikacji podczas uruchamiania znajdziesz w artykule Weryfikacja podczas uruchamiania.

  • Partycja vendor Ta partycja zawiera wszystkie pliki binarne, które są specyficzne dla dostawcy i nie są wystarczająco ogólne, aby można je było rozpowszechniać w AOSP.

  • Partycja vendor_dlkm Ta partycja zawiera moduły jądra dostawcy. Przechowywanie modułów jądra dostawcy w tej partycji zamiast w partycji vendor umożliwia aktualizowanie modułów jądra bez aktualizowania partycji vendor. Więcej informacji znajdziesz w artykule Partycje DKLM dostawcy i ODM.

  • Partycja odm Ta partycja zawiera dostosowania ODM do pakietów BSP dostawcy SoC. Takie dostosowania umożliwiają ODM zastępowanie lub dostosowywanie komponentów SoC oraz implementowanie modułów jądra dla komponentów specyficznych dla płyty, demonów i funkcji specyficznych dla ODM w warstwach abstrakcji sprzętu (HAL). Ta partycja jest opcjonalna. Zwykle ta partycja jest używana do przechowywania dostosowań, dzięki czemu urządzenia mogą używać jednego obrazu dostawcy w przypadku wielu jednostek SKU sprzętu. Więcej informacji znajdziesz w artykule Partycje ODM.

  • Partycja odm_dlkm Ta partycja jest przeznaczona do przechowywania modułów jądra ODM. Przechowywanie modułów jądra ODM w tej partycji zamiast w partycji odm umożliwia aktualizowanie modułów jądra ODM bez aktualizowania partycji odm. Więcej informacji znajdziesz w artykule Partycje DKLM dostawcy i ODM.

  • Partycja radio Ta partycja zawiera obraz radia i jest potrzebna tylko w przypadku urządzeń, które mają radio z oprogramowaniem specyficznym dla radia w osobnej partycji.

Partycje nieaktualizowalne

Poniżej znajdziesz listę wszystkich partycji nieaktualizowalnych i ich zastosowań:

  • Partycja cache Ta partycja zawiera dane tymczasowe i jest opcjonalna, jeśli urządzenie korzysta z bezproblemowych aktualizacji. Ta partycja nie musi być zapisywalna z poziomu programu rozruchowego, ale musi być usuwalna. Rozmiar partycji zależy od typu urządzenia i dostępności miejsca na partycji userdata. Zwykle wystarczy 50–100 MB.

  • Partycja userdata Ta partycja zawiera aplikacje i dane zainstalowane przez użytkownika, w tym dane dostosowania.

  • Partycja metadata Jeśli urządzenie korzysta z szyfrowania metadanych, ta partycja zawiera klucz szyfrowania metadanych. Rozmiar tej partycji to co najmniej 16 MB. Nie jest ona zaszyfrowana, a jej dane nie są migawkowane. Ta partycja jest usuwana, gdy urządzenie zostanie przywrócone do ustawień fabrycznych.

Zasady i rekomendacje dotyczące aktualizacji partycji

Zalecamy aktualizowanie wszystkich partycji systemowych jako całości i wszystkich partycji dostawcy jako całości. Aktualizując zestaw partycji jako całość, możesz sprawdzić, czy interfejsy między obrazami w każdej partycji pozostają stabilne.

Niezależnie od sposobu aktualizacji partycji, ze względu na ścisłe zależności i brak stabilnych interfejsów API należy zaktualizować te partycje:

  • partycje boot i system_dlkm;
  • partycje init_boot, system, system_ext i product.

Partycje dynamiczne

Urządzenia z Androidem 11 i nowszym mogą obsługiwać partycje dynamiczne, czyli system partycjonowania w przestrzeni użytkownika w Androidzie, który umożliwia tworzenie, zmienianie rozmiaru i usuwanie partycji podczas aktualizacji bezprzewodowych (OTA). Więcej informacji znajdziesz w artykule Partycje dynamiczne.

Wersje produktu Soong

System kompilacji Soong używa wersji obrazów do dzielenia zależności kompilacji. Moduły natywne (/build/soong/cc) mogą zmieniać moduły procesu systemowego na wersję podstawową, a moduły procesu dostawcy na wersję dostawcy. Moduł w jednej wersji obrazu nie może łączyć się z innymi modułami w innej wersji obrazu.

W Androidzie 12 lub nowszym moduł systemowy z vendor_available: true tworzy wersję dostawcy oprócz wersji podstawowej. Aby utworzyć wersję produktu, product_available: true musi być zdefiniowane. Niektóre biblioteki VNDK bez product_available: true nie są dostępne dla modułów produktu.