Packages

Differences between revisions 22 and 23
Revision 22 as of 2014-02-21 11:36:36
Size: 15750
Editor: 187-11-244-53
Comment:
Revision 23 as of 2014-02-22 04:04:36
Size: 6734
Editor: c-76-118-178-97
Comment: move status and instructions to separate wiki pages
Deletions are marked like this. Additions are marked like this.
Line 10: Line 10:
'''TODO:''' document what patches have been applied to what packages, whether those patches have been submitted upstream, and whether they have been accepted upstream
== lightdm ==
The `lightdm` package in the PPA contains some patches that make it possible to support multiseat, although at the moment you must configure the seats manually (see the instructions below). Automatic multiseat support has not yet been added (see [[https://launchpad.net/bugs/1190581|bug #1190581]]).
== xorg-server ==
The `xorg-server` package in the multiseat PPA includes patches and changes for the following issues:
 * [[https://launchpad.net/bugs/1209008|bug #1209008]], [[https://bugs.freedesktop.org/show_bug.cgi?id=66851|upstream bug #66851]]: fix card detection on non-`seat0` seats '''(sent upstream - [[http://lists.x.org/archives/xorg-devel/2014-January/040262.html|review needed]] ([[http://thread.gmane.org/gmane.comp.freedesktop.xorg.devel/39678|thread]]))'''
 * [[https://launchpad.net/bugs/659793|bug #659793]]: pass `--enable-kdrive-evdev` to `configure` (needed for Xephyr-based multiseat setup)
 * [[https://bugs.freedesktop.org/show_bug.cgi?id=68397|upstream bug #68397]]: enable Xephyr window placement using `-screen WxH+X+Y` option '''(sent upstream - [[http://lists.x.org/archives/xorg-devel/2014-February/040604.html|review needed]] ([[http://thread.gmane.org/gmane.comp.freedesktop.xorg.devel/40020|thread]]))'''
 * bug #???: introduce `MatchSeat` key in `xorg.conf` '''(sent upstream - [[http://lists.x.org/archives/xorg-devel/2013-September/037946.html|review needed]] ([[http://thread.gmane.org/gmane.comp.freedesktop.xorg.devel/37377|thread]]))'''
 * [[https://launchpad.net/bugs/1228095|bug #1228095]]: enable defaults for non-`seat0` seats (no need to use `systemd-multi-seat-x` wrapper) '''(upstreamed - see commits [[http://cgit.freedesktop.org/xorg/xserver/commit/?id=c73c36b53|c73c36b53]] and [[http://cgit.freedesktop.org/xorg/xserver/commit/?id=46cf2a6093|46cf2a6093]])'''
 * [[https://launchpad.net/bugs/1243138|bug #1243138]]: disable unit tests because buildd hangs on `xvfb-run` test
== gdm ==
The `gdm` package in the multiseat PPA includes patches and changes for the following issues:
 * [[https://bugzilla.gnome.org/show_bug.cgi?id=704581|upstream bug #704581]]: Add patch to fix automatic/timed login in multiseat context
 * --([[https://bugzilla.gnome.org/show_bug.cgi?id=711253|upstream bug #711253]]: Add patch to explicitly set variable `XDG_VTNR` for `seat0` (needed to avoid getting inactive graphical sessions for `seat0` in some multiseat setups))-- Now rely on patched `xorg-server` package from this PPA.
== Others ==
The PPA contains some packages from saucy that have been backported to raring to complete logind support. The initial list of packages came from [[https://launchpad.net/~ubuntu-core-dev/+archive/logind/+packages|the ubuntu-core-dev team's logind PPA]]. Please contact the Ubuntu Multiseat team if you are aware of any additional packages that need backporting to raring.
See [[MultiseatTeam/Status]]
Line 29: Line 13:
== 1. Name Your Seats ==
Come up with names for your seats. You must have a primary seat named `seat0`. All other seat names must begin with `seat` (see [[http://www.freedesktop.org/wiki/Software/systemd/multiseat/|the rules for seat naming]]). Note that VT switching (and thus fast user switching) is (currently) only possible on `seat0`.
== 2. Configure Seat Hardware ==
Assign hardware devices to your seats by [[http://www.freedesktop.org/wiki/Software/systemd/multiseat/|setting up udev rules]].

=== Per-Device Configuration ===

A device that is associated with a seat must be configured as follows:

 * It MUST be tagged with `seat`. This is required, even for `seat0`. The existing udev rules do this properly 99% of the time, but exotic hardware, proprietary drivers, or unusual circumstances may require you to write your own udev rules to tag a device with `seat` or to prevent a device from being tagged with `seat`.
 * Tag it with the seat name (e.g., `seat1`). This is optional for `seat0` but required for other seats.
 * Set the `ID_SEAT` property to the seat name (e.g., `seat1`). This is optional for `seat0` but required for other seats.

=== master-of-seat ===

One of the devices for your seat MUST be tagged with `master-of-seat`. This tag signals to logind that the seat hardware is ready (enough) to start a display manager on that seat. If the tag doesn't exist on any of the seat's hardware, logind won't tell the display manager about the seat, and might not set device permissions properly if a user logs into that seat (TODO: confirm).

The udev rules that come with open-source video drivers tag the video card with `master-of-seat` for you. You should only need to set up a rule to tag `master-of-seat` if you are using a proprietary video card driver.

It is recommended that you apply the `master-of-seat` tag to the video card, but you may tag a different device instead. Tagging the video card with `master-of-seat` is recommended because it is often the only device that is critical for the seat.

=== Example #1 ===
Example system #1 has two seats (`seat0` and `seat1`) and uses open-source video drivers. The file `/etc/udev/rules.d/99-multiseat.rules` was created and the following rules were added to it:
 {{{
# assign USB ports
TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:1d.7/usb2/*", ENV{ID_SEAT}="seat1", TAG+="seat1"

# assign video cards
TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:07.0/0000:03:00.0/*", ENV{ID_SEAT}="seat1", TAG+="seat1"
 }}}

=== Example #2 ===
Example system #2 has two seats (`seat0` and `seat1`) and uses the proprietary NVIDIA driver. The file `/etc/udev/rules.d/99-multiseat.rules` was created and the following rules were added to it:
 {{{
# assign USB ports
TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/*", ENV{ID_SEAT}="seat1", TAG+="seat1"

# assign video cards
TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/*", ENV{ID_SEAT}="seat1", TAG+="seat1"

# add master-of-seat tag to video cards
TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:01.0/0000:01:00.0/*", TAG+="master-of-seat"
TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/*", TAG+="master-of-seat"
 }}}

=== Tips and Troubleshooting ===

You MUST NOT have any newlines in a rule.

Use `udevadm trigger` after you edit your rules to make them take effect

Use `udevadm info --export-db` to see what udev did with your devices (to debug your rules).

== 3. Configure lightdm ==
Modify your `lightdm.conf` and make sure you have an entry per seat. Add `xdg-seat=<seatname>` to each seat and add `xserver-vt=0` to each seat EXCEPT `seat0`.

Also, add `user-authority-in-system-dir=true` to the `SeatDefaults` section. This prevents LightDM from trying to use the same Xauthority file for all seats, which causes permission denied problems.

If you do not use the version of X from the multiseat PPA, you will need to tell LightDM to start `/lib/systemd/systemd-multi-seat-x` instead of `X`. This program is a small wrapper around `X` that prevents input events on non-`seat0` seats from going to `seat0` and disables VT switching on non-`seat0` seats. It is only available in Ubuntu 13.10 (saucy) and newer.

Example:
 {{{
[SeatDefaults]
user-authority-in-system-dir=true
# for saucy and newer: the following line is only needed if you're not
# using the version of X from the multiseat PPA (but it shouldn't hurt
# if you are)
xserver-command=/lib/systemd/systemd-multi-seat-x

[Seat:0]
xdg-seat=seat0

[Seat:1]
xdg-seat=seat1
xserver-vt=0
 }}}

== 4. (if needed) Configure X.Org Server ==
Suppose you need to modify your `xorg.conf` to change some video driver settings for `seat1`. You have a couple of options:

 1. Create a file like `/etc/X11/xorg.conf.seat1` that contains all X settings for `seat1`, then set `xserver-config` in your `/etc/lightdm/lightdm.conf`:
  {{{
[Seat:1]
xdg-seat=seat1
xserver-vt=0
xserver-config=/etc/X11/xorg.conf.seat1
  }}}
 '''Note:''' This will not work if you use the `systemd-multi-seat-x` wrapper because it generates its own config file that overrides the `xserver-config` value. There's also no way to do such a thing if you use `gdm` instead of `lightdm` (e.g. if you have installed Ubuntu GNOME), because it doesn't support passing custom config file to X server.
 2. Create a file like `/etc/X11/xorg.conf.d/90-seat1.conf` and put the settings there. This config file will be read by all seats, so use the `MatchSeat` directive to target the settings to a particular seat. For example:
  {{{
Section "Device"
    Identifier "card0"
    Driver "nvidia"
    Option "NoLogo" "True"
    MatchSeat "seat1"
EndSection
  }}}

== 5. Install PPA Packages ==
Upgrade to the packages in the multiseat PPA by running the following commands:
 {{{
sudo apt-add-repository ppa:ubuntu-multiseat/ppa
sudo apt-get update
sudo apt-get upgrade
 }}}

== 6. (raring only) install libpam-systemd ==
The `libpam-systemd` package replaces `libpam-xdg-support`. Ubuntu 13.10 (saucy) and newer already have `libpam-systemd` installed.

== 7. Reboot ==

== 8. Profit! ==
See [[MultiseatTeam/Instructions]]
Line 236: Line 109:
  * move status and instructions to separate wiki pages
  * From now on, this changelog will only note changes to PPA packages. Changes to the wiki pages can be found by looking at the edit history.

Introduction

The MultiseatTeam maintains packages in the multiseat PPA. These packages are Ubuntu packages that have been patched to improve support for multiseat.

Status

See MultiseatTeam/Status

Instructions

See MultiseatTeam/Instructions

Known Issues

  • DVB device ACLs and MythTV: udev and logind want only logged-in users to have access to attached DVB devices. This is accomplished by setting up /dev ACLs when a user logs in. Unfortunately, this conflicts with MythTV, which always wants access to the TV tuner device(s). I'm not exactly sure how to fix this. Modifying /lib/udev/rules.d/70-uaccess.rules and 70-udev-acl.rules and commenting out the dvb lines seems to work, but is fragile -- those files will be replaced the next time systemd-services and udev are upgraded. udev apparently doesn't provide a way to remove a tag once one has been set, so putting a new file in /etc/udev/rules.d won't work. Anyone have any ideas?

  • bug #976124: On some systems, only one user can be logged in by typing a password at a time. All other users must be automatically logged in via LightDM's autologin-user setting.

  • Due to a technical limitation in Linux's virtual terminal subsystem and how it interacts with X, only seat0 can switch users. To switch users on another seat you must first log out and then log back in as the other user. Perhaps Mir, Wayland, and/or kmscon will address this.

  • LightDM is unaware that user switching is unsupported on non-seat0 seats. It will allow you to try to switch, but fails to switch.

  • bug #1190581: Automatic multiseat support has not yet been implemented.

ChangeLog

2013-07-11
  • initial upload of packages for raring
  • initial draft of instructions
2013-07-12
  • update instructions
  • update known issues
2013-07-14
  • interpret LightDM xserver-vt=0 setting to mean -sharevts

  • add documentation for the new LightDM settings
  • improve LightDM logging
  • update instructions
  • update known issues
  • backport newer upstream (saucy) packages to get better logind support

  • add backported acpi-support package to drop consolekit dependency

2013-07-15
  • update known issues
2013-07-17
  • update known issues
  • update dbus

2013-07-18
  • backport newer indicator-session

  • remove known issues that I believe are fixed by the newer indicator-session

2013-07-20
  • upload lightdm for saucy

2013-08-04
  • update lightdm to the latest upstream version

  • lightdm: change xserver-seat setting name to xdg-seat

  • other miscellaneous internal lightdm cleanups in preparation for submission upstream

2013-08-07
2013-08-08
  • add unity-greeter with fix for bug #1201122 integrated

  • add xorg-server with fix for bug #1209008 integrated

  • update known issues
2013-08-10
  • update patch for unity-greeter

2013-08-14
  • update xorg-server and unity-greeter for saucy

  • update lightdm multiseat patch from multiseat bzr branch

2013-10-19
  • raring dbus: cherry-pick changes from saucy 1.6.12-0ubuntu6 and 1.6.12-0ubuntu7

  • raring network-manager: cherry-pick bluetooth bug fix from saucy 0.9.8.0-0ubuntu22 (also raring 0.9.8.0-0ubuntu6.1)

  • raring policykit-1: update to latest saucy version

  • saucy unity-greeter: remove; new upstream version has been released with multiseat change integrated

  • xorg-server: apply fix for bug #1209008 to latest version

  • raring gnome-screensaver, gnome-settings-daemon: update to newer saucy versions to get logind fixes

  • lightdm: apply multiseat patches to latest version

2013-10-23
2013-10-24
2013-10-25
  • backport newer saucy gdm to raring to get logind support; add multiseat automatic login patch that was just added to the saucy version of gdm

2013-11-01
2013-11-07
  • lightdm: update to newer upstream version

2013-12-27
  • raring systemd: cherry-pick changes made for 198-0ubuntu12 (to get org.freedesktop.login1 dbus service)

2014-02-14
2014-02-16
  • update lightdm configuration instructions

2014-02-17
  • saucy xorg-server: update to newer upstream version

  • update xorg-server status

  • added MatchSeat example for xorg-server configuration

2014-02-18
  • saucy gdm: revert patch introduced at 2013-11-01 (see above)

  • add more details to udev instructions
2014-02-19
  • update X.Org server configuration instructions
  • update xorg-server status

2014-02-20
  • update gdm status

  • update xorg-server status

  • introduce trusty xorg-server package with multiseat patches

2014-02-21
  • update X.Org server configuration instructions
  • introduce trusty gdm package with multiseat patches

  • move status and instructions to separate wiki pages
  • From now on, this changelog will only note changes to PPA packages. Changes to the wiki pages can be found by looking at the edit history.


CategoryMultiseatTeam

MultiseatTeam/Packages (last edited 2015-03-17 15:49:33 by bb42d0d7)