bus-util: print a friendly message when PID1 is not systemd

Follow-up for 861f16d267.

Fixes #8913.
This commit is contained in:
Yu Watanabe 2018-05-09 17:06:46 +09:00
parent f7e2933677
commit fb507898a3
3 changed files with 20 additions and 12 deletions

View File

@ -120,10 +120,12 @@ struct host_info {
static int acquire_bus(sd_bus **bus, bool *use_full_bus) {
bool user = arg_scope != UNIT_FILE_SYSTEM;
int r;
if (use_full_bus && *use_full_bus) {
if (bus_connect_transport(arg_transport, arg_host, user, bus) == 0)
return 0;
r = bus_connect_transport(arg_transport, arg_host, user, bus);
if (IN_SET(r, 0, -EHOSTDOWN))
return r;
*use_full_bus = false;
}

View File

@ -1300,9 +1300,15 @@ int bus_connect_transport(BusTransport transport, const char *host, bool user, s
case BUS_TRANSPORT_LOCAL:
if (user)
r = sd_bus_default_user(&bus);
else
r = sd_bus_default_system(&bus);
else {
if (sd_booted() <= 0) {
/* Print a friendly message when the local system is actually not running systemd as PID 1. */
log_error("System has not been booted with systemd as init system (PID 1). Can't operate.");
return -EHOSTDOWN;
}
r = sd_bus_default_system(&bus);
}
break;
case BUS_TRANSPORT_REMOTE:
@ -1343,9 +1349,15 @@ int bus_connect_transport_systemd(BusTransport transport, const char *host, bool
case BUS_TRANSPORT_LOCAL:
if (user)
r = bus_connect_user_systemd(bus);
else
r = bus_connect_system_systemd(bus);
else {
if (sd_booted() <= 0) {
/* Print a friendly message when the local system is actually not running systemd as PID 1. */
log_error("System has not been booted with systemd as init system (PID 1). Can't operate.");
return -EHOSTDOWN;
}
r = bus_connect_system_systemd(bus);
}
break;
case BUS_TRANSPORT_REMOTE:

View File

@ -211,12 +211,6 @@ static int acquire_bus(BusFocus focus, sd_bus **ret) {
user = arg_scope != UNIT_FILE_SYSTEM;
if (!user && sd_booted() <= 0) {
/* Print a friendly message when the local system is actually not running systemd as PID 1. */
log_error("System has not been booted with systemd as init system (PID 1). Can't operate.");
return -EHOSTDOWN;
}
if (focus == BUS_MANAGER)
r = bus_connect_transport_systemd(arg_transport, arg_host, user, &busses[focus]);
else