[Bug 1153224] Re: [FFE] Move to logind for session tracking
Martin Pitt
martin.pitt at ubuntu.com
Mon Mar 18 08:05:14 UTC 2013
Where we are:
- current systemd v198 is in raring, with broken out systemd-services package which provides logind, hostnamed, etc.
- libudev1 transition is mostly complete and in raring; the only remaining reverse dep to libudev0 is chromium on armhf as it currently FTBFSes there. (This problem is now independent of this FFE)
- The package split is quite intrusive, but has been discussed with Debian and they want to adopt this. Debian also wants to migrate logind without enforcing systemd everywhere just yet (as the latter is politically much harder)
- I fixed udev to work with logind's dynamic ACLs by backporting the "uaccess" builtin. udev rules are set up to use udev-acl with ConsoleKit and uaccess with logind. This is in raring.
- Running logind separately causes some API confusion about sd_booted() for programs, as they now need to differentiate between "systemd init" and "logind". This has been discussed with upstream, and a fixed sd_booted() is in systemd upstream. We have a recipe how to fix packages that call this, and we know about all affected packages (12) from an archive grep. Details are in the blueprint.
- I and other people (I know of Iain Lane and Stephane Graber) have run logind for quite a while now. I have run it exclusively without ConsoleKit for 1.5 weeks now, and did not get any crash of logind or the PAM module
- Running with logind exclusively uncovered some race condition in Unity's indicator/shutdown (bug 1155021)
- Consumers of CK have been identified with an archive grep (undeclared dependencies), and for many of them I added an analysis what needs to happen (details in blueprint)
- Login managers (lightdm etc.) generally are not supposed to directly talk to lightdm for creating sessions. That's supposed to be done by libpam-systemd and works fine. Of course they need to be adjusted for the shutdown/reboot API if they currently talk to ConsoleKit.
- I fixed the systemd upstream tests to run during package build, and wrote autopkgtests for all D-BUS services and logind.
Next steps regardless of this FFE:
- Fix upstream software that calls sd_booted() but wants to talk to logind to call access("/run/systemd/seats/", F_OK) instead.
- Add logind support to upstream lightdm (Robert Ancell has a WI) and Unity (I'll coordinate with Didier, or do it myself)
Next steps if FFE is rejected:
- If bug 1153633 (systemd-shim MIR) is accepted and we want to go through with bug 1153567 for raring, we need to either disable logind from systemd-services, or split it out again.
Next steps if FFE is accepted:
- Adjust seeds to move from libpam-xdg-support to libpam-systemd, which will pull in systemd-services. (It conflicts/replaces/provides libpam-xdg-support)
- Upload https://launchpad.net/~ubuntu-core-dev/+archive/logind and https://launchpad.net/~bkerensa/+archive/logind PPAs which have packages transitioned to talk to logind instead of CK. These are the most important ones.
- For the other reverse CK dependencies, either enable logind support for them (if present), or port it ourselves in easy cases (e. g. the shutdown/reboot API is exactly the same structure, just different D-BUS names), or add an explicit consolekit dependency. Please note that this requires some teamwork, I don't want to do this all by myself.
Risk mitigation:
- We now have automatic unit tests during package build and autopkgtests which cover logind's automatic ACLs for the coldplug and hotplug cases.
- Manual testing by several people for ~ 2 weeks
- There is a non-negligible risk that in the final release we'll end up with both logind and consolekit installed if we don't manage to convert all reverse CK dependencies. This is by and large a matter of turning this from an one-man show into some teamwork. :-)
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1153224
Title:
[FFE] Move to logind for session tracking
Status in “systemd” package in Ubuntu:
New
Bug description:
At the last UDS we decided to finally drop the long-abandoned
ConsoleKit and migrate to logind:
https://blueprints.launchpad.net/ubuntu/+spec/foundations-1303
-consolekit-logind-migration
I fixed current raring's logind package (from systemd source) to
actually work standalone, so we can use it without the init bits.
However, as some packages like gnome-session require a newer version
than 44, I would actually like to update this to the current upstream
version 198. A working package is in https://launchpad.net/~ubuntu-
core-dev/+archive/logind/+packages . This involves a soname bump of
libudev, but as the ABI didn't actually change that much, that will
mostly be some 50 rebuilds. (Note that libudev1 works fine against the
older udev, and vice versa). Please note that while udev has been
merged into the systemd source, I do not propose to update udev to
version 198 at this point. We first need to review our current changes
and apply that to the current udev, and it is not clear whether doing
that in raring is appropriate. So this FFE does *not* include a
request for an updated udev, we'll continue to use the standalone
version 175 for the time being.
This PPA also has a number of packages which move from ConsoleKit to
logind for session tracking. As most upstream moved to logind long
ago, this is usually very trivial: Add libsystemd-logind-dev build
dep, enable the corresponding configure option, done.
The blueprint has an exhaustive list of reverse dependencies that
should be migrated; there are a number of packages which talk to
ConsoleKit's D-BUS API without a declared dependency, found by an
archive grep.
However, we don't need to do this in a big lockstep: logind and
ConsoleKit work just fine side by side, so at no point during the
transition there will be a state where a package is broken. I still
would like to convert as much as possible (read: all packages which
have logind support in the current raring version), and I have some
time reserved to do this. I figure that Stephane Graber, James Hunt,
Steve Langasek, and/or the desktop team can also give a hand with
this.
For the record, I run my workstation with consolekit purged since
Friday, so that I see the missing bits (which would otherwise continue
to use CK and thus work just fine).
While this is quite a large change, I believe that the risk is
relatively low. logind has been tested and used in Fedora, Arch, some
Debian developers, and other distributions for over a year now, and
many upstreams like NetworkManager, GNOME, upower, udisks etc. do not
test with CK any more. In fact, GNOME 3.8 drops support for
Consolekit, which blocks the Ubuntu GNOME remix (for raring) and
Ubuntu itself (for raring+1) from updating to a newer GNOME.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1153224/+subscriptions
More information about the foundations-bugs
mailing list