elogind is the systemd project's "logind", extracted to be a
standalone daemon. It integrates with Linux-PAM-1.7.0 to
track all the users 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, and also through the file
system using systemd's standard /run/systemd
layout.
dbus-1.16.2 - Pass 1 (runtime), Linux-PAM-1.7.0, and Polkit-126 (runtime)
Enable the following options in the kernel configuration and recompile the kernel if necessary:
File systems ---> [*] Inotify support for userspace [INOTIFY_USER] Pseudo filesystems ---> [*] Tmpfs virtual memory file system support (former shm fs) [TMPFS] [*] Tmpfs POSIX Access Control Lists [TMPFS_POSIX_ACL]
Install elogind by running the following commands:
mkdir build && cd build && meson setup .. \ --prefix=/usr \ --buildtype=release \ -D docdir=/usr/share/doc/elogind-255.17 \ -D cgroup-controller=elogind \ -D dev-kvm-mode=0660 \ -D dbuspolicydir=/etc/dbus-1/system.d && ninja
Now, as the root
user:
ninja install && ln -sfv libelogind.pc /usr/lib/pkgconfig/libsystemd.pc && ln -sfvn elogind /usr/include/systemd
Install lib32-elogind by running the following commands:
rm -rf * && CC="gcc -m32" CXX="g++ -m32" \ PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \ meson setup .. \ --prefix=/usr \ --libdir=/usr/lib32 \ --buildtype=release \ -D cgroup-controller=elogind \ -D dev-kvm-mode=0660 \ -D dbuspolicydir=/etc/dbus-1/system.d && ninja
Now, as the root
user:
DESTDIR=$PWD/DESTDIR ninja install && cp -vR DESTDIR/usr/lib32/* /usr/lib32 && rm -rf DESTDIR && ln -sfv libelogind.pc /usr/lib32/pkgconfig/libsystemd.pc && ldconfig
Inspect meson_options.txt
for a
full list of options.
-D
docdir=/usr/share/doc/elogind-255.17
: This is needed to
install documentation in a versioned directory.
-D
cgroup-controller=elogind
: This switch is necessary to
build this package when the kernel is not built with CONFIG_CGROUPS
enabled. Note that elogind strictly needs a kernel with
CONFIG_CGROUPS
enabled at runtime, but
this switch will allow building the package first.
-D
dbuspolicydir=/etc/dbus-1/system.d
: This switch sets
the location of the D-Bus policy
directory.
-D dev-kvm-mode=0660
: The
LFS udev rule sets the mode of /dev/kvm
to 0660. This option ensures the elogind
udev rules consistent with the LFS configuration.
-D default-kill-user-processes=false
:
Determines whether the processes of a user should be killed when
the user logs out. The default is true, but this defeats the traditional
use of screen or
tmux. This can also
be changed in the configuration file (see below).
ln -s ...: These commands install symlinks so that software packages can find the systemd-compatible library and headers.
The installed file /etc/elogind/logind.conf
contains all the
possible options with their defaults, commented out. You may wish
to disable automatically killing user processes when the user
logs out, by running, as the root
user:
sed -e '/\[Login\]/a KillUserProcesses=no' \ -i /etc/elogind/logind.conf
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 must 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
EOF 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
EOF
Now continue on until you reach dbus-1.16.2, install it, and follow the configuration instructions on that page to see if elogind is working properly.