chiark / gitweb /
sd-booted: update sd_booted() check a bit
authorLennart Poettering <lennart@poettering.net>
Fri, 15 Mar 2013 15:41:40 +0000 (16:41 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 15 Mar 2013 15:49:08 +0000 (16:49 +0100)
commit66e411811b8090d1bfd6620fc84472d83f723fa1
tree3762cd014c5bd2b0ba771661ac08975ab43a05dd
parent961e4526925b7b1e1d3582f2fc9fb38035e2b5fb
sd-booted: update sd_booted() check a bit

Previously we were testing whether /sys/fs/cgroup/systemd/ was a mount
point. This might be problematic however, when the cgroup trees are bind
mounted into a container from the host (which should be absolutely
valid), which might create the impression that the container was running
systemd, but only the host actually is.

Replace this by a check for the existance of the directory
/run/systemd/system/, which should work unconditionally, since /run can
never be a bind mount but *must* be a tmpfs on systemd systems, which is
flushed at boots. This means that data in /run always reflects
information about the current boot, and only of the local container,
which makes it the perfect choice for a check like this.

(As side effect this is nice to Ubuntu people who now use logind with
the systemd cgroup hierarchy, where the old sd_booted() check misdetects
systemd, even though they still run legacy Upstart.)
man/sd_booted.xml
src/core/mount-setup.c
src/libsystemd-daemon/sd-daemon.c