0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Purple Pi OH Android11 ROOT方法

sXx1_industio 来源:深圳触觉智能 2023-06-25 09:49 次阅读

前言

为了让应用程序可以直接调用su执行系统命令和获取root权限,本文基于Purple Pi OH主板的Android SDK,介绍如果修改和编译一个root版本的Android11系统,以下为sdk源码修改方法。

Purple Pi OH作为一款兼容树莓派的开源主板,采用瑞芯微RK3566 (Cortex-A55) 四核64位超强CPU,主频最高达1.8 GHz,算力高达1Tops,支持INT8/INT16,支持TensorFlow/MXNet/PyTorch/Caffe框架,多路视频输出和输入,支持4K、H.265/H.264视频解码,接口丰富。

玩法丰富,支持OpenHarmony、Ubuntu、Debian、Android等多种系统,提供丰富开源资料

产品规格书:Purple Pi OH 产品手册

9dab5998-101a-11ee-962d-dac502259ad0.png9dcc4342-101a-11ee-962d-dac502259ad0.png

关闭selinux

device/rockchip/common/BoardConfig.mk

diff --git a/device/rockchip/common/BoardConfig.mkb/device/rockchip/common/BoardConfig.mk
indexe03c54f6a0..4fc6dc9868 100755
--- a/device/rockchip/common/BoardConfig.mk
+++ b/device/rockchip/common/BoardConfig.mk
@@ -59,7+59,7@@ BOARD_BOOT_HEADER_VERSION ?= 2
BOARD_MKBOOTIMG_ARGS :=
BOARD_PREBUILT_DTBOIMAGE ?= $(TARGET_DEVICE_DIR)/dtbo.img
BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE ?= false
-BOARD_SELINUX_ENFORCING ?= true
+BOARD_SELINUX_ENFORCING ?= false

# Use the non-open-sourceparts, ifthey're present

注释用户组权限检测

system/extras/su/su.cpp

diff --git a/system/extras/su/su.cpp b/system/extras/su/su.cpp
index 1a1ab6bf40..af3d2a68c7 100644
--- a/system/extras/su/su.cpp
+++ b/system/extras/su/su.cpp
@@ -80,8+80,8@@ voidextract_uidgids(constchar* uidgids, uid_t* uid, gid_t* gid, gid_t* gids, i
}

