Urządzenia z Androidem mają kilka partycji, które pełnią różne funkcje w procesie uruchamiania.
Standardowe partycje
boot
partycji. Ta partycja zawiera obraz jądra i jest tworzona za pomocąmkbootimg
. Możesz użyć wirtualnego partycji, aby zaflashować obraz bezpośrednio, bez flashowania nowej partycji rozruchowej. Na urządzeniach z Androidem 13 i starszym ta partycja zawiera też ogólny dysk RAM.kernel. Wirtualna partycja
kernel
zapisuje nowe jądro (zImage
,zImage-dtb
,Image.gz-dtb
) przez zapisanie nowego obrazu jądra na stary obraz jądra. Jeśli dostarczone jądro deweloperskie jest niekompatybilne, konieczne może być zaktualizowanie partycjivendor
,system
lubdtb
(jeśli jest obecna) za pomocą powiązanych modułów jądra.ramdisk. Wirtualny dysk
ramdisk
zapisuje na dysku ramdysk, zastępując stary obraz ramdysku nowym obrazem.
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 dla urządzeń z Androidem 13 lub nowszym.system
partycji. 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) z wsparciem dla płyty głównej. 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 służy do przechowywania dostosowań, dzięki którym urządzenia mogą używać jednego obrazu dostawcy dla wielu 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, które obsługują płynne aktualizacje, mogą przechowywać obrazy odzyskiwania jako ramdisk w obrazieboot
lubinit_boot
(a nie jako osobny obraz).cache
partycji. 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 wszystkie pliki binarne, których nie można rozpowszechniać w ramach AOSP. Jeśli urządzenie nie zawiera informacji zastrzeżonych, możesz pominąć tę partycję.vendor_dlkm
partycji. 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
.radio
partycji. 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 Warunkach korzystania z usługi dotyczącej partycji.pvmfw
partycji. Ta partycja przechowuje oprogramowanie układowe 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.
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, 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, co oznacza, że można je ponownie utworzyć, udostępnić 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 w partycjach, w tym ograniczenia dotyczące linkowania do bibliotek i nowych wariantów 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
; Jeśli te partycje są wspólne dla zestawu urządzeń docelowych, urządzenia te mogą udostępniać SSI i pomijać tworzenie obrazówsystem
isystem_ext
.system_ext
partycji. nowa partycja, która może korzystać z zasobówsystem
, oraz może zawierać moduły systemowe, które:Rozszerzanie modułów systemu AOSP w partycji
system
. Zalecamy przesyłanie takich modułów do AOSP, aby można je było zainstalować w partycjisystem
.Pakiety modułów OEM lub modułów związanych z SOC. Zalecamy odseparowanie takich modułów, aby można je było zainstalować w 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 produktami, które nie są częścią żadnej innej partycji.
Zmiany w VNDK
Natywny pakiet do programowania dla sprzedawców (VNDK) to zestaw bibliotek zainstalowanych na partycji system
, który jest przeznaczony wyłącznie dla sprzedawców do implementacji ich HAL-i.
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 też tworzyć warianty dostawcy, definiując
vendor_available: true
w plikachAndroid.bp
. Umożliwia to modułom dostawcy tworzenie linków do modułów systemowych. Biblioteki VNDK, czyli wersje biblioteksystem
dla dostawców, mogą też tworzyć wersje dla dostawców dla modułów dostawców poprzez zdefiniowanievendor_available: true
w plikachAndroid.bp
(patrz przykład).W Androidzie 11 moduł systemowy może też tworzyć wariant produktu (oprócz podstawowych i wersji 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 bezproduct_available: true
są niedostępne dla modułów usług.