Fix long-standing bug, runparts() should run before runlevel change

The difference between `runparts DIR` and `/etc/rc.local` is that one
should run just before the first runlevel change (to the configured
runlevel) at the end of bootstrap, whereas the other should run just
before launcing the TTYs, i.e. after all tasks in the configured
runlevel have been started.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
Joachim Nilsson
2017-12-29 20:48:47 +01:00
parent 46b253dea6
commit 2fac65becb
+10 -10
View File
@@ -270,6 +270,16 @@ static void finalize(void)
_d("Calling all network up hooks ...");
plugin_run_hooks(HOOK_NETWORK_UP);
/*
* Run startup scripts in the runparts directory, if any.
*/
if (runparts && fisdir(runparts)) {
_d("Running startup scripts in %s ...", runparts);
run_parts(runparts, NULL);
if (conf_any_change())
service_reload_dynamic();
}
/*
* Start all tasks/services in the configured runlevel
*/
@@ -285,16 +295,6 @@ static void finalize(void)
plugin_run_hooks(HOOK_SVC_UP);
service_step_all(SVC_TYPE_ANY);
/*
* Run startup scripts in the runparts directory, if any.
*/
if (runparts && fisdir(runparts)) {
_d("Running startup scripts in %s ...", runparts);
run_parts(runparts, NULL);
if (conf_any_change())
service_reload_dynamic();
}
/* Convenient SysV compat for when you just don't care ... */
if (!access(FINIT_RC_LOCAL, X_OK)) {
run_interactive(FINIT_RC_LOCAL, "Calling %s", FINIT_RC_LOCAL);