Omówienie partycji

Urządzenia z Androidem zawierają kilka partycji, czyli określonych sekcji pamięci, które są używane do przechowywania konkretnych części oprogramowania urządzenia. Każda partycja zawiera obraz partycji (plik IMG) lub migawkę całego oprogramowania dla tej 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. Partycje system, bootinit_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. Partycje vendor, vendor_bootodm to partycje podstawowe.

  • Partycje, których nie można aktualizować to partycje, których zawartość nie jest aktualizowana lub jest aktualizowana danymi użytkownika.

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

Partycje systemowe

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

  • boot partycji. Ta partycja zawiera ogólny obraz jądra (GKI). Ta partycja zawiera też ogólny dysk RAM w urządzeniach z Androidem 12 i starszym. Więcej informacji o ogólnym dysku RAM znajdziesz w sekcji Zawartość ogólnego obrazu dysku RAM.

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

  • system partycji. Ta partycja zawiera obraz systemu używany w przypadku produktów OEM.

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

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

  • product partycji. Ta partycja może zawierać moduły specyficzne dla produktu, które nie są powiązane z żadnymi innymi partycjami.

  • pvmfw partycji. Ta partycja przechowuje chronione oprogramowanie sprzętowe maszyny wirtualnej (pvmfw), które jest pierwszym kodem uruchamianym na chronionych maszynach wirtualnych. Więcej informacji znajdziesz w artykule Oprogramowanie układowe chronionej maszyny wirtualnej.

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

Partycje dostawcy

Poniżej znajdziesz listę wszystkich partycji dostawców i ich zastosowań:

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

  • recovery partycji. Ta partycja zawiera obraz przywracania, 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 automatycznych aktualizacjach znajdziesz w artykule Aktualizacje A/B (automatyczne).

  • vbmeta partycji. Ta partycja zawiera informacje o zweryfikowanym rozruchu dla 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.

  • vendor partycji. 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 ramach AOSP.

  • vendor_dlkm partycji. Ta partycja zawiera moduły jądra dostawcy. Dzięki przechowywaniu modułów jądra dostawcy na tej partycji zamiast na partycji vendor możesz aktualizować moduły jądra bez aktualizowania partycji vendor. Więcej informacji znajdziesz w artykule Partycje DKLM dostawcy i producenta ODM.

  • odm partycji. Ta partycja zawiera dostosowania producenta oryginalnego sprzętu (ODM) do pakietów obsługi płyty (BSP) dostawcy układu SOC. Takie dostosowania umożliwiają producentom ODM zastępowanie lub dostosowywanie komponentów SoC oraz wdrażanie 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 zawiera dostosowania, dzięki czemu urządzenia mogą używać jednego obrazu dostawcy w przypadku wielu wersji sprzętowych. Więcej informacji znajdziesz w artykule Partycje ODM.

  • odm_dlkm partycji. 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 producenta ODM.

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

Partycje, których nie można aktualizować

Poniżej znajdziesz listę wszystkich partycji, których nie można aktualizować, i ich zastosowania:

  • cache partycji. 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 userdata. Zwykle wystarczy 50–100 MB.

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

  • metadata partycji. Jeśli urządzenie korzysta z szyfrowania metadanych, ta partycja zawiera klucz szyfrowania metadanych. Rozmiar tej partycji wynosi co najmniej 16 MB, nie jest ona zaszyfrowana, a jej dane nie są zapisywane w postaci migawek. Ta partycja jest usuwana, gdy urządzenie jest przywracane do ustawień fabrycznych.

Reguły i rekomendacje dotyczące aktualizacji partycji

Zalecamy aktualizowanie wszystkich partycji systemowych jako całości i wszystkich partycji dostawcy jako kolejnej 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 tego, jak zaktualizujesz partycje, musisz zaktualizować te partycje ze względu na silnie powiązane zależności i brak stabilnych interfejsów API:

  • Partycje bootsystem_dlkm
  • partycje init_boot, system, system_extproduct;

Partycje dynamiczne

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

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

  • tos partycji. Ta partycja zawiera obraz binarny systemu Trusty OS i jest używana tylko wtedy, gdy urządzenie zawiera Trusty. Więcej informacji znajdziesz w artykule Partycje systemu Trusty OS (TOS).

Wersje produktu Soong

System kompilacji Soong używa wariantów obrazów do dzielenia zależności kompilacji. Moduły natywne (/build/soong/cc) mogą zmieniać moduły procesów systemowych na wariant podstawowy, a moduły procesów dostawcy na wariant dostawcy. Moduł w jednym wariancie obrazu nie może łączyć się z innymi modułami w innym wariancie obrazu.

W Androidzie 12 lub nowszym moduł systemowyvendor_available: true tworzy wariant dostawcy oprócz wariantu podstawowego. Aby utworzyć wersję produktu, musisz zdefiniować atrybut product_available: true. Niektóre biblioteki VNDK bez product_available: true nie są dostępne dla modułów produktu.