Code Monkey home page Code Monkey logo

elogind's Introduction

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)

elogind's People

Contributors

ahkok avatar crrodriguez avatar davidstrauss avatar dbuch avatar falconindy avatar filbranden avatar grawity avatar gregkh avatar haraldh avatar holtmann avatar hreinecke avatar jengelh avatar kaisforza avatar kaysievers avatar keszybz avatar lnykryn avatar mbiebl avatar mfwitten avatar michaelolbrich avatar michich avatar msekletar avatar pfl avatar phomes avatar poettering avatar rfc1036 avatar ronnychevalier avatar teg avatar wingo avatar zonque avatar zzam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elogind's Issues

gperf 3.1

elogind fails to build on systems with gperf 3.1, here are the errors:

In file included from src/shared/errno-list.c:31:0:
src/shared/errno-from-name.h:143:1: error: conflicting types for ‘lookup_errno’
lookup_errno (register const char str, register size_t len)
^~~~~~~~~~~~
src/shared/errno-list.c:27:33: note: previous declaration of ‘lookup_errno’ was here
static const struct errno_name
lookup_errno(register const char *str,
^~~~~~~~~~~~
make[2]: *** [Makefile:3142: src/shared/libelogind_shared_la-errno-list.lo] Error 1
make[1]: *** [Makefile:3865: all-recursive] Error 1

elogind gets into a suspend loop

when I go into suspend/standby mode, it suspends but when I resume it wakes up then suspends again
I have to hard reset my pc

I'm using arch linux x64

VT's in elogind

Elogind does not manage virtual terminals.

What exactly does this mean?

I'm getting logind: session not running on a VT when trying to get weston to work with elogind (on guixsd). The problem seems to be that sd_session_get_vt returns -1 in launcher-elogind.c.

return sd_session_get_vt(sid, out);

Do you have any advice on how to get it working? Would something have to happen on the elogind side? Or do I have to replace the routine in weston with something guixsd compatible?

No docs dir

[xhe@xhe-PC elogind]$ LC_ALL=C ./autogen.sh 
ln: failed to create symbolic link 'docs//gtk-doc.make': No such file or directory
cp: cannot create regular file 'docs//gtk-doc.make': No such file or directory

maybe add a mkdir command?

Service type tty even for a user@notty ?

The session connected via SSHFS, shows the service type as 'tty', even though the ssh is into a 'notty' session. Shouldn't this have a different service type entry?

$ loginctl session-status c4
c4 - user1 (1000)
           Since: Wed 2017-07-12 13:14:46 IST; 2h 26min ago
          Leader: 8961 (sshd)
          Remote: 10.8.0.174
         Service: sshd; type tty; class user
           State: active
            Unit: session-c4.scope
                  ├─8961 sshd: user1 [priv]
                  ├─8963 sshd: user1@notty
                  └─8964 /usr/lib/ssh/sftp-server

Jul 12 13:14:46 omega1 systemd[1]: Started Session c4 of user user1.

rundir-219.12

I noticed 219.12 does not create a rundir on its own.

If I let it be created by eg dbus script, elogind seems to work fine. Without rundir, my logs show errors regarding missing rundir.

Leads me to another question, would it be possible to have a --with-rundir configure option?
Eg that rundir could be /run/elogind instead of /run/systemd ?

My init system is openrc.

withdrawn

withdrawn for more troubleshooting

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.