#include "log.h"
#include "mount-setup.h"
#include "hostname-setup.h"
+#include "loopback-setup.h"
#include "load-fragment.h"
#include "fdset.h"
return -EINVAL;
}
+ /* PID 1 will get the kernel arguments as parameters, which we
+ * ignore and unconditionally read from
+ * /proc/cmdline. However, we need to ignore those arguments
+ * here. */
+ if (running_as != MANAGER_INIT && optind < argc) {
+ log_error("Excess arguments.");
+ return -EINVAL;
+ }
+
return 0;
}
/* Reset the console, but only if this is really init and we
* are freshly booted */
- if (running_as == MANAGER_INIT)
+ if (running_as == MANAGER_INIT && action == ACTION_RUN)
console_setup(getpid() == 1 && !serialization);
/* Make sure D-Bus doesn't fiddle with the SIGPIPE handlers */
log_debug("systemd running in %s mode.", manager_running_as_to_string(running_as));
- if (running_as == MANAGER_INIT)
+ if (running_as == MANAGER_INIT) {
hostname_setup();
+ loopback_setup();
+ }
if ((r = manager_new(running_as, confirm_spawn, &m)) < 0) {
log_error("Failed to allocate manager object: %s", strerror(-r));
}
if ((r = manager_startup(m, serialization, fds)) < 0)
- log_error("Failed to fully startup daemon: %s", strerror(-r));
+ log_error("Failed to fully start up daemon: %s", strerror(-r));
if (fds) {
/* This will close all file descriptors that were opened, but
}
if (action == ACTION_TEST) {
- printf("→ By units:\n");
+ printf("-> By units:\n");
manager_dump_units(m, stdout, "\t");
}
}
if (action == ACTION_TEST) {
- printf("→ By jobs:\n");
+ printf("-> By jobs:\n");
manager_dump_jobs(m, stdout, "\t");
retval = 0;
goto finish;