2016-03-29 24 views
0

Ich habe einen Daemon erstellt, kann ihn aber nicht in meinem Nexus 5 auf Marshmallow ausführen.Es ist nicht möglich, den Daemon beim Booten innerhalb von init.rc auszuführen

Nach der Code in init.rc bearbeitet

on init 
    chmod 777 /sbin/check_usb 
    chown root root /sbin/check_usb 

service disableadb /sbin/check_usb 
    class main 
    seclabel u:r:disableadb:s0 

Folgende ist meine Eintrag innerhalb init.usb.rc solchen bearbeitet, dass, wenn ein adb Verbindung erkannt wird, wird mein Daemon

on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=0 
start disableadb 
ausgeführt werden

Ich habe mein check_usb-Programm unter/sbin/system eingefügt und gewährt chmod 777 Zugriff darauf.

Allerdings merke ich das im dmesg | grep disableadb Ausgang, mein Dämon war nicht in der Lage mit dem Fehler ausgeführt werden, wie folgt:

init : cannot setexeccon ('u:r:disableadb:s0') Invalid argument 

Antwort

0

Dieser Fehler kann durch sein Problem sepolicy. Ihr neu hinzugefügter Dienst verfügt möglicherweise nicht über die korrekte Sepolicy-Konfiguration.

Fügen Sie sepolicy-Regeln hinzu. Erstellen Sie unter Dateien.

Verzeichnis erstellen device/xxx/.../sepolicy/check_usb

Im Inneren schaffen Datei file_contexts

/sbin/check_usb    u:object_r:disableadb:s0 

Datei erstellen: check_usb.te

# check_usb service 
type check_usb, domain; 
type check_usb_exec, exec_type, file_type; 

init_daemon_domain(check_usb) 

allow init check_usb:process transition; 

dieses Verzeichnis Fügen Sie in Ihrem BoardConfig.mk

BOARD_SEPOLICY_DIRS += device/xxx/.../sepolicy/check_usb