From: Yu Watanabe Date: Wed, 9 May 2018 08:06:46 +0000 (+0900) Subject: bus-util: print a friendly message when PID1 is not systemd X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=f2062b93c88f7849cf5b14b7bc03f3ff126a26ce;p=elogind.git bus-util: print a friendly message when PID1 is not systemd Follow-up for 861f16d2679eeda79e8185057cef24653913e300. Fixes #8913. --- diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c index 7263593ac..52f8432fc 100644 --- a/src/shared/bus-util.c +++ b/src/shared/bus-util.c @@ -1307,10 +1307,16 @@ int bus_connect_transport(BusTransport transport, const char *host, bool user, s #if 0 /// elogind does not support a user bus if (user) r = sd_bus_default_user(&bus); - else #endif // 0 - 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 elogind as init system (PID 1). Can't operate."); + return -EHOSTDOWN; + } + r = sd_bus_default_system(&bus); + } break; case BUS_TRANSPORT_REMOTE: @@ -1352,9 +1358,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: