Przegląd

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 partycji vendor, system lub dtb (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 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 obsługujące bezproblemowe aktualizacje mogą przechowywać obrazy przywracania jako pliki pamięci RAM zawarte w obrazie boot lub init_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 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 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 partycji vendor_dlkm (a nie w partycji vendor) umożliwia aktualizowanie modułów jądra bez aktualizowania partycji vendor.

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

Układ partycji na Androida

Rysunek 1. Układ partycji w Androidzie 11

  • Single System Image (SSI) (pojedynczy obraz systemu). nowy obraz koncepcyjny zawierający obrazy systemsystem_ext; Gdy te partycje są wspólne dla zestawu urządzeń docelowych, mogą one korzystać z SSI i pomijać tworzenie obrazów system i system_ext.

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

    • 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 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 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 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 również tworzyć warianty dostawcy, definiując vendor_available: true w plikach Android.bp. Dzięki temu moduły dostawcy mogą łączyć się z modułami systemowymi. Biblioteki VNDK, które są wariantami dostawców bibliotek system, mogą też tworzyć warianty dostawców dla modułów dostawcy, definiując vendor_available: true w plikach Android.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 atrybutu product_available: true są niedostępne w modułach usług.