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

这篇具有很好参考价值的文章主要介绍了Android14之Selinux报错:unknown type qemu_device at token (一百八十三)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

line 1

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文章来源地址https://www.toymoban.com/news/detail-839418.html

- check_missing_required_modules := true
- check_missing_required_modules := false

<3>.编译sepolicy

# make sepolicy -j20

到了这里,关于Android14之Selinux报错:unknown type qemu_device at token (一百八十三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • android10系统手机获取IMSI报错:The user 10116 does not meet the requirements to access device identifiers

    最近在项目调试中,获取手机的IMSI,IMEI等信息,发现在Android10以下系统的设备上正常,但是在Android10以上系统的设备上报错:The user 10116 does not meet the requirements to access device identifiers 出现该问题的原因如下: Android 10(API 级别 29)起,您的应用必须是设备,或者个人资料所

    2024年02月13日
    浏览(47)
  • Python 错误 ValueError: Unknown Label Type: ‘continuous‘

    本文将解决 Python 中出现 ValueError: Unknown label type: ‘continuous’ 错误的原因和解决方案。 当我们尝试在连续目标变量上训练 sklearn 导入的分类器时,Python 解释器会抛出此错误。 K 最近邻、决策树、逻辑回归等分类器预测输入变量的类别。 类变量采用离散或分类形式,例如 0

    2024年02月11日
    浏览(41)
  • Expected one of xxx device type 解决方法

    出错代码: DEVICE = torch.device(‘gpu’ if torch.cuda.is_available() else ‘cpu’) 报错信息: RuntimeError: Expected one of cpu, cuda, xpu, mkldnn, opengl, opencl, ideep, hip, ve, ort, mlc, xla, lazy, vulkan, meta, hpu device type at start of device string: gpu 原理 无法识别“gpu”这个字符串,只能识别“cpu, cuda, xpu, mkldnn

    2024年02月13日
    浏览(51)
  • Android SELinux 权限相关问题

    问题 再做OTA的时候,需要zip包放在data/ota_package下,再操作的时候,报错如下 提取 scontext: system_app tcontext: ota_package_file tclass: file denied: write 翻译过来就是 system_app 对于ota_package_file 目录缺少write 权限 我们只需要android/device/qcom/sepolicy_vndr/generic/vendor/common/目录下 的syste

    2023年04月08日
    浏览(37)
  • Windows+Qt5.14.2+android x86配置与处理adb报错

    资源下载 可在部分国内镜像源下载Qt5.14.2:Index of /qt/archive/qt/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 其他工具 android studio:下载 Android Studio 和应用工具 - Android 开发者  |  Android Developers sdk manager 、ndk、java 安装过程 根据qt5.14.2自助选择需要安装的anroid组件等、vs2

    2024年01月20日
    浏览(42)
  • Android高通8.1 Selinux问题

    1、最近客户提了一个需求,说要在user版本上面切分辨率,默认屏幕分辨率是 2.5 k 执行adb shell指令之后变成 4k 然后adb shell wm size可以查看 2、一开始我能想到就是在文件节点添加权限,这里不管是mtk还是qcom(高通平台)或者其他的,我首先能想到在device/目录下 init.xxx.rc文件中

    2024年02月13日
    浏览(44)
  • android studio构建项目报错Could not create an instance of type com.android.build.api.variant.impl.Applicat

    Could not create an instance of type com.android.build.api.variant.impl.ApplicationVariantImpl 这个错误通常是由于Gradle插件版本不兼容导致的。你可能正在使用的Gradle插件版本与你的Android Studio版本不兼容。 要解决这个问题,你可以尝试以下解决方法: 在你的项目的build.gradle文件中,将com.andro

    2024年02月01日
    浏览(48)
  • NVIDIA显卡BUG解决 Unable to determine the device handle for GPU 0000:02:00.0: Unknown Error

    实验室去年到今年断了几次电,然后服务器上的2080Ti一直就感觉有点小毛病。属于是被折磨了几个月了。 然后前两周断电后,显卡就基本上完全用不了了,经常服务器开机都会失败。并且 就算服务器开机成功过后,没有几分钟显卡就会自己关掉 刚刚开机一切都很正常 但是没

    2024年02月03日
    浏览(83)
  • Android 修改 SELinux avc 权限的方法

    系统版本:Android 11.0     平         台:RK3568 在 Android 系统的开发及适配过程中,我们常常需要对 SELinux avc  权限进行修改,以下是我对 SELinux avc  权限修改总结的方法。 一、验证功能是否存在 selinux 权限问题 #进入Android终端 adb shell #获取root权限 su #查看系统当前 s

    2024年02月09日
    浏览(38)
  • MTK Android设置setprop的selinux权限

    自定义了个SystemProperties的属性,需要在system应用中修改它,介绍MTK及展锐的设置方法,可扩展到其他平台. 比如代码中要这么设置 默认会引发selinux无权限的报错. 修改方法是在对应的.te中添加对应的属性,注意不同的平台属性及修改目录可能不一样,比如展锐的与MTK的就

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包