在为我的设备(12.1)使用最新版本的CM后,我决定尝试构建我的第一个ROM。所以我得到了Linux,同步来源13等等(我的设备树是here.)
在我最终构建错误之前,我不得不解决一些与音频相关的构建错误。 (如果它有任何区别,我必须恢复的所有提交都与PCM音频卸载有关。)
现在,当我尝试启动ROM时,它会立即重新启动恢复,甚至不显示启动动画。看/proc/last_kmsg
,问题似乎与SELinux有关:
...
[ 4.340084] init: (Initializing SELinux enforcing took 0.51s.)
[ 4.349071] type=1400 audit(1468237723.015:4): avc: denied { fowner } for pid=1 comm="init" capability=3 scontext=u:r:kernel:s0 tcontext=u:r:kernel:s0 tclass=capability permissive=0
[ 4.349387] init: SELinux: Could not set context for /init: Operation not permitted
[ 4.349506] init: restorecon failed: Operation not permitted
[ 4.349699] init: Security failure; rebooting into recovery mode...
[ 4.350353] SysRq : Emergency Remount R/O (triggered by init:1)
[ 4.350581] Emergency Remount complete
[ 4.350889] reboot - triggered with task: init (1:1)
...
我不熟悉SELinux,除了它使系统修改变得更加困难,但从我所看到的,包括设备特定和一般init.te
文件Android源允许init
使用fowner
功能。
我试过了:
sepolicy
域允许init
文件
permissive init;
init.te
重建整个ROM
restorecon /adb_keys
restorecon_recursive /mnt
和init.rc
EXTRA_CFLAGS += -DCONFIG_ALWAYS_ENFORCE=true
他们都没有任何区别,所以基本上,我是新鲜的想法。
我做错了什么?