From Fedora Project Wiki
(Moved to FeatureReadyForFesco, ticket #599)
 
(70 intermediate revisions by 3 users not shown)
Line 1: Line 1:
= ConsoleKit Removal/Automatic Multi-Seat Support =
= ConsoleKit Removal / Automatic Multi-Seat Support =


== Summary ==
== Summary ==
Line 9: Line 9:


== Current status ==
== Current status ==
* Targeted release: [[Releases/16 | Fedora 16 ]]  
* Targeted release: [[Releases/17 | Fedora 17 ]]  
* Last updated: 2011-05-17
* Last updated: 2012-02-06
* Percentage of completion: 10%
* Percentage of completion: 100%
 
Logic is now in rawhide (in systemd 30), patches for some subsystems ([http://lists.x.org/archives/xorg-devel/2011-July/023932.html X11], [http://bugs.freedesktop.org/show_bug.cgi?id=39295 accountsservice]) ready.
These patches have been put into F16 packages.
The necessary gdm [[http://bugzilla.gnome.org/show_bug.cgi?id=655380 patches]] are still in testing.
Patches for many ConsoleKit users in GNOME are available, and most of them have been merged by now.


== Detailed Description ==
== Detailed Description ==
* Simplify our stack by removing CK
* Automatic multi-seat support
* Automatic multi-seat support
* Make systemd available in the session
* Make systemd available in the session
* Removal of XDG_SESSION_COOKIE and its security problems, emphasis on audit loginuid and cgroup names instead
* Removal of XDG_SESSION_COOKIE and its security problems, emphasis on audit loginuid and cgroup names instead
* On-Demand starting of VT gettys
* On-Demand starting of VT gettys
* Fix the 63 threads CK VT watching issue
* Covering all of getty, SSH and X11 sessions
* Covering all of getty, SSH and X11 sessions
* Make session exit of pam_systemd more robust
* Make session exit of pam_systemd more robust
* Introduce D-Bus user bus
* Introduce D-Bus user bus
* allow systemd user services to be run outside of a session, for selected users, a la cron with cron.allow
* allow systemd user services to be run outside of a session, for selected users, a la cron with cron.allow
When we reach the point where ConsoleKit is actually dropped, additionally
* Simplify our stack by removing CK
* Fix the 63 threads CK VT watching issue
This feature introduces a new systemd daemon, systemd-logind, which takes over a lot of the
logic of pam_systemd (which is reduced to a small stub that is a lot more robust)
as well as ConsoleKit and udev-acl. systemd-logind can be configured in systemd-logind.conf and controlled via systemd-loginctl.


== Benefit to Fedora ==
== Benefit to Fedora ==
Things become safer, cleaner and smaller. We add automatic multi-seat support. We can optionally start user services outside of a login (i.e. a user Rygel on boot without having the user to log in).
Things become safer, cleaner and smaller. We add automatic multi-seat support. We can optionally start user services outside of a login (e.g. a per-user Rygel on boot without having the user to log in).


== Scope ==
== Scope ==
Line 32: Line 44:


https://docs.google.com/document/pub?id=1_ev4f0gwBuvs6SH_N8fN5LO4LV3sbwtJsLq52F_wwpU
https://docs.google.com/document/pub?id=1_ev4f0gwBuvs6SH_N8fN5LO4LV3sbwtJsLq52F_wwpU
systemd needs to be updated to version 30 or newer.
To get working automatic multiseat support, we need to patch
* X ([http://cgit.freedesktop.org/xorg/xserver/commit/?id=159b03e13760920274b573a2bccdbf6a79f059e7 DONE])
* accountsservice (DONE)
* gdm ([http://bugzilla.gnome.org/show_bug.cgi?id=655380 patches])
To complete the removal of ConsoleKit, a larger set of packages need to
be touched.
Packages that currently require ConsoleKit:
* libfprint (DONE)
* polkit ([http://bugs.freedesktop.org/show_bug.cgi?id=43971 DONE])
* accountsservice (DONE)
* gdm (see above)
Packages that are using the ConsoleKit D-Bus API at runtime:
* gnome-session (uses can_restart, can_shutdown, can_switch_user, sets session idle, checks session type) ([http://bugzilla.gnome.org/show_bug.cgi?id=666891 DONE])
* gnome-packagekit (uses ConsoleKit to reboot with polkit control) ([http://bugzilla.gnome.org/show_bug.cgi?id=666788 DONE])
* gnome-settings-daemon (listens for ActiveChanged, calls Stop) ([http://bugzilla.gnome.org/show_bug.cgi?id=666787 DONE])
* control-center (find out if a user is logged in) ([http://bugzilla.gnome.org/show_bug.cgi?id=666573 DONE])
* gnome-screensaver (listens for Lock/Unlock/ActiveChanged signals from ConsoleKit) ([http://bugzilla.gnome.org/show_bug.cgi?id=669787 DONE])
* NetworkManager (find out if a user is logged in and if his session is active) ([http://bugzilla.gnome.org/show_bug.cgi?id=666783 DONE])
* gnome-shell ([http://bugzilla.gnome.org/show_bug.cgi?id=669850 DONE])
* accountsservice-libs (DONE)


== How To Test ==
== How To Test ==
* Test Multi-Seat support (ideally with hardware from plugable): plug in plugable hw and you should instantly get a new gdm display on the seat
* Test Multi-Seat support (ideally with hardware from plugable): plug in plugable hw and you should instantly get a new gdm display on the seat
* You should have 6 gettys on tty1-6
* You should have 6 gettys on tty1-6
* To test ConsoleKit removal, inspect that manifest of the desktop spin and verify that it does not include ConsoleKit.
* Test that other desktops pull in ConsoleKit, if they still need it. Also verify that ConsoleKit continues to work as expected when it is installed. This can be done e.g. with the help of ck-list-sessions


== User Experience ==
== User Experience ==
Line 46: Line 88:


== Contingency Plan ==
== Contingency Plan ==
CK will continue to be available simutaneously as the new logic. To revert back we can just disable our systemd specific login manager again and things should work as previously.
Until the 'ckremoval' part of this feature is complete, ConsoleKit will continue to
be available simultaneously as the new logic. The multiseat part of this feature
can be used even if ConsoleKit has not been completely removed.
 
If the multiseat part of this feature does not get completed, we can just disable the systemd specific login manager
again and things should work as previously.


== Documentation ==
== Documentation ==
For details see https://docs.google.com/document/pub?id=1_ev4f0gwBuvs6SH_N8fN5LO4LV3sbwtJsLq52F_wwpU
For details see https://docs.google.com/document/pub?id=1_ev4f0gwBuvs6SH_N8fN5LO4LV3sbwtJsLq52F_wwpU
* General overview: [http://www.freedesktop.org/wiki/Software/systemd/multiseat Multiseat on Linux]
* logind documentation:
** [http://0pointer.de/public/systemd-man/systemd-logind.conf.html systemd-logind.conf(5)]
** [http://0pointer.de/public/systemd-man/systemd-loginctl.html systemd-loginctl(1)]
* Developer documentation:
** [http://0pointer.de/public/systemd-man/sd-login.html sd-login(3)]
** [http://0pointer.de/public/systemd-man/sd_get_seats.html sd_get_seats(3)]
** [http://0pointer.de/public/systemd-man/sd_login_monitor_new.html sd_login_monitor_new(3)]
** [http://0pointer.de/public/systemd-man/sd_pid_get_session.html sd_pid_get_session(3)]
** [http://0pointer.de/public/systemd-man/sd_seat_get_active.html sd_seat_get_active(3)]
** [http://0pointer.de/public/systemd-man/sd_session_is_active.html sd_session_is_active(3)]
** [http://0pointer.de/public/systemd-man/sd_uid_get_state.html sd_uid_get_state(3)]


== Release Notes ==
== Release Notes ==
* ConsoleKit is gone, a couple of new APIs are introduced instead.
 
Fedora 17 is using systemd as a login manager. For details, see
systemd-logind.conf(5) and systemd-loginctl(1). This provides automatic multi-seat support. The login manager part of systemd supersedes ConsoleKit functionality.
 
[if ckremoval is complete] ConsoleKit is no longer installed by default.
 
[if ckremoval is not complete] ConsoleKit is still available to support parts of the system that have not been ported to the new
systemd APIs.


== Comments and Discussion ==
== Comments and Discussion ==
* See [[Talk:Features/ckremoval]]
* See [[Talk:Features/ckremoval]]


[[Category:FeatureReadyForFesco]]
[[Category:FeatureAcceptedF17]]
<!-- When your feature page is completed and ready for review -->
<!-- When your feature page is completed and ready for review -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->

Latest revision as of 19:43, 23 April 2012

ConsoleKit Removal / Automatic Multi-Seat Support

Summary

A grab-bag of little cleanups and improvements all related to session and seat handling.

Owner

Current status

  • Targeted release: Fedora 17
  • Last updated: 2012-02-06
  • Percentage of completion: 100%

Logic is now in rawhide (in systemd 30), patches for some subsystems (X11, accountsservice) ready. These patches have been put into F16 packages. The necessary gdm [patches] are still in testing. Patches for many ConsoleKit users in GNOME are available, and most of them have been merged by now.

Detailed Description

  • Automatic multi-seat support
  • Make systemd available in the session
  • Removal of XDG_SESSION_COOKIE and its security problems, emphasis on audit loginuid and cgroup names instead
  • On-Demand starting of VT gettys
  • Covering all of getty, SSH and X11 sessions
  • Make session exit of pam_systemd more robust
  • Introduce D-Bus user bus
  • allow systemd user services to be run outside of a session, for selected users, a la cron with cron.allow

When we reach the point where ConsoleKit is actually dropped, additionally

  • Simplify our stack by removing CK
  • Fix the 63 threads CK VT watching issue

This feature introduces a new systemd daemon, systemd-logind, which takes over a lot of the logic of pam_systemd (which is reduced to a small stub that is a lot more robust) as well as ConsoleKit and udev-acl. systemd-logind can be configured in systemd-logind.conf and controlled via systemd-loginctl.

Benefit to Fedora

Things become safer, cleaner and smaller. We add automatic multi-seat support. We can optionally start user services outside of a login (e.g. a per-user Rygel on boot without having the user to log in).

Scope

Precise scope outlined in:

https://docs.google.com/document/pub?id=1_ev4f0gwBuvs6SH_N8fN5LO4LV3sbwtJsLq52F_wwpU

systemd needs to be updated to version 30 or newer.

To get working automatic multiseat support, we need to patch

To complete the removal of ConsoleKit, a larger set of packages need to be touched.

Packages that currently require ConsoleKit:

  • libfprint (DONE)
  • polkit (DONE)
  • accountsservice (DONE)
  • gdm (see above)

Packages that are using the ConsoleKit D-Bus API at runtime:

  • gnome-session (uses can_restart, can_shutdown, can_switch_user, sets session idle, checks session type) (DONE)
  • gnome-packagekit (uses ConsoleKit to reboot with polkit control) (DONE)
  • gnome-settings-daemon (listens for ActiveChanged, calls Stop) (DONE)
  • control-center (find out if a user is logged in) (DONE)
  • gnome-screensaver (listens for Lock/Unlock/ActiveChanged signals from ConsoleKit) (DONE)
  • NetworkManager (find out if a user is logged in and if his session is active) (DONE)
  • gnome-shell (DONE)
  • accountsservice-libs (DONE)

How To Test

  • Test Multi-Seat support (ideally with hardware from plugable): plug in plugable hw and you should instantly get a new gdm display on the seat
  • You should have 6 gettys on tty1-6
  • To test ConsoleKit removal, inspect that manifest of the desktop spin and verify that it does not include ConsoleKit.
  • Test that other desktops pull in ConsoleKit, if they still need it. Also verify that ConsoleKit continues to work as expected when it is installed. This can be done e.g. with the help of ck-list-sessions

User Experience

Plugging in certain multi-seat hw should just work: i.e. make a gdm appear on it.

Dependencies

We need smaller changes in: X11, gdm, CK, udev, dbus, plymouth, PK, NM, accountsservice

For details see https://docs.google.com/document/pub?id=1_ev4f0gwBuvs6SH_N8fN5LO4LV3sbwtJsLq52F_wwpU

Contingency Plan

Until the 'ckremoval' part of this feature is complete, ConsoleKit will continue to be available simultaneously as the new logic. The multiseat part of this feature can be used even if ConsoleKit has not been completely removed.

If the multiseat part of this feature does not get completed, we can just disable the systemd specific login manager again and things should work as previously.

Documentation

For details see https://docs.google.com/document/pub?id=1_ev4f0gwBuvs6SH_N8fN5LO4LV3sbwtJsLq52F_wwpU

Release Notes

Fedora 17 is using systemd as a login manager. For details, see systemd-logind.conf(5) and systemd-loginctl(1). This provides automatic multi-seat support. The login manager part of systemd supersedes ConsoleKit functionality.

[if ckremoval is complete] ConsoleKit is no longer installed by default.

[if ckremoval is not complete] ConsoleKit is still available to support parts of the system that have not been ported to the new systemd APIs.

Comments and Discussion