imx8mm開(kāi)發(fā)板
默認(rèn)的安卓 9 不支持獲取 root,燒寫(xiě)默認(rèn)的安卓 9 鏡像啟動(dòng)之后,默認(rèn)已經(jīng)打開(kāi)了 adb 調(diào)試功能,不需要我們?cè)龠M(jìn)行配置:
首先我們打開(kāi)我們?cè)凇?/p>
iTOP-i.MX8MM 開(kāi)發(fā)板\02-i.MX8MM 開(kāi)發(fā)板網(wǎng)盤(pán)資料匯總(不含光盤(pán)內(nèi)容)\09
Aondroid 系統(tǒng)開(kāi)發(fā)資料\02 Android9 獲取 root 權(quán)限”目錄下的 adb 的終端,輸入以下命令
adb.exe devices
來(lái)查看是否能檢測(cè)到我們對(duì)應(yīng)的設(shè)備,如下圖所示:
由于我們還未配置獲取 root 權(quán)限,所以我們輸入“adb.exe root”,會(huì)發(fā)現(xiàn) adb 終端會(huì)卡住,然后在開(kāi) 發(fā)板的串口控制臺(tái)打印如下信息,同時(shí)也會(huì)卡住,
為了能獲取 root 權(quán)限,我們需要對(duì)源碼進(jìn)行部分修改(為了方便起見(jiàn),我們已經(jīng)將配置好的鏡像放在 “
iTOP-i.MX8MM 開(kāi)發(fā)板\02-i.MX8MM 開(kāi)發(fā)板網(wǎng)盤(pán)資料匯總(不含光盤(pán)內(nèi)容)\09 Aondroid 系統(tǒng)開(kāi)發(fā)資料\02 Android9 獲取 root 權(quán)限\root”路徑下)可以直接使用我們提供好的鏡像。
首先我們進(jìn)入 ubuntu 虛擬機(jī),進(jìn)入我們提供的安卓 9 源碼,如下圖所示:
然后使用以下命令,進(jìn)入 su.cpp 文件,對(duì) 83、84 行內(nèi)容進(jìn)行注釋?zhuān)薷耐瓿芍笕缦聢D所示:
vim system/extras/su/su.cpp
保存退出之后,使用以下命令,進(jìn)入 fs_config.cpp 文件,
vim system/core/libcutils/fs_config.cpp
然后在 177 行添加以下內(nèi)容
{ 06755, AID_ROOT,
AID_ROOT,
0, "system/bin/su" },
添加完成如下圖所示:
保存退出之后,使用以下命令,進(jìn)入 com_android_internal_os_Zygote.cpp 文件,
vim frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
注釋掉 DropCapabilitiesBoundingSet 方法體(注意這里的 return true 不能注釋?zhuān)?/p>
保存退出之后,使用以下命令,進(jìn)入 main.cpp 文件,
vim system/core/adb/daemon/main.cpp
注釋掉方法體 should_drop_capabilities_bounding_set 中的 return true,然后添加 return false,修改完成 之后如下圖所示:
保存退出之后,使用以下命令,進(jìn)入 selinux.cpp 文件,
vim system/core/init/selinux.cpp
首先注釋掉 StatusFromCmdline 方法,
修改 IsEnforcing 方法返回 false, 保存退出,返回安卓 9 源碼目錄下,使用命令“
./create.sh”,進(jìn)行編譯,
編譯完成之后,將“out/result”目錄下的鏡像通過(guò)燒寫(xiě)章節(jié)燒寫(xiě)進(jìn)開(kāi)發(fā)板。
燒寫(xiě)完成之后繼續(xù)使用命令“adb.exe root”,如下圖所示。這一次并不會(huì)卡頓,但是有可能需要重啟開(kāi)發(fā)板,然后重新使用命令。
然后我們使用“adb disable-verity”命令,會(huì)報(bào)“Device is locked. Please unlock the device first”提示,
根據(jù)提示信息,我們需要對(duì)設(shè)備進(jìn)行解鎖,首先我們進(jìn)入開(kāi)發(fā)者選項(xiàng),打開(kāi) OEM 解鎖(允許解鎖引導(dǎo)加載程序),具體步驟如下:
1 開(kāi)發(fā)板啟動(dòng)以后,進(jìn)入 Android 系統(tǒng),我們?cè)谄聊簧峡梢钥吹?Android 系統(tǒng)的界面,
2 上滑解鎖,進(jìn)入應(yīng)用程序界面,如下圖所示:
3 我們點(diǎn)擊“設(shè)置”軟件,打開(kāi)如下圖所示
4 然后點(diǎn)擊“系統(tǒng)”后,如下圖所示:
5 然后點(diǎn)擊“關(guān)于平板電腦”,點(diǎn)擊后,如下圖所示:
6 然后找到“版本號(hào)”,連續(xù)點(diǎn)擊版本號(hào)十次,如下圖所示:
7 之后便可以進(jìn)入開(kāi)發(fā)者模式了,返回到“系統(tǒng)”的目錄,點(diǎn)擊“高級(jí)”,如下圖所示:
8 我們可以看到“開(kāi)發(fā)者選項(xiàng)”的目錄,我們點(diǎn)擊進(jìn)入,如下圖所示:
OEM 是默認(rèn)打開(kāi)的。
然后我們?cè)?adb 終端輸入“adb.exe reboot bootloader”命令
開(kāi)發(fā)板串口控制臺(tái)會(huì)卡在以下地點(diǎn),我們?cè)谶@里需要手動(dòng)重啟開(kāi)發(fā)板。
重啟開(kāi)發(fā)板之后,會(huì)進(jìn)入 fastboot 模式,
然后我們打開(kāi)電腦的設(shè)備管理器,可以看到我們的 otg 設(shè)備當(dāng)前為 USB download gadget ,
該設(shè)備是用來(lái)進(jìn)行燒寫(xiě)鏡像的,而在這里我們要用到的為 ADB 設(shè)備,所以我們需要對(duì)該設(shè)備進(jìn)行更新, 首先,右擊 USB download gadget 設(shè)備,選擇更新驅(qū)動(dòng)程序,進(jìn)入以下界面,然后我們選擇第二個(gè)選項(xiàng)瀏覽我的電腦以查找驅(qū)動(dòng)程序:
選擇進(jìn)入之后如下圖所示,然后我們選擇下方選項(xiàng)。讓我從計(jì)算機(jī)上可用的應(yīng)用程序列表中選?。?/p>
之后會(huì)進(jìn)入以下界面,我們選擇 ROMaster ADB interface,然后點(diǎn)擊下一步 最后會(huì)彈出以下,安裝完成界面,
至此我們的 otg 設(shè)備已經(jīng)成功設(shè)置為了 ADB 設(shè)備了,返回設(shè)備管理器,可以看到相應(yīng)的 ADB 設(shè)備,
然后我們返回 adb 控制臺(tái),輸入“
fastboot flashing unlock”命令
至此我們的設(shè)備鎖就解開(kāi)了,然后我們?cè)俅问謩?dòng)重啟開(kāi)發(fā)板,等待啟動(dòng)完成?;氐?adb 終端輸入以下 命令:
輸入以下命令,
adb root
adb disable-verity
adb reboot (該命令可能最后需要手動(dòng)重啟來(lái)執(zhí)行)
adb root
adb remount
adb shell "mount -o remount,rw /system"
SuperSU 是一個(gè)管理 ROOT 授權(quán)的軟件??梢詫?duì)所有請(qǐng)求 ROOT 權(quán)限的軟件進(jìn)行管理,避免 ROOT 授
權(quán)被濫用。我們輸入以下命令安裝 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 腳本的內(nèi)容如下:
#!/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.
輸入以下命令拷貝二進(jìn)制文件 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
輸入以下命令拷貝庫(kù)文件,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 檢測(cè) apk,
adb install SuperSU-v2.79-201612051815/common/Superuser.apk
adb install rootchecker.paid-2.1.apk
重新啟動(dòng) Android 系統(tǒng),
打開(kāi)剛剛安裝的“
SuperSu”APP,
退出軟件之后,打開(kāi)剛剛安裝的“Root 檢查工具”APP,點(diǎn)擊“檢查”按鈕,如下圖所示:
點(diǎn)擊“授權(quán)”,如下圖所示:
如下圖所示,發(fā)現(xiàn)已經(jīng)獲得 root 權(quán)限。
-
Android
+關(guān)注
關(guān)注
12文章
3917瀏覽量
127037
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論