X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fmain.c;h=2c91fe4578e7c8f7c98d37b5eb72c2b84a89fca0;hb=f556ea46f61bc883d5a7a01b8b55b37b5b9efffb;hp=51253c66c878a09273660f473793d092333d27d3;hpb=5192bd1945f59254b3d260ded15dd9f2b8cc2de7;p=elogind.git diff --git a/src/main.c b/src/main.c index 51253c66c..2c91fe457 100644 --- a/src/main.c +++ b/src/main.c @@ -38,7 +38,6 @@ #include "hostname-setup.h" #include "loopback-setup.h" #include "kmod-setup.h" -#include "modprobe-setup.h" #include "load-fragment.h" #include "fdset.h" #include "special.h" @@ -63,7 +62,6 @@ static bool arg_dump_core = true; static bool arg_crash_shell = false; static int arg_crash_chvt = -1; static bool arg_confirm_spawn = false; -static bool arg_nomodules = false; static bool arg_show_status = true; static bool arg_sysv_console = true; @@ -335,10 +333,7 @@ static int parse_proc_cmdline_word(const char *word) { "systemd.log_color=0|1 Highlight important log messages\n" "systemd.log_location=0|1 Include code location in log messages\n"); - } else if (streq(word, "nomodules")) - arg_nomodules = true; - - else if (streq(word, "quiet")) { + } if (streq(word, "quiet")) { arg_show_status = false; arg_sysv_console = false; } else { @@ -856,7 +851,6 @@ fail: int main(int argc, char *argv[]) { Manager *m = NULL; - Unit *target = NULL; int r, retval = 1; FDSet *fds = NULL; bool reexecute = false; @@ -975,20 +969,13 @@ int main(int argc, char *argv[]) { log_full(arg_running_as == MANAGER_SYSTEM ? LOG_INFO : LOG_DEBUG, PACKAGE_STRING " running in %s mode. (" SYSTEMD_FEATURES ")", manager_running_as_to_string(arg_running_as)); - if (arg_running_as == MANAGER_SYSTEM) { + if (arg_running_as == MANAGER_SYSTEM && !serialization) { + if (arg_show_status) + status_welcome(); - /* Disable nscd, to avoid deadlocks when systemd uses - * NSS and the nscd socket is maintained by us. */ - nss_disable_nscd(); - - if (!serialization) { - if (arg_show_status) - status_welcome(); - modprobe_setup(arg_nomodules); - kmod_setup(); - hostname_setup(); - loopback_setup(); - } + kmod_setup(); + hostname_setup(); + loopback_setup(); } if ((r = manager_new(arg_running_as, &m)) < 0) { @@ -1016,6 +1003,7 @@ int main(int argc, char *argv[]) { serialization = NULL; } else { DBusError error; + Unit *target = NULL; dbus_error_init(&error); @@ -1024,12 +1012,19 @@ int main(int argc, char *argv[]) { if ((r = manager_load_unit(m, arg_default_unit, NULL, &error, &target)) < 0) { log_error("Failed to load default target: %s", bus_error(&error, r)); dbus_error_free(&error); + } else if (target->meta.load_state != UNIT_LOADED) + log_error("Failed to load default target: %s", strerror(-target->meta.load_error)); + if (!target || target->meta.load_state != UNIT_LOADED) { log_info("Trying to load rescue target..."); + if ((r = manager_load_unit(m, SPECIAL_RESCUE_TARGET, NULL, &error, &target)) < 0) { log_error("Failed to load rescue target: %s", bus_error(&error, r)); dbus_error_free(&error); goto finish; + } else if (target->meta.load_state != UNIT_LOADED) { + log_error("Failed to load rescue target: %s", strerror(-target->meta.load_error)); + goto finish; } }