Przegląd

Urządzenia z Androidem zawierają kilka partycji, które pełnią różne funkcje podczas uruchamiania.

Partycje standardowe

  • partycja boot. Ta partycja zawiera obraz jądra i została utworzona za pomocą funkcji mkbootimg. Do Flasha dowolnego obrazu możesz użyć partycji wirtualnej. bezpośrednio bez dodawania nowej partycji rozruchowej. Ta partycja zawiera też ogólny dysk RAM w urządzeniach uruchomionych przed Android 13.

    • jądro. Partycja wirtualna kernel zastępuje jądro (zImage, zImage-dtb, Image.gz-dtb), zapisując nowy obraz jądra nad starym obrazu jądra. Jeśli dostarczone jądro programistyczne jest niezgodne, musisz zaktualizować partycję vendor, system lub dtb (jeśli istnieje) za pomocą i modułach jądra systemu.

    • „ramdisk”. Partycja wirtualna ramdisk zastępuje dysk RAM przez przez wpisanie nowego obrazu ramdysku na stary.

    Operacja zastąpienia określa lokalizację początkową istniejącego obrazu w eMMC i skopiuje nowe zdjęcie do tej lokalizacji. Nowy obraz (jądro lub ramdisk) może być większy niż istniejący; tworzyć przestrzeń, program rozruchowy może przenieść dane następujące po obrazie lub przerwać operację za pomocą błąd.

  • partycja init_boot. Ta partycja zawiera ogólny ramdisk dla na urządzeniach z Androidem 13 i nowszym.

  • partycja system. Ta partycja zawiera platformę Androida.

  • partycja odm. Ta partycja zawiera nazwę producenta (ODM) dostosowywanie w pakietach BSP (system-on-chip, SoC). Takie dostosowania umożliwiają zastępowanie lub dostosowywanie komponentów SoC przez ODM. modułów jądra służących do obsługi komponentów i demonów powiązanych z płytkami. Funkcje specyficzne dla ODM dotyczące warstw abstrakcji sprzętowej (HAL). Ta partycja jest opcjonalnie; zwykle zawiera on dostosowania, dzięki którym urządzenia Użyć jednego obrazu dostawcy dla wielu kodów SKU sprzętu. Szczegółowe informacje znajdziesz w artykule ODM. Partycje.

  • partycja odm_dlkm. Ta partycja jest przeznaczona do przechowywania jądra ODM modułów. przechowywanie modułów jądra ODM na partycji odm_dlkm (w przeciwieństwie do do partycji odm) umożliwia aktualizowanie modułów jądra ODM. bez aktualizowania partycji odm.

  • partycja recovery. Na tej partycji znajduje się obraz odzyskiwania, który jest uruchamiał się podczas aktualizacji OTA. Urządzenia, które obsługują płynną obsługę aktualizacje mogą przechowywać obrazy odzyskiwania jako dysk RAM znajdujący się w obrazie boot lub init_boot (a nie w osobnym ).

  • partycja cache. Ta partycja zawiera dane tymczasowe i jest opcjonalna jeśli urządzenie korzysta z płynnych aktualizacji. Partycja pamięci podręcznej nie musi być które można zapisać w programie rozruchowym, ale trzeba skasować. Partycja rozmiar zależy od typu urządzenia i dostępności miejsca na urządzeniu userdata; zwykle wystarczy 50–100 MB.

  • partycja misc. Ta partycja jest używana przez partycję przywracania i jest co najmniej 4 KB.

  • partycja userdata. Ta partycja zawiera aplikacje zainstalowane przez użytkowników oraz w tym dane dotyczące dostosowywania.

  • partycja metadata. Ta partycja służy do przechowywania metadanych klucz szyfrowania, gdy urządzenie korzysta z metadanych. szyfrowaniem. Rozmiar to co najmniej 16 MB. Nie jest zaszyfrowany, a jego dane nie mają zrzutów. Jest on usuwany podczas przywracania ustawień fabrycznych na urządzeniu. Wykorzystanie tej partycji jest ściśle ograniczony.

  • partycja vendor. Ta partycja zawiera wszystkie pliki binarne, które nie są dostępne dla AOSP. Jeśli urządzenie nie zawiera zastrzeżonych informacji, możesz pominąć tę partycję.

  • partycja vendor_dlkm. Ta partycja jest przeznaczona do przechowywania danych dostawcy i modułach jądra systemu. Przechowywanie modułów jądra dostawcy w partycji vendor_dlkm (w przeciwieństwie do partycji vendor) umożliwia aktualizację jądra systemu bez aktualizowania partycji vendor.

  • partycja radio. Ta partycja zawiera obraz radiowy i jest wymagana wyłącznie w przypadku urządzeń, które zawierają radio z oprogramowaniem radiowym dedykowanej partycji.

  • partycja tos. Ta partycja zawiera obraz binarny systemu Trusty OS i jest używane tylko wtedy, gdy urządzenie ma zainstalowane Trusty. Aby dowiedzieć się więcej, zobacz Warunki korzystania z usługi Partycje.

  • partycja pvmfw. Ta partycja przechowuje chronioną maszynę wirtualną Oprogramowanie układowe (pvmfw) to pierwszy kod, który działa w chronionych maszynach wirtualnych. Zobacz Oprogramowanie chronionej maszyny wirtualnej .

