To contribute to elogind, fork the current source code from github:
- https://github.com/wingo/elogind
+ https://github.com/elogind/elogind
Send a pull request for the changes you like.
Finally, bug reports:
- https://github.com/wingo/elogind/issues
+ https://github.com/elogind/elogind/issues
Why bother?
-----------
origin of this project: to take the excellent logind functionality
from systemd and provide it as a standalone package.
-We like systemd. We realize that there are people out there that hate
-it. You're welcome to use elogind for whatever purpose you like --
+You're welcome to use elogind for whatever purpose you like --
as-is, or as a jumping-off point for other things -- but please don't
-use it as part of some anti-systemd vendetta. Systemd hackers are
-smart folks that are trying to solve interesting problems on the free
-desktop, and their large adoption is largely because they solve
-problems that users and developers of user-focused applications care
-about. We are appreciative of their logind effort and think that
-everyone deserves to run it if they like, even if they use a different
-PID 1.
+use it as part of some anti-systemd vendetta. We are appreciative of
+the systemd developers logind effort and think that everyone deserves
+to run it if they like. Not matter what kind of PID1 they use.
Differences relative to systemd
-------------------------------
Elogind does monitor power button and the lid switch, like systemd,
but instead of doing RPC to systemd to suspend, poweroff, or restart
-the machine, elogind just does this directly. For suspend, hybernate,
+the machine, elogind just does this directly. For suspend, hibernate,
and hybrid-sleep, elogind uses the same code as systemd-sleep.
Instead of using a separate sleep.conf file to configure the sleep
behavior, this is included in the [Sleep] section of
The PAM module is called pam_elogind.so, not pam_systemd.so.
+Elogind and the running cgroup controller
+-----------------------------------------
+While 'configure' runs, it will detect which controller is in place.
+If no controller is in place, configure will determine, that elogind
+should be its own controller, which will be a very limited one.
+
+This approach should generally work, but if you just have no cgroup
+controller in place, yet, or if you are currently switching to
+another one, this approach will fail.
+
+In this case you can do one of the two following things:
+
+ 1) Boot your system with the target init system and cgroup
+ controller, before configuring and building elogind, or
+ 2) Use the --with-cgroup-controller=name option.
+
+Example: If you plan to use openrc, but openrc has not yet booted
+ the machine, you can use
+ --with-cgroup-controller=openrc
+ to let elogind know that openrc will be the controller
+ in charge.
+
+However, if you set the controller at configure time to something
+different than what is in place, elogind will not start until that
+controller is actively used as the primary controller.
+
License
-------
LGPLv2.1+ for all code
- - except src/shared/MurmurHash2.c which is Public Domain
- - except src/shared/siphash24.c which is CC0 Public Domain
- - except src/journal/lookup3.c which is Public Domain
+ - except src/basic/siphash24.c which is CC0 Public Domain
Dependencies
------------
- glibc >= 2.14
+ glibc >= 2.16
libcap
- libmount >= 2.20 (from util-linux)
- libseccomp >= 1.0.0 (optional)
+ libmount >= 2.27.1 (from util-linux)
+ (util-linux < 2.29 *must* be built with --enable-libmount-force-mountinfo,
+ and later versions without --enable-libmount-support-mtab.)
+ libseccomp >= 2.3.1 (optional)
libblkid >= 2.24 (from util-linux) (optional)
PAM >= 1.1.2 (optional)
libacl (optional)
libselinux (optional)
- make, gcc, and similar tools
+ libpython (optional)
+ pkg-config
+ gperf >= 3.1
+ docbook-xsl (optional, required for documentation)
+ xsltproc (optional, required for documentation)
+ python-lxml (optional, required to build the indices)
+ python, meson, ninja
+ gcc, awk, sed, grep, m4, and similar tools
During runtime, you need the following additional dependencies:
+ util-linux >= v2.27.1 required
dbus >= 1.4.0 (strictly speaking optional, but recommended)
+ NOTE: If using dbus < 1.9.18, you should override the default
+ policy directory (--with-dbuspolicydir=/etc/dbus-1/system.d).
PolicyKit (optional)
-When building from git, you need the following additional
-dependencies:
+ To build in directory build/:
+ meson build/ && ninja -C build
- pkg-config
- docbook-xsl
- xsltproc
- automake
- autoconf
- libtool
- intltool
- gperf
- gtkdocize (optional)
+ Any configuration options can be specified as -Darg=value... arguments
+ to meson. After the build directory is initially configured, the configuration
+ can be changed with:
+ meson configure -Darg=value... build/
+ 'meson configure' without any arguments will print out available options and
+ their current values.
+
+ Useful commands:
+ ninja -v some/target
+ ninja test
+ sudo ninja install
+ DESTDIR=... ninja install
+
+ A tarball can be created with:
+ git archive --format=tar --prefix=elogind-238/ v238 | xz > elogind-238.tar.xz