• 迅为IMX8mm开发板Andaoid9 获取root 权限


     

    IMX8mm开发板

     

     

    默认的安卓 9 不支持获取 root,烧写默认的安卓 9 镜像启动之后,默认已经打开了 adb 调试功能,不需要我们再进行配置:

    首先我们打开我们在

    iTOP-i.MX8MM 开发板\02-i.MX8MM 开发板网盘资料汇总(不含光盘内容)\09

    Aondroid 系统开发资料\02 Android9 获取 root 权限”目录下的 adb 的终端,输入以下命令

    adb.exe devices

    来查看是否能检测到我们对应的设备,如下图所示:

     

    由于我们还未配置获取 root 权限,所以我们输入adb.exe root”,会发现 adb 终端会卡住,然后在开 发板的串口控制台打印如下信息,同时也会卡住,

    为了能获取 root 权限,我们需要对源码进行部分修改(为了方便起见,我们已经将配置好的镜像放在

    iTOP-i.MX8MM 开发板\02-i.MX8MM 开发板网盘资料汇总(不含光盘内容)\09 Aondroid 系统开发资料\02 Android9 获取 root 权限\root”路径下)可以直接使用我们提供好的镜像。

    首先我们进入 ubuntu 虚拟机,进入我们提供的安卓 9 源码,如下图所示:

     

    然后使用以下命令,进入 su.cpp 文件,对 83、84 行内容进行注释,修改完成之后如下图所示:

    vim system/extras/su/su.cpp

    保存退出之后,使用以下命令,进入 fs_config.cpp 文件,

    vim system/core/libcutils/fs_config.cpp

    然后在 177 行添加以下内容

    { 06755, AID_ROOT,

    AID_ROOT,

    0, "system/bin/su" },

    添加完成如下图所示:

     

    保存退出之后,使用以下命令,进入 com_android_internal_os_Zygote.cpp 文件,

    vim frameworks/base/core/jni/com_android_internal_os_Zygote.cpp

    注释掉 DropCapabilitiesBoundingSet 方法体(注意这里的 return true 不能注释),

    保存退出之后,使用以下命令,进入 main.cpp 文件,

    vim system/core/adb/daemon/main.cpp

    注释掉方法体 should_drop_capabilities_bounding_set 中的 return true,然后添加 return false,修改完成 之后如下图所示:

     

    保存退出之后,使用以下命令,进入 selinux.cpp 文件,

    vim system/core/init/selinux.cpp

    首先注释掉 StatusFromCmdline 方法,

    修改 IsEnforcing 方法返回 false, 保存退出,返回安卓 9 源码目录下,使用命令

    ./create.sh”,进行编译,

    编译完成之后,将out/result”目录下的镜像通过烧写章节烧写进开发板。

    烧写完成之后继续使用命令adb.exe root”,如下图所示。这一次并不会卡顿,但是有可能需要重启开发板,然后重新使用命令。

     

    然后我们使用adb disable-verity”命令,会报“Device is locked. Please unlock the device first”提示,

    根据提示信息,我们需要对设备进行解锁,首先我们进入开发者选项,打开 OEM 解锁(允许解锁引导加载程序),具体步骤如下:

    1 开发板启动以后,进入 Android 系统,我们在屏幕上可以看到 Android 系统的界面,

     

    2 上滑解锁,进入应用程序界面,如下图所示:

     

    3 我们点击“设置”软件,打开如下图所示

     

    4 然后点击“系统”后,如下图所示:

     

    5 然后点击“关于平板电脑”,点击后,如下图所示:

     

    6 然后找到“版本号”,连续点击版本号十次,如下图所示:

     

    7 之后便可以进入开发者模式了,返回到“系统”的目录,点击“高级”,如下图所示:

     

    8 我们可以看到“开发者选项”的目录,我们点击进入,如下图所示:

     

    OEM 是默认打开的。

    然后我们在 adb 终端输入adb.exe reboot bootloader”命令

    开发板串口控制台会卡在以下地点,我们在这里需要手动重启开发板。

    重启开发板之后,会进入 fastboot 模式,

    然后我们打开电脑的设备管理器,可以看到我们的 otg 设备当前为 USB download gadget ,

    该设备是用来进行烧写镜像的,而在这里我们要用到的为 ADB 设备,所以我们需要对该设备进行更新, 首先,右击 USB download gadget 设备,选择更新驱动程序,进入以下界面,然后我们选择第二个选项浏览我的电脑以查找驱动程序:

    选择进入之后如下图所示,然后我们选择下方选项。让我从计算机上可用的应用程序列表中选取:

    之后会进入以下界面,我们选择 ROMaster ADB interface,然后点击下一步 最后会弹出以下,安装完成界面,

    至此我们的 otg 设备已经成功设置为了 ADB 设备了,返回设备管理器,可以看到相应的 ADB 设备,

    然后我们返回 adb 控制台,输入

    fastboot flashing unlock”命令

    至此我们的设备锁就解开了,然后我们再次手动重启开发板,等待启动完成。回到 adb 终端输入以下 命令:

    输入以下命令,

    adb root

    adb disable-verity

    adb reboot (该命令可能最后需要手动重启来执行)

    adb root

    adb remount

    adb shell "mount -o remount,rw /system"

    SuperSU 是一个管理 ROOT 授权的软件。可以对所有请求 ROOT 权限的软件进行管理,避免 ROOT

    权被滥用。我们输入以下命令安装 SuperSU.apk

    adb push SuperSU-v2.79-201612051815/common/Superuser.apk /system/app/SuperSU/SuperSU.apk

    adb shell chmod 0644 /system/app/SuperSU/SuperSU.apk

    adb shell chcon u:object_r:system_file:s0 /system/app/SuperSU/SuperSU.apk

    输入以下命令拷贝 install-recovery.sh

    adb push SuperSU-v2.79-201612051815/common/install-recovery.sh /system/bin/install-recovery.sh

    adb shell chmod 0755 /system/bin/install-recovery.sh

    adb shell chcon u:object_r:toolbox_exec:s0 /system/bin/install-recovery.sh

    install-recovery.sh 脚本的内容如下:

    #!/system/bin/sh

    # If you're implementing this in a custom kernel/firmware,

    # I suggest you use a different script name, and add a service

    # to launch it from init.rc

    # Launches SuperSU in daemon mode only on Android 4.3+.

    # Nothing will happen on 4.2.x or older, unless SELinux+Enforcing.

    # If you want to force loading the daemon, use "--daemon" instead

    /system/xbin/daemonsu --daemon &

    # Some apps like to run stuff from this script as well, that will

    # obviously break root - in your code, just search this file

    # for "install-recovery-2.sh", and if present, write there instead.

    输入以下命令拷贝二进制文件 su,

    adb push SuperSU-v2.79-201612051815/arm64/su /system/xbin/su

    adb shell chmod 0755 /system/xbin/su

    adb push SuperSU-v2.79-201612051815/arm64/su /system/xbin/daemonsu

    adb shell chmod 0755 /system/xbin/daemonsu

    adb shell chcon u:object_r:system_file:s0 /system/xbin/daemonsu

    输入以下命令拷贝文件,

    adb push SuperSU-v2.79-201612051815/arm64/supolicy /system/xbin/supolicy

    adb shell chmod 0755 /system/xbin/supolicy

    adb shell chcon u:object_r:system_file:s0 /system/xbin/supolicy

    输入以下命令拷贝库文件,adb push SuperSU-v2.79-201612051815/arm64/libsupol.so /system/lib64/libsupol.so

    adb shell chmod 0755 /system/lib64/libsupol.so

    adb shell chcon u:object_r:system_file:s0 /system/lib64/libsupol.so

    输入以下命令安装

    Superuser”apk root 检测 apk,

    adb install SuperSU-v2.79-201612051815/common/Superuser.apk

    adb install rootchecker.paid-2.1.apk

    重新启动 Android 系统,

    打开刚刚安装的

    SuperSu”APP,

    退出软件之后,打开刚刚安装的Root 检查工具APP,点击“检查”按钮,如下图所示:

     

    点击“授权”,如下图所示:

     

    如下图所示,发现已经获得 root 权限。

     

  • 相关阅读:
    【分享】浅析Quora的技术架构 狼人:
    【观点】在苹果公司学到的编程技巧 狼人:
    【观点】工作效率上的错觉 狼人:
    提高编程技巧的十大方法 狼人:
    微软推出IE10第二个平台预览版 狼人:
    读取文件将 Excel 文件 转换成 CSV 文件 解决方案
    组合生成组合的生成之生成下一个组合 By ACReaper
    二叉树遍历二叉树的实现及先序、中序、后序遍历
    图片切换[置顶] 送大家几款可以运用到实际项目的flash+xml控件
    动画效果程序员的最高境界就是能够参加全球DEMO大赛
  • 原文地址:https://www.cnblogs.com/topeet/p/16111341.html
Copyright © 2020-2023  润新知