Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
elogind/README
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
157 lines (120 sloc)
5.5 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Elogind User, Seat and Session Manager | |
| Introduction | |
| ------------ | |
| Elogind is the systemd project's "logind", extracted out to be a | |
| standalone daemon. It integrates with PAM 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. Elogind also provides "libelogind", which is a | |
| subset of the facilities offered by "libsystemd". There is a | |
| "libelogind.pc" pkg-config file as well. | |
| All of the credit for elogind should go to the systemd developers. | |
| For more on systemd, see | |
| http://www.freedesktop.org/wiki/Software/systemd. All of the blame | |
| should go to Andy Wingo, who extracted elogind from systemd. | |
| Contributing | |
| ------------ | |
| Elogind was branched from systemd version 219, and preserves the git | |
| history of the systemd project. The version of elogind is the | |
| upstream systemd version, followed by the patchlevel of elogind. For | |
| example version 219.12 is the twelfth elogind release, which aims to | |
| provide a subset of the interfaces of systemd 219. | |
| To contribute to elogind, fork the current source code from github: | |
| https://github.com/wingo/elogind | |
| Send a pull request for the changes you like. | |
| To chat about elogind: | |
| #guix on irc.freenode.org | |
| Finally, bug reports: | |
| https://github.com/wingo/elogind/issues | |
| Why bother? | |
| ----------- | |
| Elogind has been developed for use in GuixSD, the OS distribution of | |
| GNU Guix. See http://gnu.org/s/guix for more on Guix. GuixSD uses a | |
| specific init manager (DMD), for reasons that are not relevant here, | |
| but still aims to eventually be a full-featured distribution that can | |
| run GNOME and other desktop environments. However, to run GNOME these | |
| days means that you need to have support for the login1 D-Bus | |
| interface, which is currently only provided by systemd. That is the | |
| 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 -- | |
| 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. | |
| Differences relative to systemd | |
| ------------------------------- | |
| The pkg-config file is called libelogind, not libsystemd or | |
| libsystemd-logind. | |
| The headers are in <elogind/...>, so like <elogind/sd-login.h> instead | |
| of <systemd/sd-login.h>. | |
| Libelogind just implements login-related functionality. It also | |
| provides the sd-bus API. | |
| Unlike systemd, whose logind arranges to manage resources for user | |
| sessions via RPC calls to systemd, in elogind there is no systemd so | |
| there is no global cgroup-based resource management. This has a few | |
| implications: | |
| * Elogind does not create "slices" for users. Elogind will not | |
| record that users are associated with slices. | |
| * The /run/systemd/slices directory will always be empty. | |
| * Elogind does not have the concept of a "scope", internally, as | |
| it's the same as a session. Any API that refers to scopes will | |
| always return an error code. | |
| On the other hand, elogind does use a similar strategy to systemd in | |
| that it places processes in a private cgroup for organizational | |
| purposes, without installing any controllers (see | |
| http://0pointer.de/blog/projects/cgroups-vs-cgroups.html). This | |
| allows elogind to map arbitrary processes to sessions, even if the | |
| process does the usual double-fork to be reparented to PID 1. | |
| Elogind does not manage virtual terminals. | |
| 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, | |
| 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 | |
| /etc/elogind/login.conf. See the example login.conf for more. For | |
| shutdown, reboot, and kexec, elogind shells out to "halt", "reboot", | |
| and "kexec" binaries. | |
| The loginctl command has the poweroff, reboot, sleep, hibernate, and | |
| hybrid-sleep commands from systemd, as well as the --ignore-inhibitors | |
| flag. | |
| The PAM module is called pam_elogind.so, not pam_systemd.so. | |
| 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 | |
| Dependencies | |
| ------------ | |
| glibc >= 2.14 | |
| libcap | |
| libmount >= 2.20 (from util-linux) | |
| libseccomp >= 1.0.0 (optional) | |
| libblkid >= 2.24 (from util-linux) (optional) | |
| PAM >= 1.1.2 (optional) | |
| libacl (optional) | |
| libselinux (optional) | |
| make, gcc, and similar tools | |
| During runtime, you need the following additional dependencies: | |
| dbus >= 1.4.0 (strictly speaking optional, but recommended) | |
| PolicyKit (optional) | |
| When building from git, you need the following additional | |
| dependencies: | |
| pkg-config | |
| docbook-xsl | |
| xsltproc | |
| automake | |
| autoconf | |
| libtool | |
| intltool | |
| gperf | |
| gtkdocize (optional) |

