編譯版本 | 編譯分支 | 目標設備 | 目標代號 |
---|---|---|---|
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. 編譯系統(tǒng)
# 調用lunch, 選擇對應設備(Pixel對應sailfish)
lunch
# 編譯系統(tǒng), 40個線程可能導致電腦非常卡頓
make -j40
# 編譯成功生成位置:out/target/product/sailfish/
# 刷機
adb reboot bootloader
fastboot flashall -w
7. 測試root是否正常
安裝RootExplorer查看是否可以掛載系統(tǒng)區(qū)即可
無法讀寫系統(tǒng)分區(qū):
adb root
adb disable-verity
# 可能會要求重啟
adb remount
# 出現(xiàn)remount succeeded馁龟,表示成功