Omówienie partycji

Urządzenia z Androidem mają 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 dla tej partycji. Rysunek 1 przedstawia układ podstawowych partycji na urządzeniu:

Układ partycji rdzenia.

Rysunek 1. Układ partycji rdzenia.

Partycje są klasyfikowane według 3 kategorii:

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

  • Partycje dostawcy zawierają kod związany z urządzeniem i sprzętem, który może nigdy nie zostać zaktualizowany po pierwotnym wydaniu. Partycje vendor, vendor_bootodm to partycje dostawców podstawowych.

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

Kod w partycjach systemowych i usługodawców może współpracować za pomocą stabilnego interfejsu zwanego interfejsem usługodawcy (VINTF).

Partycje systemowe

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

  • boot partycji. Ta partycja zawiera ogólny obraz jądra (GKI). Ta partycja zawiera też ogólny dysk RAM na urządzeniach z Androidem 12 lub starszym. Więcej informacji o typowym pliku ramdisk znajdziesz w artykule Typowe zawartości pliku ramdisk.

  • partycji init_boot (Android 13 lub nowszy). Ta partycja zawiera ogólny dysk RAM. W Androidzie 11 i 12 ogólny dysk RAM znajduje się na 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 zastrzeżone moduły systemowe, które rozszerzają wspólny obraz systemu na 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 związane z poszczególnymi usługami, które nie są połączone z żadnymi innymi partycjami.

    system
  • pvmfw partycji. Ta partycja przechowuje oprogramowanie układu sterowania chronionej maszyny wirtualnej (pvmfw), które jest pierwszym kodem uruchamianym w chronionych maszynach wirtualnych. Więcej informacji znajdziesz w artykule Ochrona oprogramowania układowego maszyn wirtualnych.

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

Partycje dostawcy

Poniżej znajduje się lista wszystkich partycji dostawcy i ich zastosowania:

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

  • recovery partycji. Na tej partycji jest przechowywany obraz do przywracania, który jest uruchamiany podczas procesu bezprzewodowej aktualizacji (OTA). Urządzenia obsługujące płynne aktualizacje mogą przechowywać obrazy odzyskiwania jako dysk RAM zawarty w obrazie boot lub init_boot. Więcej informacji o automatycznych aktualizacjach znajdziesz w artykule Automatyczne aktualizacje (A/B).

  • vbmeta partycji. Ta partycja zawiera informacje o weryfikowanym 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 danego dostawcy i nie są wystarczająco uniwersalne, aby można je było rozpowszechniać w AOSP.

    system
  • vendor_dlkm partycji. 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 o partycjach dostawcy i ODM DKLM.

  • odm partycji. Ta partycja zawiera niestandardowe rozwiązania producenta oryginalnego projektu (ODM) dla pakietów dostawcy systemu na chipie (SoC). Takie dostosowywanie umożliwia ODM wymianę 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 na warstwach abstrakcji sprzętowej (HAL). Ta partycja jest opcjonalna. Ta partycja jest zwykle używana do przechowywania dostosowań, aby urządzenia mogły korzystać z jednego obrazu dostawcy dla wielu SKU sprzętu. 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 o partycjach dostawcy i ODM DKLM.

  • radio partycji. Ta partycja zawiera obraz radia i jest potrzebna tylko w przypadku urządzeń z radiem i oprogramowaniem radiowym na dedykowanej partycji.

Partycje, których nie można aktualizować

Poniżej znajduje się lista wszystkich partycji, których nie można aktualizować, oraz ich zastosowania:

  • cache partycji. Ta partycja zawiera dane tymczasowe i jest opcjonalna, jeśli urządzenie korzysta z płynnych aktualizacji. Ta partycja nie musi być zapisywalna z poziomu bootloadera, ale musi być możliwa do wymazania. Rozmiar partycji zależy od typu urządzenia i dostępnej ilości miejsca na userdata. Zazwyczaj wystarcza 50–100 MB.

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

  • metadata partycji. Jeśli Twoje urządzenie korzysta z szyfrowania metadanych, ta partycja zawiera klucz szyfrowania metadanych. Rozmiar tej partycji wynosi co najmniej 16 MB, nie jest zaszyfrowana i nie zawiera żadnych zarchiwizowanych danych. Ta partycja jest usuwana, gdy urządzenie zostanie przywrócone do ustawień fabrycznych.

Reguły i zalecenia dotyczące aktualizacji partycji

Zalecamy zaktualizowanie wszystkich partycji systemu jako jednej całości oraz wszystkich partycji dostawcy jako drugiej całości. Aktualizując zestaw partycji jako całość, możesz przetestować, czy interfejsy obrazów w każdej partycji pozostają stabilne.

Niezależnie od tego, jak zaktualizujesz partycje, musisz zaktualizować te partycje ze względu na ściśle powiązane zależności i brak stabilnych interfejsów API:

  • partycje bootsystem_dlkm,
  • partycje init_boot, system, system_ext i product.
.

Dynamiczne partycje

Urządzenia z Androidem 11 lub nowszym mogą obsługiwać partycje dynamiczne, czyli system partycjonowania 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.

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

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

Wersje produktów Soong

System kompilacji Soong używa wariantów obrazu do podziału zależności kompilacji. Moduł natywny (/build/soong/cc) może zmutować moduły procesu systemowego do wariantu podstawowego, a moduły procesu dostawcy do wariantu dostawcy. Moduł w jednym wariancie obrazu nie może się łączyć z innymi modułami w innym wariancie obrazu.

W Androidzie 12 lub nowszym moduł systemowy z vendor_available: true tworzy wariant dostawcy oprócz wariantu podstawowego. Aby utworzyć wersję produktu, musisz zdefiniować wartość product_available: true. Niektóre biblioteki VNDK bez product_available: true są niedostępne dla modułów usług.