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

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

3天内不再提示

Purple Pi OH Android11 ROOT 方法

触觉智能 2023-08-04 08:40 次阅读

前言

为了让应用程序可以直接调用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 产品手册

88afcecc-325f-11ee-bbcf-dac502259ad0.png88ed18cc-325f-11ee-bbcf-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

    文章

    3947

    浏览量

    128428
  • 主板
    +关注

    关注

    53

    文章

    1991

    浏览量

    71812
  • root
    +关注

    关注

    1

    文章

    86

    浏览量

    21457
收藏 人收藏

    相关推荐

    Android11修改摄像头前后置方法,触觉智能RK3568开发板演示

    本文介绍在Android11系统下,修改摄像头前后置属性的方法。使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持
    的头像 发表于 11-28 18:40 309次阅读
    <b class='flag-5'>Android11</b>修改摄像头前后置<b class='flag-5'>方法</b>,触觉智能RK3568开发板演示

    Android11修改摄像头前后置方法,触觉智能RK3568开发板演示

    本文介绍在Android11系统下,修改摄像头前后置属性的方法。使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Andr
    的头像 发表于 11-28 15:25 71次阅读
    <b class='flag-5'>Android11</b>修改摄像头前后置<b class='flag-5'>方法</b>,触觉智能RK3568开发板演示

    OpenHarmony属性信息怎么修改?触觉智能RK3566鸿蒙开发板来演示

    本文介绍开源鸿蒙OpenHarmony系统下,修改产品属性信息的方法,触觉智能Purple Pi OH鸿蒙开发板演示,已适配全新OpenHarmony5.0 Release系统!
    的头像 发表于 11-27 09:31 309次阅读
    OpenHarmony属性信息怎么修改?触觉智能RK3566鸿蒙开发板来演示

    如何在开源鸿蒙OpenHarmony开启SELinux模式?RK3566鸿蒙开发板演示

    本文介绍开源鸿蒙OpenHarmony系统下,开启/关闭SELinux权限的方法,触觉智能Purple Pi OH鸿蒙开发板演示,已适配全新OpenHarmony5.0 Release
    的头像 发表于 11-18 19:03 505次阅读
    如何在开源鸿蒙OpenHarmony开启SELinux模式?RK3566鸿蒙开发板演示

    OpenHamrony4.0去除锁屏是一种什么体验?触觉智能给你支支招

    本文介绍开源鸿蒙OpenHarmony 4.0系统下,去除锁屏开机后直接进入界面的方法,触觉智能Purple Pi OH鸿蒙开发板演示,已适配全新OpenHarmony5.0 Rele
    的头像 发表于 11-13 10:37 384次阅读
    OpenHamrony4.0去除锁屏是一种什么体验?触觉智能给你支支招

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

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

    触觉智能Purple Pi OH鸿蒙开发板成功适配OpenHarmony5.0 Release,开启新征程

    触觉智能Purple Pi OH鸿蒙开发板,成功适配OpenHarmony5.0 Release版本!为大家带来OpenHarmony5.0特性讲解!关注触觉智能,为大家带来更多OpenHarmony5.0功能体验介绍!
    的头像 发表于 10-25 10:51 583次阅读
    触觉智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>鸿蒙开发板成功适配OpenHarmony5.0 Release,开启新征程

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

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

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

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

    瑞芯微RK3566鸿蒙开发板Ubuntu虚拟机环境搭建教程,触觉智能Purple Pi OH主板

    本文适用于Ubuntu虚拟机环境搭建教程学习,设备为触觉智能开发的瑞芯微RK3566开发板,型号Purple Pi OH。是Laval官方社区主荐的一款鸿蒙开发主板。支持Openharmony、安卓
    的头像 发表于 09-08 18:25 1699次阅读
    瑞芯微RK3566鸿蒙开发板Ubuntu虚拟机环境搭建教程,触觉智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>主板

    瑞芯微RK3566鸿蒙开发板Ubuntu虚拟机环境搭建教程,触觉智能Purple Pi OH主板

    本文适用于Ubuntu虚拟机环境搭建教程学习,设备为触觉智能开发的瑞芯微RK3566开发板,型号Purple Pi OH。是华为Laval官方社区主荐的一款鸿蒙开发主板。支持Openharmony、安卓
    的头像 发表于 09-05 17:47 335次阅读
    瑞芯微RK3566鸿蒙开发板Ubuntu虚拟机环境搭建教程,触觉智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>主板

    Purple Pi OHAndroid11下测试WiFi和LAN的TCP和UDP传输速率

    开源鸿蒙硬件方案领跑者触觉智能本文适用于在PurplePiOH在Andriod11下如何测试WiFi和LAN的TCP和UDP传输速率。触觉智能的PurplePiOH鸿蒙开源主板,是华为Laval官方
    的头像 发表于 07-16 08:33 719次阅读
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>在<b class='flag-5'>Android11</b>下测试WiFi和LAN的TCP和UDP传输速率

    Purple Pi OH 更改SDK的编译选项

    党,极客,工程师,极大降低了开源鸿蒙开发者的入门门槛,具有以下几点优势:支持开源鸿蒙/Linux/Andriod11/麒麟,兼容树莓派;四核A55,最高1.8G主
    的头像 发表于 07-06 08:33 383次阅读
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 更改SDK的编译选项

    Purple Pi OH又开外挂!带你搭建编译环境及编译Android 11固件

    01介绍今天的文章主题是分享与探讨关于PurplePiOH开发板Android开发之搭建编译环境及编译Android固件。如果你是刚开始接触嵌入式Linux开发,也许你会非常疑惑?为什么同样是ARM
    的头像 发表于 05-22 08:32 1416次阅读
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>又开外挂!带你搭建编译环境及编译<b class='flag-5'>Android</b> <b class='flag-5'>11</b>固件

    适合大学生的鸿蒙开发板-Purple Pi OH之安装Docker

    介绍本文基于purple-pi-oh系列主板演示Linux系统安装Docker,方法适用于RK3566全系列产品。本教程将指导你在基于RK3566的LInux系统上安装Docker。Docker是一
    的头像 发表于 05-10 08:32 704次阅读
    适合大学生的鸿蒙开发板-<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>之安装Docker