J'ai été heureux d'utiliser Android-x86 Nougat sur mon système. Merci à tous ceux qui ont fait en sorte que cela fonctionne. J'essaie maintenant de faire un petit changement qui est que je veux exécuter un personnalisé. init
(un script shell) au démarrage.
C'est une idée simple que j'ai déjà faite sur KitKat sans problème. J'ai modifié init.rc
et j'ai ajouté un service pour lancer mon script. Mais ce qui se passe, c'est qu'au démarrage, je vois :
04-17 13:16:14.823 1210 1210 I init : type=1400 audit(0.0:6): avc: denied { execute_no_trans } for path="/system/bin/mystart" dev="loop1" ino=280 scontext=u:r:init:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=1
Cette erreur est une erreur de permission SELinux, j'ai donc essayé les solutions suivantes :
-
Désactivation de SElinux
write /sys/fs/selinux/enforce 0
J'ai vérifié que le système se mettait en mode permissif, mais au démarrage, la même erreur se produit toujours.
-
En ajoutant une politique SELinux personnalisée, j'ai ajouté :
build/target/board/generic/sepolicy/mystart.te type mystart, domain; type mystart_exec, exec_type, file_type; init_daemon_domain(mystart)
Mais cela ne permet toujours pas au service de se dérouler.
-
J'ai essayé de l'exécuter en tant que post action :
on property:dev.bootcomplete=1 exec u:r:shell:s0 shell shell input log adb sdcard_rw sdcard_r net_bt_admin net_bt inet net_bw_stats -- /system/bin/sh /system/bin/mystart
Le problème de l'avc reste le même.
Editer : Ce problème concerne un script de démarrage (et non un exécutable ELF comme dans l'autre cas) et, en outre, comme je l'ai mentionné ci-dessus, la désactivation de SELinux enforce ne permet pas au script d'être exécuté.