编译版本 | 编译分支 | 目标设备 | 目标代号 |
---|---|---|---|
QP1A.190711.020 | android-10.0.0_r2 | Pixel | sailfish |
1.修改/aosp/system/extras/su/su.cpp
// 注释掉第83-84行
// uid_t current_uid = getuid();
// if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "not allowed");
2.修改/aosp/system/core/libcutils/fs_config.cpp
// the following files have enhanced capabilities and ARE included
// in user builds.
// 添加下面代码至212行处,注意标点符号不要漏掉
{ 06755, AID_ROOT, AID_ROOT, 0, "system/bin/su" },
3. 修改/aosp/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
// 修改542行处,注释掉DropCapabilitiesBoundingSet方法体
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)));
// }
// }
// }
}
4. 修改/aosp/system/core/adb/daemon/main.cpp
// 修改should_drop_capabilities_bounding_set返回false
static bool should_drop_capabilities_bounding_set() {
if (ALLOW_ADBD_ROOT || is_device_unlocked()) {
if (__android_log_is_debuggable()) {
return false;
}
}
// return true;
return false;
}
5. 修改/aosp/system/core/init/selinux.cpp
// 修改IsEnforcing方法返回false, 注释掉StatusFromCmdline方法
// EnforcingStatus StatusFromCmdline() {
// EnforcingStatus status = SELINUX_ENFORCING;
// import_kernel_cmdline(false,
// [&](const std::string& key, const std::string& value, bool in_qemu) {
// if (key == "androidboot.selinux" && value == "permissive") {
// status = SELINUX_PERMISSIVE;
// }
// });
// return status;
// }
bool IsEnforcing() {
// if (ALLOW_PERMISSIVE_SELINUX) {
// return StatusFromCmdline() == SELINUX_ENFORCING;
// }
// return true;
return false;
}
6. 编译系统
# 调用lunch, 选择对应设备(Pixel对应sailfish)
lunch
# 编译系统, 40个线程可能导致电脑非常卡顿
make -j40
# 编译成功生成位置:out/target/product/sailfish/
# 刷机
adb reboot bootloader
fastboot flashall -w
7. 测试root是否正常
安装RootExplorer查看是否可以挂载系统区即可
无法读写系统分区:
adb root
adb disable-verity
# 可能会要求重启
adb remount
# 出现remount succeeded,表示成功