init: import init rc scripts from file systems after mount_all
Import /{system,vendor,odm}/etc/init/... after file systems are mounted
Bug: 23186545
Change-Id: Idb0cae9773f904c0330054c8b3e31eb87b2fb7cb
diff --git a/init/builtins.cpp b/init/builtins.cpp
index e663501..97151c0 100644
--- a/init/builtins.cpp
+++ b/init/builtins.cpp
@@ -427,6 +427,19 @@
while (1) { pause(); } // never reached
}
+void import_late()
+{
+ static const std::vector<std::string> init_directories = {
+ "/system/etc/init",
+ "/vendor/etc/init",
+ "/odm/etc/init"
+ };
+
+ for (const auto& dir : init_directories) {
+ init_parse_config(dir.c_str());
+ }
+}
+
/*
* This function might request a reboot, in which case it will
* not return.
@@ -478,6 +491,8 @@
return -1;
}
+ import_late();
+
if (ret == FS_MGR_MNTALL_DEV_NEEDS_ENCRYPTION) {
property_set("vold.decrypt", "trigger_encryption");
} else if (ret == FS_MGR_MNTALL_DEV_MIGHT_BE_ENCRYPTED) {