Przegląd

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 partycji vendor, system lub dtb (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 partycji odm_dlkm (a nie na partycji odm) umożliwia aktualizowanie modułów jądra ODM bez aktualizowania partycji odm.

  • 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 obrazie boot lub init_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 na userdata. 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 partycji vendor_dlkm (a nie w partycji vendor) umożliwia aktualizowanie modułów jądra bez aktualizowania partycji vendor.

  • 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.

Układ partycji Androida

Rysunek 1. Układ partycji w Androidzie 11

  • Single System Image (SSI) (pojedynczy obraz systemu). nowy obraz koncepcyjny zawierający obrazy systemsystem_ext; Jeśli te partycje są wspólne dla zestawu urządzeń docelowych, urządzenia te mogą udostępniać SSI i pomijać tworzenie obrazów systemsystem_ext.

  • system_ext partycji. nowa partycja, która może korzystać z zasobów system, 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 partycji system.

    • 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 lub vendor.

  • system partycji. Wspólny obraz systemu używany w przypadku produktów OEM. Zalecamy przeniesienie zastrzeżonych modułów z partycji system, 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 partycji system, ale nie może zawierać linków do innych bibliotek w tej partycji.system Natywne moduły w partycji product mogą się łączyć z dowolną biblioteką w partycji system.

  • W Androidzie 11 i nowszych partycje productvendor mogą się łączyć z bibliotekami VNDK w partycji system, ale nie mogą łączyć się z innymi bibliotekami w partycji system.

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 plikach Android.bp. Umożliwia to modułom dostawcy tworzenie linków do modułów systemowych. Biblioteki VNDK, czyli wersje bibliotek system dla dostawców, mogą też tworzyć wersje dla dostawców dla modułów dostawców poprzez zdefiniowanie vendor_available: true w plikach Android.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 bez product_available: true są niedostępne dla modułów usług.