#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));