summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dbus-manager.c16
-rw-r--r--src/main.c25
2 files changed, 30 insertions, 11 deletions
diff --git a/src/dbus-manager.c b/src/dbus-manager.c
index a2a25b72ff..92a602219b 100644
--- a/src/dbus-manager.c
+++ b/src/dbus-manager.c
@@ -20,6 +20,7 @@
***/
#include <errno.h>
+#include <unistd.h>
#include "dbus.h"
#include "log.h"
@@ -224,16 +225,17 @@ static int bus_manager_append_tainted(Manager *m, DBusMessageIter *i, const char
assert(property);
if (m->taint_usr)
- e = stpcpy(e, "usr-separate-fs");
+ e = stpcpy(e, "usr-separate-fs ");
- if (readlink_malloc("/etc/mtab", &p) < 0) {
- if (e != buf)
- e = stpcpy(e, " ");
- e = stpcpy(e, "etc-mtab-not-symlink");
- } else
+ if (readlink_malloc("/etc/mtab", &p) < 0)
+ e = stpcpy(e, "etc-mtab-not-symlink ");
+ else
free(p);
- t = buf;
+ if (access("/proc/cgroups", F_OK) < 0)
+ e = stpcpy(e, "cgroups-missing ");
+
+ t = strstrip(buf);
if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &t))
return -ENOMEM;
diff --git a/src/main.c b/src/main.c
index 8d27eb4266..176a4f5ecb 100644
--- a/src/main.c
+++ b/src/main.c
@@ -985,10 +985,26 @@ static void test_usr(void) {
/* Check that /usr is not a separate fs */
- if (dir_is_empty("/usr") > 0)
- log_warning("/usr appears to be on a different file system than /. This is not supported anymore. "
- "Some things will probably break (sometimes even silently) in mysterious ways. "
- "Consult http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken for more information.");
+ if (dir_is_empty("/usr") <= 0)
+ return;
+
+ log_warning("/usr appears to be on a different file system than /. This is not supported anymore. "
+ "Some things will probably break (sometimes even silently) in mysterious ways. "
+ "Consult http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken for more information.");
+}
+
+static void test_cgroups(void) {
+
+ if (access("/proc/cgroups", F_OK) >= 0)
+ return;
+
+ log_warning("CONFIG_CGROUPS was not set when your kernel was compiled. "
+ "Systems without control groups are not supported. "
+ "We will now sleep for 10s, and then continue boot-up. "
+ "Expect breakage and please do not file bugs. "
+ "Instead fix your kernel and enable CONFIG_CGROUPS." );
+
+ sleep(10);
}
int main(int argc, char *argv[]) {
@@ -1171,6 +1187,7 @@ int main(int argc, char *argv[]) {
test_mtab();
test_usr();
+ test_cgroups();
}
if ((r = manager_new(arg_running_as, &m)) < 0) {