MTK摄像头Android驱动新版本升级指南


MTK摄像头的驱动包含有kernel部分和hal层2个部分,在Android版本升级之后,内核版本也进行了升级,在旧版本往新版本移植的过程中,要注意以下几个部分:

Continue reading "MTK摄像头Android驱动新版本升级指南"

Fixed集:function declaration isn’t a prototype


在 Android 8.1 系统中集成新的摄像头驱动后,编译是出现如下错误:

function declaration isn’t a prototype [-Werror=strict-prototypes]

经查发现是有部分的函数参数为空,未使用void关键字,增加void关键字后,编译通过。

MTK 平台如何在 user 版本打开串口打印信息



串口打印作为常用的调试方法,在解决系统死机和各种设备问题时十分有效,通常是在eng版本的时候才有完整的打印信息,若是在量产阶段或者 user 版本时没有串口通常无法有效分析问题。
因此,在user版本中打开打印,作为分析问题的方法十分有效,下面记录一下 MTK 平台在 user 版本打开串口打印信息的2种方法:
Continue reading "MTK 平台如何在 user 版本打开串口打印信息"

MTK 平台 NVRAM 分区修改及应用解析--双logo切换


apple and android 以前在4.4系统上做个一个关于双开机logo的切换的需求,现在把一些当时的技术细节记录如下,以做后续参考:

Continue reading "MTK 平台 NVRAM 分区修改及应用解析--双logo切换"

SELinux简介


 LOCK

一、 SELinux 来源

        SELinux 即Security-Enhanced Linux, 由美国国家安全局(NSA)发起, Secure Computing Corporation (SCC) 和 MITRE 直接参与开发, 以及 很多研究机构(如犹他大学)一起参与的强制性安全审查机制, 该系统最初是作为一款通用访问软件,发布于 2000 年 12 月(代码采用 GPL 许可发布)。并在Linux Kernel 2.6 版本后, 有直接整合进入SELinux, 搭建在Linux Security Module(LSM)基础上, 目前已经成为最受欢迎,使用
最广泛的安全方案.

二、SELinux 基本架构与原理

       SELinux 是典型的MAC-Mandatory Access Controls 实现, 对系统中每个对象都生成一个安全上下文(Security Context),每一个对象访问系 统的资源都要进行安全上下文审查。审查的规则包括类型强制检测(type enforcement), 多层安全审查(Multi-Level Security), 以及基于角色 的访问控制(RBAC: Role Based Access Control)。

SELinux 搭建在Linux Security Module(LSM)基础上, 关于 LSM 架构的详细描述请参见文章 《 Linux Security Modules: General Security Support for the Linux Kernel 》,该文章在 2002 年的 USENIX Security 会议上发表。有完整的实现LSM 的所有hook function 。

SELinux 的整体结构如下图所示:

selinux框架

SELinux 包含五个基本组成:

  • 用于处理文件系统的辅助模块, 即SELinuxFS
  • 集成Linux Security Modules 的hooks sets
  • Security Policy Database
  • Security Label 验证模块
  • Access Vector Cache (AVC), 访问向量缓存,以便提高验证速度

基本的访问流程如下图所示:

访问流程图

流程如下:

  • 进程通过系统调用(System Call) 访问某个资源, 进入Kernel 后, 先会做基本的检测, 如果异常则直接返回
  • Linux Kernel DAC 审查, 如果异常则直接返回
  • 调用Linux Kernel Modules 的相关hooks, 对接到SELinux 的hooks, 进而进行MAC 验证, 如果异常则直接返回
  • 访问真正的系统资源
  • 返回用户态, 将结构反馈