Répertoires, règles et sepolicy

Cette page décrit la disposition des répertoires pour les appareils équipés d'Android 8.0 et les règles du VNDK et la sepolicy associée.

Mise en page du répertoire

La mise en page dégénérée des répertoires comprend les éléments suivants : répertoires:

  • /system/lib[64] contient toutes les bibliothèques partagées du framework. y compris les bibliothèques LL-NDK, VNDK et LL-NDK-Private et certaines bibliothèques portant les mêmes noms que dans VNDK-SP).
  • /system/lib[64]/vndk-sp contient les bibliothèques VNDK-SP pour HAL à processus identique.
  • /vendor/lib[64] contient les bibliothèques VNDK étendues par le fournisseur (soit bibliothèques DXUA ou DXUX VNDK), implémentations HAL dans le même processus et autres fournisseurs bibliothèques partagées.
  • /vendor/lib[64]/vndk-sp peut contenir les bibliothèques VNDK-SP étendues par le fournisseur.

Les modules des fournisseurs chargent les bibliothèques VNDK à partir de /system/lib[64].

Règles VNDK

Cette section fournit la liste complète des règles VNDK:

  • Les processus du framework ne doivent pas charger de bibliothèques partagées autres que SP-HAL à partir du fournisseur partitions (application stricte à partir d'Android 8.1).
  • Les processus du fournisseur ne doivent pas charger de ressources autres que LL-NDK et VNDK-SP, et non-VNDK de la partition système. (pas strictement appliquée dans Android O, mais le sera dans une prochaine version).
  • Les bibliothèques VNDK installées doivent être un sous-ensemble de VNDK éligibles définis par Google bibliothèques.
  • Les dépendances externes de SP-HAL et de SP-HAL-Dep doivent être limitées à LL-NDK ou VNDK-SP définies par Google.
    • Les dépendances d'une bibliothèque partagée SP-HAL doivent être limitées à LL-NDK bibliothèques, bibliothèques VNDK-SP définies par Google, autres bibliothèques SP-HAL et/ou bibliothèques partagées d'autres fournisseurs pouvant être étiquetées en tant que SP-HAL-Dep bibliothèques.
    • Une bibliothèque partagée de fournisseur ne peut être désignée comme bibliothèque de dépendances SP-HAL que si elle n'est pas une bibliothèque AOSP et ses dépendances sont limitées aux bibliothèques LL-NDK, Bibliothèques VNDK-SP définies par Google, bibliothèques SP-HAL et/ou autres bibliothèques de dépendances SP-HAL bibliothèques.
  • VNDK-SP doit être autonome. libRS_internal.so est spécial dans Android 8.0, mais seront réexaminés dans une prochaine version.
  • Aucune communication du framework ou du fournisseur via des interfaces non-HIDL, y compris (mais sans s'y limiter) les liaisons, les sockets, les mémoires partagées, les fichiers, etc.
  • La taille de la partition système doit être suffisamment grande pour contenir deux copies. de toutes les bibliothèques VNDK éligibles et une copie du framework non éligible partagée bibliothèques.

SEpolicy

Les processus du framework décrits dans cette section correspondent coredomain dans sepolicies, tandis que les processus des fournisseurs correspondent à non-coredomain Par exemple, /dev/binder peut être n'est accessible que dans coredomain et /dev/vndbinder accessible uniquement dans des domaines autres que coredomain.

Des règles similaires limitent l'accès aux bibliothèques partagées sur les systèmes partitions de fournisseur. Le tableau suivant indique les droits d'accès partagés bibliothèques de différentes catégories:

Catégorie Partition Accessible depuis
le domaine principal
Accessible depuis
un autre domaine que le domaine principal
LL-NDK Système O O
LL-NDK-Privé Système O O
VNDK-SP/VNDK-SP-Privé Système O O
VNDK-SP-Ext Fournisseur O O
VNDK Système O O
VNDK Ext. Fournisseur N O
FWK UNIQUEMENT Système O N
FWK-UNIQUEMENT-RS Système O N
SP-HAL Fournisseur O O
Dép. SP-HAL Fournisseur O O
VND UNIQUEMENT Fournisseur N O

LL-NDK-Private et VNDK-SP-Private doivent être accessible à partir des deux domaines, car les domaines autres que coredomain y accéder indirectement. De même, SP-HAL-Dep doit être accessible depuis coredomain, car SP-HAL s'appuie dessus.

Libellé same_process_hal_file

Les bibliothèques suivantes existent dans la partition du fournisseur. Rendre ces bibliothèques accessibles à partir des deux coredomain et non-coredomain.

  • VNDK-SP-Ext dans /vendor/lib[64]/vndk-sp
  • SP-HAL dans /vendor/lib[64] ou /vendor/lib[64]/hw
  • Dépendance SP-HAL dans /vendor/lib[64] ou /vendor/lib[64]/hw

Ajoutez explicitement le libellé same_process_hal_file à ces fichiers, car tout dans la partition vendor n'est pas accessible par défaut à coredomain. Ajouter des lignes semblables à au fichier file_contexts spécifique au fournisseur.

/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