[MT8766][Android12]user版本关闭selinux导致无法开机问题

开发平台基本信息

芯片: MT8766
版本: Android 12
kernel: msm-4.19

问题描述

公司的设备多数为定制类型的设备,所以,基本上都会开放root权限给到客户,而且,一般对设备安全性要求不高的,基本上都会选择关闭selinux,不然的话,每一个系统应用、服务或者bin文件,都要根据规则添加对应的selinux规则,是相当麻烦的,而且,我们正常输出给客户的版本都会是user版本;在调试Android 12的时候,一开始我是在userdebug版本上面调试的,也关闭了selinux,然后在功能调得差不多准备输出user版本测试时,发现开不了机了,一直卡在开机动画界面。

解决方法

1、user版本关闭selinux

具体解决问题的思路,可以参考MTK6771 user版本关闭 SELinux这篇文章,分析得很详细;提炼出来,要修改的地方,就是将userdebug.config参数带到user版本中,跟userdebug的一样,就可以了。

--- a/device/mediateksample/tb8766p1_bsp_1g_z400h_cbt/vnd_tb8766p1_bsp_1g_z400h_cbt.mk
+++ b/device/mediateksample/tb8766p1_bsp_1g_z400h_cbt/vnd_tb8766p1_bsp_1g_z400h_cbt.mk
@@ -31,7 +31,7 @@ ifeq ($(TARGET_BUILD_VARIANT), eng)
 KERNEL_DEFCONFIG ?= tb8766p1_bsp_1g_z400h_cbt_debug_defconfig
 endif
 ifeq ($(TARGET_BUILD_VARIANT), user)
-KERNEL_DEFCONFIG ?= tb8766p1_bsp_1g_z400h_cbt_defconfig
+KERNEL_DEFCONFIG ?= tb8766p1_bsp_1g_z400h_cbt_defconfig userdebug.config
 endif
 ifeq ($(TARGET_BUILD_VARIANT), userdebug)
 KERNEL_DEFCONFIG ?= tb8766p1_bsp_1g_z400h_cbt_defconfig userdebug.config

2、屏蔽关闭selinux之后出现的弹框

关闭selinux之后,开机会出现您的设备内部出现了问题。请联系您的设备制造商了解详情弹框,具体解决的方案,就是屏蔽那个对话框,代码如下:

--- a/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6761/src/drivers/platform.c
+++ b/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6761/src/drivers/platform.c
@@ -1506,12 +1506,12 @@ void platform_init(void)
 
 #if CFG_UART_DYNAMIC_SWITCH
     mtk_kpd_gpio_set();
-    if (mtk_detect_key(KPD_DL_KEY1)) {
-        pal_log_info("Vol Up detected. Log Keep on.\n");
-    } else {
+    // if (mtk_detect_key(KPD_DL_KEY1)) {
+        // pal_log_info("Vol Up detected. Log Keep on.\n");
+    // } else {
         pal_log_err("Log Turned Off.\n");
         set_log_switch(0);
-    }
+    // }
     BOOTING_TIME_PROFILING_LOG("UART DYNAMIC SWITCH");
 #endif

3、开机提示Your device has been unlocked and can’t be trusted

在userdebug或者去掉oem解锁后的user版本,在开机界面,每次都会出现Your device has been unlocked and can’t be trusted的提示,因为,对于AP侧来说,第一帧图片显示出来,也就是已经进入了lk界面,所以,在lk中,搜索相关的关键字,找到之后,将对应的内容注释掉即可,具体修改如下;

diff --git a/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/common/boot/vboot_state.c b/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/common/boot/vboot_state.c
index dae980d..bfe4978 100644
--- a/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/common/boot/vboot_state.c
+++ b/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/common/boot/vboot_state.c
@@ -157,9 +157,9 @@ int orange_state_warning(void)
 
        video_clean_screen();
        video_set_cursor(video_get_rows() / 2, 0);
-       video_printf("Orange State\n\n");
-       video_printf("Your device has been unlocked and can't be trusted\n");
-       video_printf("Your device will boot in 5 seconds\n");
+       /* video_printf("Orange State\n\n");                                     */
+       /* video_printf("Your device has been unlocked and can't be trusted\n"); */
+       /* video_printf("Your device will boot in 5 seconds\n");                 */
        mtk_wdt_restart();
        //mdelay(5000);
        mtk_wdt_restart();

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值