• [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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    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();
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    接口自动化测试之HttpRunner测试框架
    Python + Django4 搭建个人博客(六): 数据库表和模型设计
    python打开.npy文件的常见报错及解决
    【408数据结构与算法】—希尔排序 Donald Shell(十七)
    [flume]组成|source|channel|事务|拦截器|选择器|处理器|监控器|数据丢失问题|如何保证数据的完整性
    JavaScript事件
    万字详解Spring相关组件配置原理
    C++ Reference: Standard C++ Library reference: C Library: cstdio: fwrite
    面试必备(背)-Linux八股文系列!
    H.265 视频在浏览器中的播放问题探究
  • 原文地址:https://blog.csdn.net/Hebin320320/article/details/126187336