He sido feliz usando Android-x86 Nougat en mi sistema. Gracias a todos los que han hecho que funcione. Ahora estoy tratando de hacer un pequeño cambio que es que quiero ejecutar una costumbre init
script (un script de shell) en el arranque.
Parecía una idea sencilla que he hecho antes en KitKat sin problemas. He modificado init.rc
y he añadido un servicio para iniciar mi script. Pero lo que pasa es que en el arranque, veo:
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
Ese error es un error de permisos de SELinux, así que procedí a probar estas soluciones:
-
Desactivación de SElinux
write /sys/fs/selinux/enforce 0
Y comprobado que esto hace que el sistema esté en modo permisivo pero al arrancar, sigue apareciendo el mismo error.
-
Añadiendo una política personalizada de SELinux, añadí:
build/target/board/generic/sepolicy/mystart.te type mystart, domain; type mystart_exec, exec_type, file_type; init_daemon_domain(mystart)
Pero esto sigue sin permitir que el servicio continúe.
-
Intenté ejecutarlo como una acción posterior:
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
Esto sigue dando el mismo problema de avc.
Editar: Este problema es para un script de arranque (no un ejecutable ELF como en el otro caso) y además, como mencioné anteriormente, al desactivar SELinux enforce no se permite la ejecución del script.