问题描述
在刷入自定义ROM后,发现SELinux默认设置为Permissive模式而非Enforcing模式。使用adb shell setenforce 1
可以使SELinux变为强制模式,但重启后会自动恢复为Permissive模式。
解决方案
注意:此操作涉及对系统文件进行修改,可能会影响系统的稳定性和安全性,请谨慎操作,并确保备份重要数据。
方案1:修改内核启动参数
步骤1:检查当前内核启动参数
cat /proc/cmdline
查看输出结果中是否包含androidboot.selinux=permissive
参数。
步骤2:修改内核启动参数
为了使SELinux在每次启动时都处于强制模式,需要从内核启动参数中移除androidboot.selinux=permissive
。具体操作如下:
- 拆分boot.img
使用工具如AIK(Android Image Key)或MagiskBoot进行拆包操作。具体操作步骤可以参考以下链接: - AIK
-
编辑boot.img
打开拆包后的boot.img文件,找到并修改内核启动参数,移除androidboot.selinux=permissive
参数。 -
重新打包boot.img
修改完成后,重新打包boot.img文件。 -
刷写boot.img
使用fastboot工具刷写新的boot.img文件到设备中:
shell
fastboot flash boot boot.img
步骤3:验证更改
重启设备后,再次使用cat /proc/cmdline
命令检查内核启动参数,确认已经移除了androidboot.selinux=permissive
参数。然后使用setenforce 1
命令使SELinux变为强制模式,确保其不会自动恢复为Permissive模式。
方案2:使用Kernel Selinux Patcher
如果不想手动拆包和打包boot.img文件,可以尝试使用Kernel Selinux Patcher工具。该工具可以帮助用户直接修改内核启动参数,使其在每次启动时都处于强制模式。
-
下载并安装Kernel Selinux Patcher
访问Kernel Selinux Patcher GitHub页面下载并安装该工具。 -
使用Kernel Selinux Patcher修改启动参数
按照工具的指引,修改内核启动参数,移除androidboot.selinux=permissive
参数。 -
刷写修改后的boot.img
完成修改后,按照上述步骤刷写新的boot.img文件到设备中。
注意事项
- 在执行上述操作之前,请确保您已经备份了重要的数据,以防万一出现意外情况。
- 自定义ROM通常为
userdebug
构建,可能缺少完整的策略文件,因此在修改内核启动参数后,务必确保设备上有正确的sepolicy
文件,否则可能导致设备进入启动循环。 - 如果不熟悉这些操作,建议寻求专业人士的帮助。