• 正文
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

RK3562編譯Android13 ROOT固件教程,觸覺(jué)智能開(kāi)發(fā)板演示

01/08 09:30
1427
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

本文介紹編譯Android13 ROOT權(quán)限固件的方法,觸覺(jué)智能RK3562開(kāi)發(fā)板演示,搭載4核A53處理器,主頻高達(dá)2.0GHz;內(nèi)置獨(dú)立1Tops算力NPU,可應(yīng)用于物聯(lián)網(wǎng)網(wǎng)關(guān)、平板電腦智能家居、教育電子、工業(yè)顯示與控制等行業(yè)。

關(guān)閉selinux

修改此文件("+"號(hào)為修改內(nèi)容)

device/rockchip/common/BoardConfig.mk

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

注釋用戶(hù)組權(quán)限檢測(cè)

修改此文件("+"號(hào)為修改內(nèi)容)

system/extras/su/su.cpp

void extract_uidgids(const char* uidgids, uid_t* uid, gid_t*
gid, gid_t* gids, i
}
int main(int argc, char** argv) {
- uid_t current_uid = getuid();
- if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "notallowed");
+ //uid_t current_uid = getuid();
+ //if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "notallowed");

給su文件默認(rèn)授予root權(quán)限

修改此文件("+"號(hào)為修改內(nèi)容)

system/core/libcutils/fs_config.cpp

static const struct fs_path_config android_dirs[] = {
     { 00751, AID_ROOT,         AID_SHELL,        0, "system/bin" },
     { 00755, AID_ROOT,         AID_ROOT,         0, "system/etc/ppp" },
     { 00755, AID_ROOT,         AID_SHELL,        0, "system/vendor" },
-    { 00750, AID_ROOT,         AID_SHELL,        0, "system/xbin" },
+    { 00755, AID_ROOT,         AID_SHELL,        0, "system/xbin" },
     { 00751, AID_ROOT,         AID_SHELL,        0, "system/apex/*/bin" },
     { 00751, AID_ROOT,         AID_SHELL,        0, "system_ext/bin" },
     { 00751, AID_ROOT,         AID_SHELL,        0, "system_ext/apex/*/bin" },
static const struct fs_path_config android_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" },

然后修改此文件("+"號(hào)為修改內(nèi)容)

frameworks/base/core/jni/com_android_internal_os_Zygote.cpp

static void DropCapabilitiesBoundingSet(fail_fn_t fail_fn) {
+/*
  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 "
              "your kernel is compiled with file capabilities support");
      } else {
        fail_fn(CREATE_ERROR("prctl(PR_CAPBSET_DROP, %d) failed: %s", i, strerror(errno)));
      }
    }
  }
+ */
}

最后修改此文件("+"號(hào)為修改內(nèi)容)

kernel-5.10/security/commoncap.c

int cap_task_setnice(struct task_struct *p, int nice)
static int cap_prctl_drop(unsigned long cap)
{
    struct cred *new;
+/*
    if (!ns_capable(current_user_ns(), CAP_SETPCAP))
    return -EPERM;
    if (!cap_valid(cap))
    return -EINVAL;
-
+*/
new = prepare_creds();

源碼編譯并驗(yàn)證固件是否ROOT

修改完上面三個(gè)步驟的文件后,重新編譯內(nèi)核和安卓源碼,執(zhí)行以下命令:

# make -j4

下載RootChecker測(cè)試APK軟件包(自行下載),可通過(guò)ADB命令或者U盤(pán)安裝,安裝后按照提示點(diǎn)擊按鈕檢查root。

root成功如圖:

產(chǎn)品簡(jiǎn)介

觸覺(jué)智能RK3562開(kāi)發(fā)板(型號(hào)EVB3562),基于瑞芯微新一代Soc RK3562/RK3562J設(shè)計(jì),可用于輕量級(jí)人工智能應(yīng)用。EVB3562開(kāi)發(fā)板配備了PCIe2.1/USB3.0 OTG/千兆網(wǎng)口等各類(lèi)型接口,支持4G/5G通信、多攝像頭及多種視頻接口,可應(yīng)用于物聯(lián)網(wǎng)網(wǎng)關(guān)、平板電腦、智能家居、教育電子、工業(yè)顯示、工業(yè)控制等行業(yè)領(lǐng)域。

  • 搭載瑞芯微新一代RK3562/RK3562J芯片
  • 1TOPS算力NPU,支持INT8/INT16/FP16
  • 等數(shù)據(jù)類(lèi)型運(yùn)算;
  • 支持4K@30FPS與1080P@60FPS視頻解碼;
  • 13M ISP,支持HDR與多路攝像頭視頻采集;
  • 單路MIPI-DSI,最高2048 x 1080@60fps ;
  • 單通道LVDS,最高1366 x 768@60fps ;
  • 三路獨(dú)立的以太網(wǎng)口,其中兩路千兆網(wǎng)口,
  • 一路百兆網(wǎng)口;
  • 支持5G/4G/WiFi/藍(lán)牙無(wú)線通信;
  • 支持Android,Linux操作系統(tǒng);

相關(guān)推薦