Commit 1c27d3f3 authored by Lennart Poettering's avatar Lennart Poettering
Browse files

main: properly fallback to rescue.target if default.target is hosed

parent 7f17ef22
* systemd.log_level=debug should overwrite 'quiet' ?
* implicit 'default.target' ?
systemd currently fails to boot when the link is dangling, like
after the move of the runlevel targets from /etc to /lib
* dot output for --test showing the 'initial transaction'
* check 'disable'
......
......@@ -851,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;
......@@ -1004,6 +1003,7 @@ int main(int argc, char *argv[]) {
serialization = NULL;
} else {
DBusError error;
Unit *target = NULL;
dbus_error_init(&error);
......@@ -1012,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;
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment