Introduction to elogind

elogind is the systemd project's "logind", extracted out to be a standalone daemon. It integrates with Linux-PAM-1.3.1 to know the set of users that are logged in to a system and whether they are logged in graphically, on the console, or remotely. Elogind exposes this information via the standard org.freedesktop.login1 D-Bus interface, as well as through the file system using systemd's standard /run/systemd layout.

This package is known to build and work properly using an LFS-9.1 platform.

Package Information

elogind Dependencies





For the tests: lxml-4.5.0, gobject-introspection-1.62.0, zsh-5.8, Valgrind-3.15.0, audit-userspace, bash-completion, kexec, and SELinux

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/elogind

Kernel Configuration

Enable the following options in the kernel configuration and recompile the kernel if necessary:

General setup --->
    [*]     Control Group support                        [CONFIG_CGROUPS]
File systems --->
    [*]     Inotify support for userspace                [CONFIG_INOTIFY_USER]
            Pseudo filesystems --->
                [*]    Tmpfs POSIX Access Control Lists  [CONFIG_TMPFS_POSIX_ACL]

In addition, some tests need the userspace cryptographic kernel API, which is enabled with:

-*- Cryptographic API --->                               [CONFIG_CRYPTO]
   <M/*> Userspace cryptographic algorithm configuration [CONFIG_CRYPTO_USER]
   <M/*> User-space interface for hash algorithms        [CONFIG_CRYPTO_USER_API_HASH]

Installation of elogind

Fix one of the tests:

sed 's/os-release/lsb-release/' -i src/test/test-copy.c

Install elogind by running the following commands:

mkdir build &&
cd    build &&

meson --prefix=/usr                        \
      --sysconfdir=/etc                    \
      --localstatedir=/var                 \
      -Dcgroup-controller=elogind          \
      -Ddbuspolicydir=/etc/dbus-1/system.d \
      -Dman=auto                           \
      ..  &&

To test the results, issue: ninja test. A few tests are skipped if not run with root privileges.

Now, as the root user:

ninja install                                           &&
ln -sfv  libelogind.pc /usr/lib/pkgconfig/libsystemd.pc &&
ln -sfvn elogind /usr/include/systemd

Command Explanations

-Dcgroup-controller=elogind: This switch ensures that elogind is selected as the cgroup controller, even if booted with another running cgroup controller.

-Ddbuspolicydir=/etc/dbus-1/system.d: This switch sets the location of the D-Bus policy directory.

-Dman=auto: The default value of this switch is false. Setting it to auto allows building and installing the man pages if the recommended dependencies are installed.

ln -s ...: These commands install symlinks so that software packages find systemd compatible library and headers.

Configuring elogind

Each user will need to register a user session using Linux-PAM at login. The /etc/pam.d/system-session file needs to be modified and a new file needs to be created in order for elogind to work correctly. Run the following commands as the root user:

cat >> /etc/pam.d/system-session << "EOF" &&
# Begin elogind addition
session  required    pam_loginuid.so
session  optional    pam_elogind.so

# End elogind addition
cat > /etc/pam.d/elogind-user << "EOF"
# Begin /etc/pam.d/elogind-user

account  required    pam_access.so
account  include     system-account

session  required    pam_env.so
session  required    pam_limits.so
session  required    pam_unix.so
session  required    pam_loginuid.so
session  optional    pam_keyinit.so force revoke
session  optional    pam_elogind.so

auth     required    pam_deny.so
password required    pam_deny.so

# End /etc/pam.d/elogind-user


Installed Programs: busctl, elogind-inhibit, and loginctl
Installed Library: libelogind.so
Installed Directories: /lib/elogind, /etc/elogind, /usr/include/elogind, and /usr/share/doc/elogind-243.4

Short Descriptions


is used to introspect and monitor the D-Bus bus.


is used to execute a program with a shutdown, sleep or idle inhibitor lock taken.


is used to introspect and control the state of the elogind Login Manager.


is the main elogind utility library.

Last updated on 2020-02-15 20:23:35 -0800