Android8.x/9.x/10.x user版本关闭selinux以及打开UART控制台输入和关闭内核日志输出功能

article/2025/10/19 15:49:12

1、user版本关闭selinux
仅限于系统调试时使用,量产版本需要将其设置回去成ELINUX_ENFORCING模式。
1.1)背景

C:\Users\zhaojr>  adb root
C:\Users\zhaojr>  adb remount
C:\Users\zhaojr> adb shell
ac8257:/ # getenforce
getenforce
Enforcing

这个表明Selinux权限存在。
1.2) 开机抓取日志
抓一份开机串口log,检索SELinux
在这里插入图片描述
[ 7.085097] init: Loading SELinux policy
这句log是重点,从init可以判断这句代码是从system下面找到的。
1.3)关闭selinux

zhaojr@igentai:~/USER_MC2_20210202_AC8257/ac8257$ grep "Loading SELinux policy" ./system/core -nR
./system/core/init/selinux.cpp:373:    LOG(VERBOSE) << "Loading SELinux policy from monolithic file";
./system/core/init/selinux.cpp:390:    LOG(INFO) << "Loading SELinux policy";

在这里插入图片描述
zhaojr@igentai:~/USER_MC2_20210202_AC8257/ac8257$ vim ./system/core/init/selinux.cpp
在这里插入图片描述
所以按照以上逻辑修改如下:
system/core/init/Android.mk

diff --git a/system/core/init/Android.mk b/system/core/init/Android.mk
old mode 100644
new mode 100755
index c4a6a50..f493524
--- a/system/core/init/Android.mk
+++ b/system/core/init/Android.mk
@@ -15,6 +15,7 @@ elseinit_options += \-DALLOW_LOCAL_PROP_OVERRIDE=0 \-DALLOW_PERMISSIVE_SELINUX=0 \
+    -DSELINUX_ENFORCING_MODE=1 \-DREBOOT_BOOTLOADER_ON_PANIC=0 \-DWORLD_WRITABLE_KMSG=0 \-DDUMP_ON_UMOUNT_FAILURE=0
代码如下:
ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
init_options += \-DALLOW_LOCAL_PROP_OVERRIDE=1 \-DALLOW_PERMISSIVE_SELINUX=1 \-DREBOOT_BOOTLOADER_ON_PANIC=1 \-DWORLD_WRITABLE_KMSG=1 \-DDUMP_ON_UMOUNT_FAILURE=1
else
init_options += \-DALLOW_LOCAL_PROP_OVERRIDE=0 \-DALLOW_PERMISSIVE_SELINUX=0 \-DSELINUX_ENFORCING_MODE=1 \   //假如这行,只有在user模式编译的时候才有效-DREBOOT_BOOTLOADER_ON_PANIC=0 \-DWORLD_WRITABLE_KMSG=0 \-DDUMP_ON_UMOUNT_FAILURE=0
endif

system/core/init/selinux.cpp

bool IsEnforcing() {
#if SELINUX_ENFORCING_MODE  //SELinux is only turned off when compiling in user modereturn false;
#endif //if (ALLOW_PERMISSIVE_SELINUX) {return StatusFromCmdline() == SELINUX_ENFORCING;}return true;
}

1.4 最后进行验证

C:\Users\zhaojr>  adb root
C:\Users\zhaojr>  adb remount
C:\Users\zhaojr> adb shell
ac8257:/ # getenforce
getenforce
Permissive

2、user模式使能debug串口和控制台
2.1、修改内核命令行参数,串口使能,内核日志输出关闭
如下:
vendor/mediatek/proprietary/bootable/bootloader/lk/app/mt_boot/mt_boot.c

