diff --git a/init/first_stage_init.cpp b/init/first_stage_init.cpp index 5cde1671b..78e5b60a1 100644 --- a/init/first_stage_init.cpp +++ b/init/first_stage_init.cpp @@ -327,6 +327,19 @@ int FirstStageMain(int argc, char** argv) { LOG(INFO) << "Copied ramdisk prop to " << dest; } + // If "/force_debuggable" is present, the second-stage init will use a userdebug + // sepolicy and load adb_debug.prop to allow adb root, if the device is unlocked. + if (access("/force_debuggable", F_OK) == 0) { + std::error_code ec; // to invoke the overloaded copy_file() that won't throw. + if (!fs::copy_file("/adb_debug.prop", kDebugRamdiskProp, ec) || + !fs::copy_file("/userdebug_plat_sepolicy.cil", kDebugRamdiskSEPolicy, ec)) { + LOG(ERROR) << "Failed to setup debug ramdisk"; + } else { + // setenv for second-stage init to read above kDebugRamdisk* files. + setenv("INIT_FORCE_DEBUGGABLE", "true", 1); + } + } + if (ForceNormalBoot(cmdline, bootconfig)) { mkdir("/first_stage_ramdisk", 0755); // SwitchRoot() must be called with a mount point as the target, so we bind mount the @@ -337,28 +350,6 @@ int FirstStageMain(int argc, char** argv) { SwitchRoot("/first_stage_ramdisk"); } - std::string force_debuggable("/force_debuggable"); - std::string adb_debug_prop("/adb_debug.prop"); - std::string userdebug_sepolicy("/userdebug_plat_sepolicy.cil"); - if (IsRecoveryMode()) { - // Update these file paths since we didn't switch root - force_debuggable.insert(0, "/first_stage_ramdisk"); - adb_debug_prop.insert(0, "/first_stage_ramdisk"); - userdebug_sepolicy.insert(0, "/first_stage_ramdisk"); - } - // If this file is present, the second-stage init will use a userdebug sepolicy - // and load adb_debug.prop to allow adb root, if the device is unlocked. - if (access(force_debuggable.c_str(), F_OK) == 0) { - std::error_code ec; // to invoke the overloaded copy_file() that won't throw. - if (!fs::copy_file(adb_debug_prop, kDebugRamdiskProp, ec) || - !fs::copy_file(userdebug_sepolicy, kDebugRamdiskSEPolicy, ec)) { - LOG(ERROR) << "Failed to setup debug ramdisk"; - } else { - // setenv for second-stage init to read above kDebugRamdisk* files. - setenv("INIT_FORCE_DEBUGGABLE", "true", 1); - } - } - if (!DoFirstStageMount(!created_devices)) { LOG(FATAL) << "Failed to mount required partitions early ..."; }