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:
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
iinit_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_boot
iodm
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 partycjiboot
.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 partycjisystem
.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 obrazieboot
lubinit_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 partycjivendor
umożliwia aktualizowanie modułów jądra bez aktualizowania partycjivendor
. 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 partycjiodm
umożliwia aktualizowanie modułów jądra ODM bez aktualizowania partycjiodm
. 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 nauserdata
. 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
boot
isystem_dlkm
, - partycje
init_boot
,system
,system_ext
iproduct
.
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.