Urządzenia z Androidem zawierają kilka partycji, które pełnią różne funkcje w procesie rozruchu.
Standardowe partycje
partycja
boot
. Ta partycja zawiera obraz jądra i jest tworzona przy użyciumkbootimg
. Możesz użyć partycji wirtualnej do bezpośredniego flashowania dowolnego obrazu bez konieczności flashowania nowej partycji rozruchowej. Ta partycja zawiera również ogólny ramdysk w urządzeniach uruchomionych przed Androidem 13.jądro. Wirtualna partycja
kernel
zastępuje jądro (zImage
,zImage-dtb
,Image.gz-dtb
), zapisując nowy obraz jądra na starym obrazie jądra. Jeśli dostarczone jądro rozwojowe jest niekompatybilne, może zaistnieć potrzeba aktualizacjivendor
,system
lub partycjidtb
(jeśli jest obecna) za pomocą powiązanych modułów jądra.ramdysk. Wirtualna partycja
ramdisk
zastępuje ramdysk, zapisując nowy obraz ramdysku na starym obrazie ramdysku.
Operacja nadpisywania określa lokalizację początkową istniejącego obrazu w eMMC i kopiuje nowy obraz do tej lokalizacji. Nowy obraz (jądro lub ramdysk) może być większy od istniejącego; aby zwolnić miejsce, program ładujący może przenieść dane zgodnie z obrazem lub przerwać operację z powodu błędu.
partycja
init_boot
. Ta partycja zawiera ogólny ramdysk dla urządzeń uruchamianych z systemem Android 13 i nowszym.partycja
system
. Ta partycja zawiera środowisko Androida.partycja
odm
. Ta partycja zawiera oryginalne dostosowania producenta projektu (ODM) do pakietów obsługi płyt systemowych (SoC) dostawców (BSP). Takie dostosowania umożliwiają ODM wymianę lub dostosowanie komponentów SoC oraz wdrożenie modułów jądra dla komponentów specyficznych dla płyty głównej, demonów i funkcji specyficznych dla ODM w warstwach abstrakcji sprzętu (HAL). Ta partycja jest opcjonalna; zazwyczaj służy do dostosowywania, dzięki czemu urządzenia mogą używać obrazu jednego dostawcy dla wielu jednostek SKU sprzętu. Aby uzyskać szczegółowe informacje, zobacz Partycje ODM .partycja
odm_dlkm
. Ta partycja jest przeznaczona do przechowywania modułów jądra ODM. Przechowywanie modułów jądra ODM na partycjiodm_dlkm
(w przeciwieństwie do partycjiodm
) umożliwia aktualizację modułów jądra ODM bez aktualizacji partycjiodm
.partycja
recovery
. Na tej partycji przechowywany jest obraz odzyskiwania, który jest uruchamiany podczas procesu OTA. Urządzenia obsługujące bezproblemowe aktualizacje mogą przechowywać obrazy odzyskiwania jako ramdysk zawarty w obrazieboot
lubinit_boot
(a nie w oddzielnym 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 umożliwiać zapisu z poziomu programu ładującego, ale musi umożliwiać jej wymazanie. Rozmiar partycji zależy od typu urządzenia i dostępności miejsca nauserdata
; zazwyczaj wystarczające jest 50–100 MB.misc
partycja. Ta partycja jest używana przez partycję odzyskiwania i ma rozmiar 4 KB lub większy.partycja
userdata
. Ta partycja zawiera aplikacje i dane zainstalowane przez użytkownika, w tym dane dotyczące dostosowywania.partycja
metadata
. Ta partycja służy do przechowywania klucza szyfrowania metadanych, gdy urządzenie korzysta z szyfrowania metadanych . Rozmiar wynosi 16 MB lub więcej. Nie jest szyfrowany, a jego dane nie są kopiowane. Jest usuwany po przywróceniu ustawień fabrycznych urządzenia. Użycie tej partycji jest ściśle ograniczone.partycja
vendor
. Ta partycja zawiera dowolny plik binarny, którego nie można dystrybuować do 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 jądra dostawcy na partycjivendor_dlkm
(w przeciwieństwie do partycjivendor
) umożliwia aktualizację modułów jądra bez aktualizowania partycjivendor
.partycja
radio
. Ta partycja zawiera obraz radia i jest potrzebna tylko w przypadku urządzeń, które zawierają radio z oprogramowaniem specyficznym dla radia na dedykowanej partycji.tos
partycja. Ta partycja przechowuje binarny obraz systemu operacyjnego Trusty i jest używana tylko wtedy, gdy na urządzeniu znajduje się system Trusty. Aby uzyskać szczegółowe informacje, zobacz Partycje TOS .partycja
pvmfw
. Na tej partycji przechowywane jest oprogramowanie sprzętowe chronionej maszyny wirtualnej (pvmfw), które jest pierwszym kodem uruchamianym na chronionych maszynach wirtualnych. Aby uzyskać więcej informacji, zobacz oprogramowanie sprzętowe chronionej maszyny wirtualnej .
Partycje dynamiczne
Urządzenia z systemem Android 11 lub nowszym obsługują partycje dynamiczne, czyli system partycjonowania przestrzeni użytkownika dla systemu Android, który umożliwia tworzenie, zmianę rozmiaru lub niszczenie partycji podczas aktualizacji OTA. Aby uzyskać szczegółowe informacje, zobacz Partycje dynamiczne .
Wyznaczanie partycji krytycznych
Jeśli urządzenie wymaga do działania określonych partycji lub danych, należy wyznaczyć te partycje/dane jako w pełni chronione lub nadające się do ponownego flashowania, co oznacza, że można je ponownie zbudować, udostępnić lub wyodrębnić za pomocą polecenia fastboot oem
. Obejmuje to takie dane, jak ustawienia fabryczne poszczególnych urządzeń, numery seryjne, dane kalibracyjne i inne.
Zmiany w Androidzie 11
Android 11 zawiera liczne zmiany w partycjach, w tym ograniczenia w zakresie łączenia z bibliotekami i nowe warianty obrazu Soong.
Rysunek 1. Układ partycji w systemie Android 11
Pojedynczy obraz systemu (SSI). Nowy, koncepcyjny obraz zawierający obrazy
system
isystem_ext
. Jeśli te partycje są wspólne dla zestawu urządzeń docelowych, urządzenia te mogą współużytkować interfejs SSI i pomijać tworzenie obrazówsystem
isystem_ext
.partycja
system_ext
. Nowa partycja, która może korzystać z zasobówsystem
i może zawierać moduły systemowe, które:Rozszerz moduły systemowe AOSP na partycji
system
. Zalecamy przesłanie takich modułów do AOSP, aby można było je później zainstalować na partycjisystem
.Połącz moduły OEM lub specyficzne dla SoC. Zalecamy rozdzielenie takich modułów, aby można je było zainstalować na partycji
product
lubvendor
.
partycja
system
. Wspólny obraz systemu używany w produktach OEM. Zalecamy przeniesienie zastrzeżonych modułów poza partycjęsystem
, przesyłając je do AOSP lub przenosząc je na partycjęsystem_ext
.podział
product
. Ta partycja może teraz używać dozwolonych interfejsów do instalowania modułów specyficznych dla produktu, które nie są dołączone do żadnych innych partycji.
Zmiany w VNDK
Vendor Native Development Kit (VNDK) to zestaw bibliotek instalowanych na partycji system
i przeznaczony wyłącznie dla dostawców w celu wdrożenia ich warstw HAL.
W systemie Android 10 i starszych partycja
vendor
może łączyć się z bibliotekami VNDK na partycjisystem
, ale nie może łączyć się z innymi bibliotekami na partycjisystem
. Natywne moduły w partycjiproduct
mogą łączyć się z dowolną biblioteką w partycjisystem
.W systemie Android 11 i nowszych partycje
product
ivendor
mogą łączyć się z bibliotekami VNDK na partycjisystem
, ale nie mogą łączyć się z innymi bibliotekami na partycjisystem
.
Wkrótce warianty produktów
System kompilacji Soong wykorzystuje warianty obrazu do dzielenia zależności kompilacji. Moduły natywne ( /build/soong/cc
) mogą mutować moduły procesów systemowych do wariantu podstawowego i moduły procesów dostawcy do wariantu dostawcy; moduł w jednym wariancie obrazu nie może być powiązany z innymi modułami w innym wariancie obrazu.
W systemie Android 10 lub starszym moduł systemowy automatycznie tworzy warianty podstawowe. Może także tworzyć warianty dostawców, definiując
vendor_available: true
w swoich plikachAndroid.bp
; umożliwia to modułom dostawcy łączenie się z modułami systemu. Biblioteki VNDK, które są wariantami dostawców biblioteksystem
, mogą również tworzyć warianty dostawców dla modułów dostawców poprzez zdefiniowanievendor_available: true
w swoich plikachAndroid.bp
(patrz przykład ).W systemie Android 11 moduł systemowy może również utworzyć wariant produktu (oprócz wariantów podstawowych i dostawców), definiując
vendor_available: true
.W systemie Android 12 lub nowszym moduł systemowy z
vendor_available: true
tworzy wariant dostawcy oprócz wariantu podstawowego. Aby utworzyć wariant produktu, należy zdefiniowaćproduct_available: true
. Niektóre biblioteki VNDK bezproduct_available: true
nie są dostępne dla modułów produktu.