Urządzenia z Androidem zawierają kilka partycji, które podczas uruchamiania pełnią różne funkcje.
Standardowe partycje
boot
partycji. Ta partycja zawiera obraz jądra i jest tworzona za pomocąmkbootimg
. Możesz użyć partycji wirtualnej, by zamigać dowolny obraz bezpośrednio bez tworzenia nowej partycji rozruchowej. Ta partycja zawiera też ogólny dysk RAM na urządzeniach wprowadzonych na rynek przed Androidem 13.kernel. Wirtualna partycja
kernel
zastępuje jądro (zImage
,zImage-dtb
,Image.gz-dtb
) przez zapisanie nowego obrazu jądra w miejscu starego obrazu jądra. Jeśli dostarczone jądro programistyczne jest niezgodne, może być konieczne zaktualizowanie partycjivendor
,system
lubdtb
(jeśli jest dostępna) za pomocą powiązanych modułów jądra.ramdisk. Wirtualny dysk
ramdisk
zapisuje na dysku ramdysk, zastępując stary obraz nowym.
Operacja zastąpienia określa początkową lokalizację istniejącego obrazu w eMMC i kopiuje nowy obraz do tej lokalizacji. Nowy obraz (jądro lub dysk ram) może być większy od dotychczasowego. Aby zwolnić miejsce, bootloader może przenieść dane po obrazie lub przerwać operację z powodu błędu.
init_boot
partycji. Ta partycja zawiera ogólny dysk RAM na urządzeniach z Androidem 13 lub nowszym.partycja
system
. Ta partycja zawiera platformę Androida.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. Zwykle zawiera modyfikacje umożliwiające urządzeniom używanie jednego obrazu dostawcy na potrzeby wielu kodów SKU sprzętu. Więcej informacji znajdziesz w artykule ODM Partitions.odm_dlkm
partycji. Ta partycja jest przeznaczona do przechowywania modułów jądra ODM. Przechowywanie modułów jądra ODM na partycjiodm_dlkm
(a nie na partycjiodm
) umożliwia aktualizowanie modułów jądra ODM bez aktualizowania partycjiodm
.recovery
partycji. Na tej partycji jest przechowywany obraz do przywracania, który jest uruchamiany podczas procesu OTA. Urządzenia obsługujące bezproblemowe aktualizacje mogą przechowywać obrazy przywracania jako pliki pamięci RAM zawarte w obrazieboot
lubinit_boot
(a nie w osobnym obrazie).partycja
cache
. Ta partycja przechowuje dane tymczasowe i jest opcjonalna, jeśli urządzenie korzysta z płynnych aktualizacji. Partycja pamięci podręcznej nie musi być zapisywalna z poziomu bootloadera, ale musi być możliwa do wymazania. Rozmiar partycji zależy od typu urządzenia i dostępności miejsca nauserdata
. Zazwyczaj wystarcza 50–100 MB.misc
partycji. Ta partycja jest używana przez partycję odzyskiwania i ma co najmniej 4 KB.userdata
partycji. Ta partycja zawiera zainstalowane przez użytkownika aplikacje i dane, w tym dane dotyczące personalizacji.metadata
partycji. Ta partycja służy do przechowywania klucza szyfrowania metadanych, gdy urządzenie korzysta z szyfrowania metadanych. Rozmiar jest większy niż 16 MB. Nie jest zaszyfrowany i nie zawiera migawek danych. Jest on usuwany, gdy urządzenie zostanie przywrócone do ustawień fabrycznych. Korzystanie z tej partycji jest ściśle ograniczone.vendor
partycji. Ta partycja zawiera dowolny plik binarny, którego nie można rozpowszechnić w AOSP. Jeśli urządzenie nie zawiera informacji zastrzeżonych, możesz pominąć tę partycję.partycja
vendor_dlkm
. Ta partycja jest przeznaczona do przechowywania modułów jądra dostawcy. Przechowywanie modułów dostawcy jądra w partycjivendor_dlkm
(a nie w partycjivendor
) umożliwia aktualizowanie modułów jądra bez aktualizowania partycjivendor
.partycja
radio
. Ta partycja zawiera obraz radia i jest potrzebna tylko w przypadku urządzeń z radiem i oprogramowaniem radiowym na dedykowanej partycji.tos
partycji. Ta partycja przechowuje obraz binarny systemu operacyjnego Trusty i jest używana tylko wtedy, gdy urządzenie zawiera Trusty. Szczegółowe informacje znajdziesz w artykule na temat partycji na poziomie Warunków korzystania z usługi.pvmfw
partycji. Ta partycja przechowuje oprogramowanie układu sterowania chronionej maszyny wirtualnej (pvmfw), które jest pierwszym kodem uruchamianym na chronionych maszynach wirtualnych. Więcej informacji znajdziesz w artykule Ochrona oprogramowania układowego maszyny wirtualnej.
Partycje dynamiczne
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, zmianę rozmiaru i usuwanie partycji podczas aktualizacji bezprzewodowych (OTA). Więcej informacji znajdziesz w artykule Dynamiczne partycje.
Określanie krytycznych partycji
Jeśli urządzenie wymaga określonych partycji lub danych, musisz oznaczyć te partycje lub dane jako w pełni chronione lub umożliwiające ponowne flashowanie. Oznacza to, że można je ponownie utworzyć, dostarczyć lub wyodrębnić za pomocą polecenia fastboot oem
.
Obejmuje to m.in. ustawienia fabryczne, numery seryjne i dane kalibracyjne.
Zmiany w Androidzie 11
Android 11 zawiera wiele zmian dotyczących partycji, w tym ograniczenia dotyczące linków do bibliotek i nowe warianty obrazów Soong.
Rysunek 1. Układ partycji w Androidzie 11
Single System Image (SSI) (pojedynczy obraz systemu). nowy obraz koncepcyjny zawierający obrazy
system
isystem_ext
; Gdy te partycje są wspólne dla zestawu urządzeń docelowych, mogą one korzystać z SSI i pomijać tworzenie obrazówsystem
isystem_ext
.system_ext
partycji. Nowa partycja, która może korzystać z zasobówsystem
i zawierać moduły systemowe, które:Rozszerz moduły systemu AOSP na partycji
system
. Zalecamy zaimportowanie tych modułów do AOSP, aby można je było później zainstalować w partycjisystem
.Pakiety modułów OEM lub modułów związanych z SOC. Zalecamy rozłączenie takich modułów, aby można je było zainstalować na partycji
product
lubvendor
.
system
partycji. Wspólny obraz systemu używany w przypadku produktów OEM. Zalecamy przeniesienie zastrzeżonych modułów z partycjisystem
, przesyłając je do AOSP lub przenosząc na partycjęsystem_ext
.product
partycji. Ta partycja może teraz używać dozwolonych interfejsów do instalowania modułów związanych z poszczególnymi usługami, które nie są częścią pakietu z żadną inną partycją.
Zmiany w VNDK
Vendor Native Development Kit (VNDK) to zestaw bibliotek zainstalowanych w partycji system
przeznaczony wyłącznie dla dostawców do wdrażania licencji HAL.
W Androidzie 10 i starszych partycja
vendor
może zawierać linki do bibliotek VNDK w partycjisystem
, ale nie może zawierać linków do innych bibliotek w tej partycji.system
Natywne moduły w partycjiproduct
mogą się łączyć z dowolną biblioteką w partycjisystem
.W Androidzie 11 i nowszych partycje
product
ivendor
mogą się łączyć z bibliotekami VNDK w partycjisystem
, ale nie mogą łączyć się z innymi bibliotekami w partycjisystem
.
Wersje produktu 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 łączyć się z innymi modułami w innym wariancie obrazu.
W Androidzie 10 lub starszym moduł systemowy automatycznie tworzy warianty podstawowe. Może również tworzyć warianty dostawcy, definiując
vendor_available: true
w plikachAndroid.bp
. Dzięki temu moduły dostawcy mogą łączyć się z modułami systemowymi. Biblioteki VNDK, które są wariantami dostawców biblioteksystem
, mogą też tworzyć warianty dostawców dla modułów dostawcy, definiującvendor_available: true
w plikachAndroid.bp
(zobacz przykład).W Androidzie 11 moduł systemowy może też tworzyć wariant produktu (oprócz podstawowych i wariantów dostawcy) przez zdefiniowanie
vendor_available: true
.W Androidzie 12 lub nowszym moduł systemowy z
vendor_available: true
tworzy wariant dostawcy oprócz wariantu podstawowego. Aby utworzyć wersję produktu, musisz zdefiniowaćproduct_available: true
. Niektóre biblioteki VNDK bez atrybutuproduct_available: true
są niedostępne w modułach usług.