intmain(intargc, char** argv){
- uid_tcurrent_uid = getuid();
- if(current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "not allowed");
+ //uid_t current_uid = getuid();
+ //if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "not allowed");

// Handle -h and --help.
++argv;
给su文件默认授予root权限

system/core/libcutils/fs_config.cpp

diff --git a/system/core/libcutils/fs_config.cpp b/system/core/libcutils/fs_config.cpp
index 5805a4d19b..92e93e76ff 100644
--- a/system/core/libcutils/fs_config.cpp
+++ b/system/core/libcutils/fs_config.cpp
@@ -188,7+188,7@@ staticconststructfs_path_configandroid_files[] = {
// the following two files are INTENTIONALLY set-uid, but they
// are NOT included on user builds.
{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/procmem"},
- { 04750, AID_ROOT, AID_SHELL, 0, "system/xbin/su"},
+ { 06755, AID_ROOT, AID_SHELL, 0, "system/xbin/su"},

// the following files have enhanced capabilities and ARE included
// in user builds.

frameworks/base/core/jni/com_android_internal_os_Zygote.cpp

diff --git a/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp b/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
index 9eede83e21..d161e6fad3 100644
--- a/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
+++ b/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
@@ -656,7+656,7@@ staticvoidEnableKeepCapabilities(fail_fn_t fail_fn) {
}

staticvoidDropCapabilitiesBoundingSet(fail_fn_t fail_fn) {
- for(inti = 0; prctl(PR_CAPBSET_READ, i, 0, 0, 0) >= 0; i++) {;
+/* for (int i = 0; prctl(PR_CAPBSET_READ, i, 0, 0, 0) >= 0; i++) {;
if (prctl(PR_CAPBSET_DROP, i, 0, 0, 0) == -1) {
if (errno == EINVAL) {
ALOGE("prctl(PR_CAPBSET_DROP) failed with EINVAL. Please verify "
@@ -665,7 +665,7 @@ static void DropCapabilitiesBoundingSet(fail_fn_t fail_fn) {
fail_fn(CREATE_ERROR("prctl(PR_CAPBSET_DROP, %d) failed: %s", i, strerror(errno)));
}
}
- }
+ }*/
}

kernel/security/commoncap.c

diff --git a/kernel/security/commoncap.c b/kernel/security/commoncap.c
index 876cfe01d9..ce87b1b780 100644
--- a/kernel/security/commoncap.c
+++ b/kernel/security/commoncap.c
@@ -1166,12+1166,12@@ intcap_task_setnice(struct task_struct *p, intnice)
staticintcap_prctl_drop(unsignedlongcap)
{
structcred*new;
-
+/*
if (!ns_capable(current_user_ns(), CAP_SETPCAP))
return -EPERM;
if (!cap_valid(cap))
return -EINVAL;
-
+*/
new= prepare_creds();
if(!new)
return-ENOMEM;
编译镜像

修改后需要重新编译内核和AOSP,Android编译需要选择rk3566_r-userdebug版本

sourcebuild/envsetup.sh
lunch rk3566_r-userdebug
检测验证root是否成功

可在应用程序中调用 /system/xbin/su来测试系统是否root成功

publicstaticvoidRootCommand() {
Process process = null;
try{
process = Runtime.getRuntime().exec("/system/xbin/su");
process.waitFor();
} catch(IOException | InterruptedException e) {
e.printStackTrace();
} finally{
if(process != null) {
process.destroy();
}
}
}

root的系统可正常执行,而非root的系统会提示没有权限

java.io.IOException: Cannot run program "/system/xbin/su": error=13, Permission denied

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3935

    浏览量

    127339
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10854

    浏览量

    211574
  • 主板
    +关注

    关注

    53

    文章

    1875

    浏览量

    70764
  • root
    +关注

    关注

    1

    文章

    86

    浏览量

    21388
  • 树莓派
    +关注

    关注

    116

    文章

    1706

    浏览量

    105607

原文标题:【技术分享】Purple Pi OH Android11 ROOT 方法

文章出处:【微信号:industio,微信公众号:深圳触觉智能】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【触觉智能 Purple Pi OH 开发板体验】+1、开箱体验

    感谢eefans和厂家的板卡体验活动,有幸体验Purple Pi OH 开发板,对标树莓派4B的一款国产开发板!
    的头像 发表于 07-23 14:03 1725次阅读
    【触觉智能 <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 开发板体验】+1、开箱体验

    【触觉智能 Purple Pi OH 开发板体验】+ 熟悉PurplePiOH编译固件

    Purple Pi OH 开发板的鸿蒙使用体验。熟悉了软硬件环境,烧写固件。搭建了固件开发环境,但固件编译出现错误,期待共同解决问题。
    的头像 发表于 07-26 16:01 1748次阅读
    【触觉智能 <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 开发板体验】+ 熟悉PurplePiOH编译固件

    【触觉智能 Purple Pi OH 开发板体验】+2、烧录debian固件体验

    厂家为Purple Pi OH 提供了多种系统。
    的头像 发表于 07-27 09:05 1088次阅读
    【触觉智能 <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 开发板体验】+2、烧录debian固件体验

    请问是否有关于Android11平台默认开放root权限的文档?

    请问是否有关于Android11 平台默认开放root权限的文档,我们需要用u盘手机替换ko文件
    发表于 04-17 08:21

    [触觉智能 Purple Pi OH开发板体验] 二.RK3566运行Android11

    给的已经很详细了。3.进入升级模式 Purple-Pi-OH主板升级模式有Loader和MaskRom两种,需要先进入到升级模式,才可以给主板烧写固件。进入Loader模式有硬件和软件两种方法
    发表于 08-07 08:26

    【触觉智能 Purple Pi OH 开发板体验】检测Android系统的完备性

    Purple Pi OH运行Android11,性能稳定,该有的硬件外设接口资源,检测均未发现异常。并能兼容安装第三方apk软件,如果能在功耗、散热性上再做优化,将会给RK3566带
    发表于 09-10 17:23

    Purple Pi OH开源主板通过 OpenHarmony 兼容性测评

    Purple Pi OH Purple Pi OH作为一款兼容树莓派的开源主板,采用RK3566
    的头像 发表于 04-10 09:40 842次阅读
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>开源主板通过 OpenHarmony 兼容性测评

    Purple Pi OH Android11 ROOT方法

    为了让应用程序可以直接调用su执行系统命令和获取root权限,本文基于Purple Pi OH主板的Android SDK,介绍如果修改和编
    的头像 发表于 06-30 14:59 656次阅读
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> <b class='flag-5'>Android11</b> <b class='flag-5'>ROOT</b><b class='flag-5'>方法</b>

    Purple Pi OH 开发板体验:固件开发+应用开发

    触觉智能 Purple Pi OH 开发板体验的开发环境,介绍了设备端和应用端的基本知识点
    的头像 发表于 08-04 10:52 854次阅读
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 开发板体验:固件开发+应用开发

    Purple Pi OH 开发板体验:应用开发的问题

    本文使用触觉智能 Purple Pi OH 开发板开发鸿蒙应用,遇到问题并解决一部分,目前codelab中的工程都可以在板卡上运行了,有些没有效果尚待差错。
    的头像 发表于 08-11 19:17 676次阅读
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 开发板体验:应用开发的问题

    Purple Pi OH Android11 ROOT 方法

    前言为了让应用程序可以直接调用su执行系统命令和获取root权限,本文基于PurplePiOH主板的AndroidSDK,介绍如果修改和编译一个root版本的Android11系统,以
    的头像 发表于 08-04 08:40 1041次阅读
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> <b class='flag-5'>Android11</b> <b class='flag-5'>ROOT</b> <b class='flag-5'>方法</b>

    【触觉智能 Purple Pi OH 开发板体验】+ 两款Purple Pi的对比

    先前曾使用过Purple Pi,此次又见到了Purple Pi OH,就对这两款产品进行简单的对比。
    的头像 发表于 08-17 10:11 1627次阅读
    【触觉智能 <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 开发板体验】+ 两款<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b>的对比

    瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法

    本文适用于触觉智能所有支持Android11系统的开发板修改第三方输入法为默认输入法。本次使用的是触觉智能的Purple Pi OH鸿蒙开源主板,搭载了瑞芯微RK3566芯片,类树莓派
    的头像 发表于 09-24 09:43 426次阅读
    瑞芯微RK3566鸿蒙开发板<b class='flag-5'>Android11</b>修改第三方输入法为默认输入法

    瑞芯微RK3566/RK3568 Android11使用OTA升级固件方法,深圳触觉智能鸿蒙开发板演示,备战第九届华为ICT大赛

    本文介绍瑞芯微RK3566/RK3568在Android11系统OTA升级固件方法,使用触觉智能的Purple Pi OH鸿蒙开发板演示,搭
    的头像 发表于 10-12 11:57 461次阅读
    瑞芯微RK3566/RK3568 <b class='flag-5'>Android11</b>使用OTA升级固件<b class='flag-5'>方法</b>,深圳触觉智能鸿蒙开发板演示,备战第九届华为ICT大赛

    瑞芯微RK3566/RK3568 Android11下该如何默认屏蔽导航栏/状态栏?看这篇文章就懂了

    本文介绍瑞芯微RK3566/RK3568在Android11系统默认屏蔽导航栏/状态栏方法,触觉智能的Purple Pi OH鸿蒙开发板演示
    的头像 发表于 10-30 18:26 427次阅读
    瑞芯微RK3566/RK3568 <b class='flag-5'>Android11</b>下该如何默认屏蔽导航栏/状态栏?看这篇文章就懂了