int boot_linux_fdt(void *kernel, unsigned *tags,unsigned machtype,void *ramdisk, unsigned ramdisk_sz)
{void *fdt = tags;int ret;int offset;char tmpbuf[TMPBUF_SIZE];dt_dram_info mem_reg_property[128];............................................if (!has_set_p2u) {switch (eBuildType) {case BUILD_TYPE_USER:if (((g_boot_mode == META_BOOT) && is_meta_log_disable &&
#ifdef LOG_STORE_SUPPORT(is_meta_log_disable() == 0)) || g_boot_arg->log_dynamic_switch)
#else(is_meta_log_disable() == 0)))
#endif{
#ifdef ATC_AOSP_ENHANCEMENTextern int in_fastavm_state(void);if (in_fastavm_state()) {cmdline_append("printk.disable_uart=1");} else {  //user模式下uart debug口uart debug口使能,内核日志关闭//cmdline_append("printk.disable_uart=0");//Turn off log information and print only error and warning letterscmdline_append("printk.disable_uart=0 loglevel=0 preset_lpj=52000");}
#elsecmdline_append("printk.disable_uart=0");
#endif}elsecmdline_append("printk.disable_uart=1");break;case BUILD_TYPE_USERDEBUG:if ((g_boot_mode == META_BOOT) && is_meta_log_disable &&
#ifdef LOG_STORE_SUPPORT(is_meta_log_disable() == 1) && (g_boot_arg->log_dynamic_switch == 0))
#else(is_meta_log_disable() == 1))
#endifcmdline_append("printk.disable_uart=1 slub_debug=O");
#ifdef LOG_STORE_SUPPORTelse if (boot_ftrace && g_boot_arg->log_dynamic_switch == 0)
#elseelse if (boot_ftrace)
#endifcmdline_append("printk.disable_uart=1 slub_debug=-");else{
#ifdef ATC_AOSP_ENHANCEMENTextern int in_fastavm_state(void);if (in_fastavm_state()) {cmdline_append("printk.disable_uart=1");} else { //userdebug模式下uart debug口使能,内核日志关闭//	cmdline_append("printk.disable_uart=0");//Turn off log information and print only error and warning letters//cmdline_append("printk.disable_uart=1 loglevel=4 preset_lpj=52000");//cmdline_append("printk.disable_uart=1 quiet preset_lpj=52000");cmdline_append("printk.disable_uart=0 loglevel=0 preset_lpj=52000");}
#elsecmdline_append("printk.disable_uart=0");
#endif}break;case BUILD_TYPE_ENG:..............................................

在这里插入图片描述
在这里插入图片描述
2.2 user模式下打开uart控制台输入
原理,在system/core/rootdir/init.rc中

service console /system/bin/shclass coreconsoledisabledroot shellgroup shell log readprocseclabel u:r:shell:s0setenv HOSTNAME consoleon property:ro.debuggable=1# Give writes to anyone for the trace folder on debug builds.# The folder is used to store method traces.chmod 0773 /data/misc/trace# Give reads to anyone for the window trace folder on debug builds.chmod 0775 /data/misc/wmtracestart console

说明当ro.debuggable=1才启动串口控制台,意思就是说在user模式编译时,ro.debuggable=0,所以控制台只有输出没有输入,根据这个原理,我们修改在user模式下将ro.debuggable=0修改成ro.debuggable=1即可,如下:
build/make/core/main.mk

ifeq (true,$(strip $(enable_target_debugging)))# Target is more debuggable and adbd is on by defaultADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1# Enable Dalvik lock contention logging.ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.lockprof.threshold=500# Include the debugging/testing OTA keys in this build.INCLUDE_TEST_OTA_KEYS := true
else # !enable_target_debugging# Target is less debuggable and adbd is off by default# ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1
endif # !enable_target_debugging

在这里插入图片描述


http://chatgpt.dhexx.cn/article/cb812Dm4.shtml

相关文章

GeForce Experience 绕过登录与禁止自动更新

本文说明了&#xff0c;如何在未注册Nvidia账户的情况下&#xff0c;绕过GeForce Experience&#xff08;以下简称为GFE&#xff09;账户登录的方法&#xff0c;从而直接使用登陆后才能使用的各种功能。在PC未联网的情况下&#xff0c;此方法依旧能正常绕过登录&#xff0c;直接…

adb shell getenforce/setenforce(三级命令)

adb shell getenforce adb shell setenforce

PyTorch官方教程(中文版)

PyTorch官方教程&#xff08;中文版&#xff09; TENSOR概述初始化向量对Tensor的操作转移存储位置到GPU张量的切片操作张量的合并操作张量乘法将单元素tensor转换为基本数据类型 与NumPy的联系tensor转numpynumpy转tensor DATASETS & DATALOADERS载入数据集迭代和可视化数…

pytorch基础教程(目标检测)

文章目录 1 python &#xff1b;两大法宝函数2 加载数据3 TensorBoard 的使用4 transforms的使用5 torchvision中的数据集使用6 dataloader的使用7 卷积操作8 卷积层9 最大池化10 非线性激活11 线性层12 Sequential的使用13 损失函数14 优化器15 现有网络模型的使用及修改16 网…

总结 | 深度学习之Pytorch入门教程

目录 一、整体学习的建议 1.1 如何成为Pytorch大神&#xff1f; 1.2 如何读Github代码&#xff1f; 1.3 代码能力太弱怎么办&#xff1f; 二、Pytorch与TensorFlow概述 2.1 什么是Pytorch? 2.1.1 Pytorch两个核心模块 2.1.2 Pytorch可视化&#xff1a;Visdom 2.1.3 Pyt…

面向Windows的Pytorch完整安装教程

目录 1. 概述 2. 安装 2.1 安装cuda 2.2 安装cudnn 2.3 安装Pytoch 2.4 验证 1. 概述 PyTorch是一个开源的Python机器学习库&#xff0c;其前身是著名的机器学习库Torch。2017年1月&#xff0c;由Facebook人工智能研究院&#xff08;FAIR&#xff09;基于Torch推出了PyT…

pytorch新手自学教程(一)

Pytorch详细新手自学教程&#xff08;一&#xff09; 前言Tensor(张量)Variable (变量) 前言 本教程参考书籍《深度学习入门之pytorch》 -----关于pytorch的优点这里不再说明&#xff0c;毕竟现在的主流仍然是TensorFlow。 1、环境配置可到pytorch官网搜索下载包的pip或conda指…

GPU版本安装Pytorch教程最新方法

目录 步骤 第一步&#xff1a;安装 Anaconda 和 Pycharm 软件 第二步&#xff1a;下载安装CUDA11.3 &#xff08;1&#xff09;首先查看自己电脑GPU版本 方式一&#xff1a;搜索框输入nvidia&#xff0c;打开nvidia控制面板 方式二&#xff1a;winR打开cmd&#xff0c;输…

pytorch官方教程中文版(一)PyTorch介绍

pytorch编程环境是1.9.1cu10.2 建议有能力的直接看官方网站英文版&#xff01; 下面所示是本次教程的主要目录&#xff1a; pytorch官方教程中文版&#xff1a; PyTorch介绍学习PyTorch图像和视频声音文本强化学习在生产环境中部署PyTorch模型使用FX重构代码前端API扩展PyT…

【PyTorch入门教程】1. 基础知识

欢迎关注 【LearnOpenCV: PyTorch入门教程】 PyTorch入门&#xff1a;Ch1 基础知识 PyTorch入门&#xff1a;[Ch2 使用预训练模型进行图像分类] PyTorch入门&#xff1a;[Ch3 使用迁移学习进行图像分类] PyTorch入门&#xff1a;[Ch4 使用ONNX和Caffe2进行模型推理] PyTorch入门…

PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】笔记

PyTorch深度学习快速入门教程&#xff08;绝对通俗易懂&#xff01;&#xff09;【小土堆】笔记 教程与代码地址P1 PyTorch环境的配置及安装&#xff08;Configuration and Installation of PyTorch)【PyTorch教程】P2 Python编辑器的选择、安装及配置&#xff08;PyCharm、Jup…

【超详细】Pytorch 入门教程(一)

Pytorch基本语法 1 认识Pytorch2 Pytorch的基本元素操作3 Pytorch的基本运算操作4 关于Torch Tensor和Numpy array之间的相互转换5 总结1 认识Pytorch 什么是Pytorch? Pytorch是一个基于Numpy的科学计算包, 向它的使用者提供了两大功能. 作为Numpy的替代者, 向用户提供使用GPU…

PyTorch安装教程(带图文)

文章目录 1.准备工作2.安装pytorch3.检验4.总结 前言 上一篇文章讲解了如何安装Anaconda,现在来安装pytorch,安装好工具就可以好好学习了。 1.准备工作 由于我安装anaconda时选择了最新版的&#xff0c;它默认安装了最新版python 3.8.5版本&#xff0c;我看网上大多数博主推荐…

Pytorch安装教程(最全最详细版)

目录 概述安装一、CUDA 安装&#xff08;一&#xff09;CUDA 概述&#xff08;二&#xff09;安装 二、Anaconda 安装三、Pytorch安装&#xff08;一&#xff09;GPU版本安装方法一方法二 &#xff08;二&#xff09;CPU版本安装 概述 PyTorch是一个开源的深度学习框架&#x…

pytorch安装教程新手入门

PyTorch环境搭建 引言 PyTorch是一个开源的Python机器学习库&#xff0c;其前身是2002年诞生于纽约大学的Torch。它是美国Facebook公司使用python语言开发的一个深度学习的框架&#xff0c;2017年1月&#xff0c;Facebook人工智能研究院&#xff08;FAIR&#xff09;在GitHub…

pytorch安装教程

大家好&#xff0c;今天我根据我在安装Pytorch过程中遇到的问题&#xff0c;来分享一下我安装Pythorch的经验。 安装pytorch大概可以分成下列四个步骤 先来了解一下什么是 Anacond。 Anacond就是可以便捷获取包且对包能够进行管理&#xff0c;同时对环境可以统一管理的发行版本…

pytorch基础入门教程/一小时学会pytorch

Pytorch一小时入门教程 前言 机器学习的门槛并没有想象中那么高&#xff0c;我会陆续把我在学习过程中看过的一些文章和写过的代码以博客的形式分享给大家&#xff0c;和大家一起交流&#xff0c;这个是本系列的第一篇&#xff0c;pytoch入门教程&#xff0c;翻译自pytoch官方…

2023最新pytorch安装教程,简单易懂,面向初学者(Anaconda+GPU)

一、前言 目前是2023.1.27,鉴于本人安装过程中踩得坑&#xff0c;安装之前我先给即将安装pytorch的各位提个醒&#xff0c;有以下几点需要注意 1.判断自己电脑是否有GPU 注意这点很重要&#xff0c;本教程面向有NVIDA显卡的电脑&#xff0c;如果你的电脑没有GPU或者使用AMD显…

pytorch超级详细的安装教程

pytorch超级详细的安装教程 第一次安装的时候安装了差不多有一整天&#xff0c;还安装失败了。这次安装的速度很快。 首先是Anaconda的下载&#xff0c;我用的是上学期学python的时候老师之前给的安装包&#xff0c;很快就安装好了&#xff0c;或者去官网去下载Anaconda也挺快…

超详细的的PyTorch安装教程,成功率高,适合初学者,亲测可用。

啰嗦几句&#xff1a;网上的教程很多&#xff0c;安装的方法多种多样&#xff0c;操作复杂&#xff0c;成功率还不高。小编在淘宝专门帮助不会安装的小伙伴远程配置环境&#xff0c;这方法都是测试过了&#xff0c;适用大部分人的&#xff0c;完全按照文章来操作&#xff0c;基…