Partycje dynamiczne

Urządzenia z Androidem 11 lub nowszym obsługują dynamiczne partycje, czyli system partycjonowania przestrzeni użytkownika dla Androida, umożliwia tworzenie, zmianę rozmiaru i niszczenie partycji podczas transmisji danych bezprzewodowych (OTA) aktualizacje. Szczegółowe informacje znajdziesz w sekcji Dynamiczne partycje.

Wyznaczanie partycji krytycznych

Jeśli urządzenie wymaga do działania określonych partycji lub danych, musisz wyznaczyć te partycje lub dane jako w pełni chronione lub jako takie, które można odtworzyć, można je ponownie skompilować, udostępnić lub wyodrębnić za pomocą polecenia fastboot oem. Obejmuje to dane, takie jak ustawienia fabryczne urządzenia, numery seryjne, dane kalibracji itp.

Zmiany w Androidzie 11

Android 11 zawiera wiele zmian dotyczących partycji, w tym ograniczenia dotyczące linków do bibliotek i nowych wariantów obrazów Soong.

Układ partycji na Androida

Rysunek 1. Układ partycji w Androidzie 11

  • Jeden obraz systemu (SSI). Nowy, koncepcyjny obraz, który zawiera Obrazy: system i system_ext. Gdy te partycje są wspólne dla zestawu urządzeń docelowych, mogą one współdzielić SSI i pominąć tworzenie Obrazy: system i system_ext.

  • partycja system_ext. Nowa partycja, która może używać zasobów system i może zawierać moduły systemowe, które:

    • Rozszerz moduły systemu AOSP na partycji system. Zalecamy przesyłając takie moduły do AOSP, aby można je było zainstalować w system partycjonowanie później.

    • Połącz moduły OEM lub typowe dla SOC. Zalecamy rozłożenie takich modułów w grupę. więc można je zainstalować na partycji product lub vendor.

  • partycja system. Typowy obraz systemu używany w przypadku produktów OEM. Śr zalecamy przeniesienie modułów zastrzeżonych z partycji system przez i przekazać je do AOSP lub przez przeniesienie na partycję system_ext.

  • partycja product. Ta partycja może teraz używać dozwolonych interfejsów do instalowanie modułów dotyczących określonego produktu, które nie są dołączone do żadnego innego produktu. partycji.

Zmiany w VNDK

Vendor Native Development Kit (VNDK) to zbiór bibliotek zainstalowanych w partycji system i stworzony wyłącznie dla dostawców na wdrożenie ich HAL.

  • W Androidzie 10 i starszych wersjach partycja vendor może łączyć się z bibliotekami VNDK w partycji system, ale nie możesz połączyć jej z innymi bibliotekami w system partycji danych. Moduły natywne na partycji product mogą łączyć się z dowolną biblioteką w partycji system.

  • W Androidzie 11 i nowszych wersje product i vendor partycje mogą łączyć się z bibliotekami VNDK w partycji system, ale nie do innych bibliotek w partycji system.

Wersje produktu Soong

System kompilacji Soong używa wariantów obrazu do podziału zależności kompilacji. Moduły natywne (/build/soong/cc) mogą mutować system modułów przetwarzania do głównych wariantów i modułów przetwarzania danych dostawców w wariant dostawcy; moduł w jednym wariancie zdjęcia nie może łączyć się z innymi modułami w inną wersję obrazu.

  • W Androidzie 10 lub starszym moduł systemowy automatycznie tworzy główne wersje. Może też tworzyć warianty dostawców, definiując vendor_available: true w Android.bp plików; umożliwia to modułom dostawcy łączenie się z modułami systemowymi. Biblioteki VNDK, które są wariantami innych dostawców bibliotek system, również mogą aby utworzyć warianty dostawców dla modułów dostawców, definiując vendor_available: true w plikach Android.bp (zobacz przykład).

  • W Androidzie 11 moduł systemowy może też utworzyć wersję produktu (oprócz wersji podstawowej i dostawcy), definiując vendor_available: true.

  • W Androidzie 12 lub nowszym moduł systemu z atrybutem Oprócz podstawowej implementacji vendor_available: true tworzy wariant dostawcy wersji. Aby można było utworzyć wersję produktu, atrybut product_available: true musi mieć zdefiniowano jego definicję. Niektóre biblioteki VNDK bez identyfikatora product_available: true nie są dostępne dostępne w modułach usług.