Katalogi, reguły i sepolicy

Na tej stronie znajduje się opis układu katalogu na urządzeniach z Androidem 8.0 oraz reguły VNDK i powiązane reguły sepolicy.

Układ katalogu

Zniekształcony układ katalogu składa się z tych elementów: katalogi:

  • /system/lib[64] zawiera wszystkie biblioteki współdzielone platformy, w tym biblioteki LL-NDK, VNDK oraz biblioteki oparte wyłącznie na platformie (w tym LL-NDK-Private i niektóre biblioteki o takich samych nazwach jak tych w VNDK-SP).
  • /system/lib[64]/vndk-sp zawiera biblioteki VNDK-SP dla listy HAL oparte na tym samym procesie.
  • /vendor/lib[64] zawiera biblioteki VNDK rozszerzone przez dostawcę ( biblioteki DXUA i DXUX VNDK), implementacje HAL w tym samym procesie i inne usługi biblioteki udostępnione.
  • /vendor/lib[64]/vndk-sp może zawierać biblioteki VNDK-SP rozszerzone przez dostawcy.

Moduły dostawcy ładują biblioteki VNDK z serwera /system/lib[64].

Reguły VNDK

Ta sekcja zawiera pełną listę reguł VNDK:

  • Procesy platformy nie mogą wczytywać bibliotek udostępnionych innych niż SP-HAL od dostawcy i partycji (jest egzekwowane ściśle od Androida 8.1).
  • Procesy dostawcy nie mogą wczytywać plików innych niż LL-NDK, VNDK-SP ani biblioteki inne niż VNDK z partycji systemowej. (nie jest egzekwowane w Androidzie, O, ale funkcja będzie dostępna w przyszłej wersji).
  • Zainstalowane biblioteki VNDK muszą być podzbiorem zdefiniowanej przez Google kwalifikującej się biblioteki VNDK biblioteki.
  • Zależności zewnętrzne SP-HAL i SP-HAL-Dep muszą być ograniczone do LL-NDK lub zdefiniowane przez Google biblioteki VNDK-SP.
    • Zależności biblioteki współdzielonej SP-HAL muszą być ograniczone do LL-NDK bibliotek, zdefiniowanych przez Google bibliotek VNDK-SP, innych bibliotek SP-HAL lub inne biblioteki udostępnione dostawców, które mogą być oznaczone jako SP-HAL-Dep. biblioteki.
    • Biblioteka udostępniona przez dostawcę może zostać oznaczona jako biblioteka SP-HAL-Dep tylko wtedy, gdy nie jest biblioteką AOSP, a jej zależności są ograniczone do bibliotek LL-NDK, Zdefiniowane przez Google biblioteki VNDK-SP, biblioteki SP-HAL i/lub inne biblioteki SP-HAL-Dep biblioteki.
  • VNDK-SP musi być autonomiczne. libRS_internal.so staje się wyjątkowy , ale zostaną ponownie wykorzystane w kolejnej wersji.
  • Brak komunikacji z dostawcami platformy za pomocą interfejsów innych niż HIDL, w tym segregatory, gniazda, udostępnione wspomnienia, pliki itp.
  • Rozmiar partycji systemowej musi być wystarczająco duży, by pomieścić dwie kopie wszystkich kwalifikujących się bibliotek VNDK oraz udostępniona kopia nieodpowiedniej platformy biblioteki.

Sepolicy

Procesy platformy opisane w tej sekcji odpowiadają coredomain w sepolicies, podczas gdy procesy dostawcy odpowiadają non-coredomain Na przykład /dev/binder to dostęp jest możliwy tylko w coredomain, a /dev/vndbinder może być dostępne tylko w domenach innych niż coredomain.

Podobne zasady ograniczają dostęp do bibliotek udostępnionych w systemie na partycjach dostawcy. W tabeli poniżej znajdziesz uprawnienia dostępu do udostępnionych elementów biblioteki różnych kategorii:

Kategoria Partycja Dostępne z
domeny głównej
Dostępne
spoza domeny podstawowej
LL-NDK System Y Y
LL-NDK – prywatne System Y Y
VNDK-SP/VNDK-SP-Prywatne System Y Y
VNDK-SP-wewn. Dostawca Y Y
VNDK System Y Y
VNDK-zewnętrzne Dostawca N Y
TYLKO WERSJA FWK System Y N
FWK-TYLKO-RS System Y N
SP-HAL Dostawca Y Y
SP-HAL-Dep Dostawca Y Y
TYLKO VND Dostawca N Y

LL-NDK-Private i VNDK-SP-Private muszą mieć wartość dostępne w obu domenach, ponieważ domeny inne niż coredomain nie zawsze uzyskują do nich dostęp. Natomiast SP-HAL-Dep musi być dostępny z coredomain, ponieważ bazuje na nim SP-HAL.

etykieta same_process_hal_file

Na partycji dostawcy istnieją następujące biblioteki. Udostępnij te biblioteki w coredomain i inne niż coredomain.

  • VNDK-SP-Ext w: /vendor/lib[64]/vndk-sp
  • SP-HAL w: /vendor/lib[64] lub /vendor/lib[64]/hw
  • SP-HAL-Dep za /vendor/lib[64] lub /vendor/lib[64]/hw

Wyraźnie oznacz te pliki etykietą same_process_hal_file, ponieważ wszystko w partycji vendor jest domyślnie niedostępną dla platformy coredomain. Dodaj wiersze podobne do poniżej do pliku file_contexts odpowiedniego dostawcy.

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0