Android14之Selinux报错:unknown type qemu_device at token (一百八十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:在编译Android automotive车载系统时,遇到一个这样的报错,不清楚怎么引入的,但是解法很简单,分享给大家。

2.SELinux介绍

  • Android平台的SELinux(Security Enhanced Linux)是一种基于Linux内核的安全增强技术,由美国国家安全局(NSA)发起并得到Red Hat、Tresys等公司的支持。SELinux的主要目的是在Linux操作系统上实现强制访问控制(Mandatory Access Control,MAC),以提高系统的安全性。
  • 在Android系统中,SELinux的实现称为SEAndroid。从Android 4.4版本开始,SEAndroid正式启用,为Android设备提供了更加严格的安全保障。SELinux与传统的自主访问控制(Discretionary Access Control,DAC)不同,它不仅限制了进程对资源的访问权限,还限制了进程对资源的访问方式。通过这种方式,SELinux可以有效地防止恶意程序对系统资源的滥用,提高系统的安全性。
  • SELinux在Android设备中主要有三种操作模式:禁用(Disabled)、宽容(Permissive)和强制(Enforcing)。在禁用模式下,SELinux不发挥作用,系统恢复到传统的DAC安全模型;在宽容模式下,SELinux会对违反策略的行为进行警告,但仍然允许访问资源;在强制模式下,SELinux会严格实施安全策略,对违反策略的行为进行阻止。
  • Android中的SELinux策略配置是通过.te文件来实现的。.te文件包含了SELinux的策略规则,用于定义进程、对象和权限之间的关系。例如,某个应用程序需要读取系统属性,那么就需要在相应的.te文件中添加允许规则。通过编写.te文件,开发者可以为应用程序配置所需的安全策略,以确保应用程序在运行时能够正常访问系统资源。
  • 当SELinux策略规则发生冲突时,通常需要进行特殊处理。例如,某个应用程序需要写入/proc目录下的文件,但SELinux策略中没有对应的允许规则,那么该应用程序将无法写入文件。在这种情况下,可以通过修改.te文件或使用audit2allow工具来生成相应的允许规则,以解决冲突。
  • 总之,Android平台下的SELinux是一种重要的安全技术,它通过强制访问控制策略,提高了Android设备的安全性。通过编写.te文件和合理配置SELinux策略,开发者可以确保应用程序在运行时能够安全地访问系统资源。在实际开发过程中,了解和掌握SELinux的相关知识和技术,对于保障Android应用程序的安全性具有重要意义。

3.报错解决:

<1>.报错源码

device/generic/car/emulator/usbpt/bluetooth/btusb/sepolicy/domain.te

allow domain qemu_device:chr_file rw_file_perms;

get_prop(domain, vendor_qemu_prop)
get_prop(domain, vendor_build_prop)

<2>.解决

修改一:

device/generic/car/emulator/usbpt/bluetooth/btusb/sepolicy/file.te

+ type qemu_device, dev_type, mlstrustedobject;
+ type vendor_qemu_prop, dev_type, mlstrustedobject;
+ type vendor_build_prop, dev_type, mlstrustedobject;

注意:每次编译只会出现一个报错,所以,出现一个报错,加一个type类型。

修改二:

system/sepolicy/contexts/Android.bp

//del begin
// file_contexts_test {
//     name: "plat_file_contexts_test",
//     srcs: [":plat_file_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// file_contexts_test {
//     name: "system_ext_file_contexts_test",
//     srcs: [":system_ext_file_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// file_contexts_test {
//     name: "product_file_contexts_test",
//     srcs: [":product_file_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// file_contexts_test {
//     name: "vendor_file_contexts_test",
//     srcs: [":vendor_file_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// file_contexts_test {
//     name: "odm_file_contexts_test",
//     srcs: [":odm_file_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// hwservice_contexts_test {
//     name: "plat_hwservice_contexts_test",
//     srcs: [":plat_hwservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// hwservice_contexts_test {
//     name: "system_ext_hwservice_contexts_test",
//     srcs: [":system_ext_hwservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// hwservice_contexts_test {
//     name: "product_hwservice_contexts_test",
//     srcs: [":product_hwservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// hwservice_contexts_test {
//     name: "vendor_hwservice_contexts_test",
//     srcs: [":vendor_hwservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// hwservice_contexts_test {
//     name: "odm_hwservice_contexts_test",
//     srcs: [":odm_hwservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// property_contexts_test {
//     name: "plat_property_contexts_test",
//     srcs: [":plat_property_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// property_contexts_test {
//     name: "system_ext_property_contexts_test",
//     srcs: [
//         ":plat_property_contexts",
//         ":system_ext_property_contexts",
//     ],
//     sepolicy: ":precompiled_sepolicy",
// }

// property_contexts_test {
//     name: "product_property_contexts_test",
//     srcs: [
//         ":plat_property_contexts",
//         ":system_ext_property_contexts",
//         ":product_property_contexts",
//     ],
//     sepolicy: ":precompiled_sepolicy",
// }

// property_contexts_test {
//     name: "vendor_property_contexts_test",
//     srcs: [
//         ":plat_property_contexts",
//         ":system_ext_property_contexts",
//         ":product_property_contexts",
//         ":vendor_property_contexts",
//     ],
//     sepolicy: ":precompiled_sepolicy",
// }

// property_contexts_test {
//     name: "odm_property_contexts_test",
//     srcs: [
//         ":plat_property_contexts",
//         ":system_ext_property_contexts",
//         ":product_property_contexts",
//         ":vendor_property_contexts",
//         ":odm_property_contexts",
//     ],
//     sepolicy: ":precompiled_sepolicy",
// }

// service_contexts_test {
//     name: "plat_service_contexts_test",
//     srcs: [":plat_service_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// service_contexts_test {
//     name: "system_ext_service_contexts_test",
//     srcs: [":system_ext_service_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// service_contexts_test {
//     name: "product_service_contexts_test",
//     srcs: [":product_service_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// service_contexts_test {
//     name: "vendor_service_contexts_test",
//     srcs: [":vendor_service_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// service_contexts_test {
//     name: "odm_service_contexts_test",
//     srcs: [":odm_service_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// vndservice_contexts_test {
//     name: "vndservice_contexts_test",
//     srcs: [":vndservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// fuzzer_bindings_test {
//     name: "fuzzer_bindings_test",
//     srcs: [":plat_service_contexts"],
// }
//del end

修改三:

build/make/core/main.mk

- check_missing_required_modules := true
- check_missing_required_modules := false

<3>.编译sepolicy

# make sepolicy -j20

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/374960.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CleanMyMac X 4.14.7帮您安全清理Mac系统垃圾

CleanMyMac X 4.14.7是一款强大的 Mac 清理、加速工具和健康卫士,可以让您的 Mac 再次恢复巅峰性能。 移除大型和旧文件、卸载应用,并删除浪费磁盘空间的无用数据。 5倍 更多可用磁盘空间 CleanMyMac X 4.14.7帮您安全清理Mac系统垃圾 CleanMyMac X 4.14.7一键深度扫描mac系统…

python介绍,安装Cpython解释器,IDE工具pycharm的使用

python介绍 官方的Python解释器本质是基于C语言开发的一个软件&#xff0c;该软件的功能就是读取以py.结尾的文件内容&#xff0c;然后按照Guido定义好的语法和规则去翻译并执行相应的代码。这种C实现的解释器被称为Cpython。 python解释器的种类&#xff1a;Jython IPyth…

java数据结构与算法刷题-----LeetCode198. 打家劫舍

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…

第6节、T型加减速转动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本章介绍步进电机T型加减速的控制方法&#xff0c;分三个小节&#xff0c;本小节主要内容为该控制方法的推导与计算。目前各平台对该控制方法介绍的文章目前较多&#xff0c;但部分关键参数并未给出推导…

莉莉与神奇花朵的冒险

现在&#xff0c;我将根据这些步骤编写一个对话形式的童话故事。 在很久很久以前的一个小村庄里&#xff0c;有一个勤劳善良的小女孩叫莉莉。她住在一间小茅屋里&#xff0c;和她的奶奶一起生活。奶奶年纪大了&#xff0c;行动不便&#xff0c;所以莉莉每天都要照顾她。 一天&a…

游戏开发-会飞的小鸟(已完结,附源码)

游戏开发-会飞的小鸟&#xff08;已完结&#xff0c;附源码&#xff09; 你将学到的课程链接详细介绍 你将学到的 掌握Java编程的基本技能开发出自己的“会飞的小鸟”游戏对面向对象编程有深刻的理解学会运用常见算法和数据结构解决问题能够独立调试和优化自己的代码 课程链接…

NLP_循环神经网络(RNN)

文章目录 RNN结构RNN实战RNN小结 RNN结构 NPLM 在处理长序列时会面临一些挑战。首先&#xff0c;由于它仍然是基于词的模型&#xff0c;因此在处理稀有词汇或者词汇表外的词汇时效果不佳。其次&#xff0c;NPLM不能很好地处理长距离依赖关系。而上面这两个局限&#xff0c;恰恰…

【芯片设计- RTL 数字逻辑设计入门 8 -- 四选一多路器】

文章目录 四选一多路输出器verilog case 语句verilog 代码testbench 代码仿真波形 问题小结 四选一多路输出器 制作一个四选一的多路选择器&#xff0c;要求输出定义上为线网类型 状态转换&#xff1a; d0 00 d1 01 d2 10 d3 11verilog case 语句 case(express…

蓝桥杯Web应用开发-CSS 基础语法4(字体属性、链接中的伪类、列表样式)

专栏持续更新中 字体属性 字体属性用于定义字体的类型、字号大小、加粗、斜体等方面样式。常用的字体属性如下表所示&#xff1a; 属 性可 取 值描 述fontfont-style、font-variant、font-weight、font-size&#xff08;或 line-height&#xff09;、font-family在一个声明中…

如何使用Docker部署DashDot服务器仪表盘并结合cpolar实现公网访问

&#x1f4d1;前言 本文主要是使用Docker部署DashDot服务器仪表盘并结合cpolar实现公网访问的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️** &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风…

go语言每日一练——链表篇(六)

传送门 牛客面试必刷101题—— 判断链表中是否有环 牛客面试必刷101题—— 链表中环的入口结点 题目及解析 题目一 代码 package mainimport . "nc_tools"/** type ListNode struct{* Val int* Next *ListNode* }*//**** param head ListNode类* return bool…

算法笔记刷题日记——3.简单入门模拟 3.2 查找元素

刷题日记 3.2 查找元素 B1041 B1004 B1028 B1032 A1011 A1006 A1036 错题记录 B1028 人口普查 某城镇进行人口普查&#xff0c;得到了全体居民的生日。现请你写个程序&#xff0c;找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的&#xff0c;但不一定是合理的…

网工内推 | 上市公司运维岗,红帽认证优先,带薪年假,节日福利

01 捷科智诚 招聘岗位&#xff1a;配置管理岗-运维 职责描述&#xff1a; 1.负责日常配置管理平台的维护及优化&#xff0c;包括权限管理、基线管理、版本管理、发布管理、变更管理等&#xff1b; 2.负责维护各个管理平台的用户管理、权限管理、项目初始化等工作&#xff1b; …

一些常见的电源方案

开关电源&#xff1a; RM C 板&#xff1a;&#xff08;24V电压&#xff0c;10A电流&#xff09; SMBJ30CA&#xff1a;静电和浪涌保护(TVS/ESD) 一般使用NMOS管&#xff0c;因为PMOS管导通电阻与NMOS管比较会较大 模电非基础01——从一种常见的防反接&#xff0c;上电缓启…

【深度学习理论】持续更新

文章目录 1.统计学习理论 1.统计学习理论 统计学习理论&#xff0c;一款适合零成本搞深度学习的大冤种的方向 从人类学习到机器学习的对比&#xff08;学习的过程分为归纳和演绎 &#xff09;&#xff0c;引出泛化和过拟合的概念。 如何表示归纳的函数规律呢&#xff1f;以监督…

RP2040 SPI

SPI 的库文件是arduino开源库&#xff0c;在程序中include。 SPI IIC都是通信协议【模块】&#xff0c;需要硬件支持&#xff0c;MCU都会集成相应的模块。arduino都集成在了内核中&#xff0c;直接用API函数调用即可。其他单片机的架构也是相同的。 SPI的库和函数及其相关说明…

NLP_词的向量表示Word2Vec 和 Embedding

文章目录 词向量Word2Vec&#xff1a;CBOW模型和Skip-Gram模型通过nn.Embedding来实现词嵌入Word2Vec小结 词向量 下面这张图就形象地呈现了词向量的内涵:把词转化为向量&#xff0c;从而捕捉词与词之间的语义和句法关系&#xff0c;使得具有相似含义或相关性的词语在向量空间…

2024牛客寒假算法基础集训营1——H

输入 3 4 11 1 8 1 4 1 5 1 1 4 11 5 8 1 4 1 5 1 1 4 0 2 0 0 0 3 0 4 1 输出 3 6 5 思路&#xff1a; 考虑二进制&#xff0c;有点像数位dp 本题考虑集合划分&#xff0c;累加最大值即可 代码如下&#xff1a; #include<bits/stdc.h> using namespace std;void solv…

2024三掌柜赠书活动第八期:Web3与DAO:下一代互联网演进逻辑

目录 前言关于Web3和DAO关于《Web3与DAO&#xff1a;下一代互联网演进逻辑》编辑推荐内容简介作者简介精彩书评图书目录书中前言/序言《Web3与DAO&#xff1a;下一代互联网演进逻辑》全书速览结束语 前言 随着区块链技术的崛起&#xff0c;Web3和DAO成为了当前互联网领域炙手…

【达梦数据库】使用DBeaver管理达梦数据库

使用DBeaver管理达梦数据库 Step1 安装相关程序 达梦8数据库DBeaver社区版 Step2 新建驱动 类型参数驱动名称DM8驱动类型Generic类名dm.jdbc.driver.DmDriverURL模板jdbc:dm://{host}:{port}默认端口5236默认数据库默认用户SYSDBA Step3 连接服务