Tutorial to set up a multiseat with Plugable Dock Stations, gdm 2.27, ConsoleKit 0.4.1 and Xorg 1.8 on Ubuntu 10.4

This is a tutorial to set up a multiseat with Plugable Dock Stations, gdm 2.27, ConsoleKit 0.4.1 and Xorg 1.8 on Ubuntu 10.4. Basically is necessary to download and install the latest version of Xorg, gdm (display-configuration branch) and ConsoleKit (multi-seat branch) from git repository. Then is need to create and modify some configuration files to create or modify (xorg.conf, sessions.d, displays.d, seats.d, …). I’m developing scripts to make this instalation more automatic.

First of all, become root user:

$ sudo su

– Install some dependences packages for compile things:

Change the repository to download latest packages from Ubuntu Unstable version. Open the file /etc/apt/sources.list and change the lines:

deb http://br.archive.ubuntu.com/ubuntu/ lucid main restricted
deb-src http://br.archive.ubuntu.com/ubuntu/ lucid main restricted


deb http://br.archive.ubuntu.com/ubuntu/ maverick main restricted
deb-src http://br.archive.ubuntu.com/ubuntu/ maverick main restricted

# apt-get update

# apt-get install git-core build-essential automake autoconf libtool libpthread-stubs0-dev libx11-dev diffstat libexpat1-dev libxdamage-dev libxext-dev libxfixes-dev libxxf86vm-dev quilt x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-xext-dev gettext x11proto-xf86vidmode-dev xutils-dev libxt-dev libxmu-dev libxi-dev libpixman-1-dev libgcrypt11-dev libpciaccess-dev x11proto-dri2-dev libfreetype6-dev gnome-common dpkg-dev autogen fakeroot pkg-config module-assistant libgl1-mesa-dri libgl1-mesa-dev

– Compile Xorg 1.8 from git using this tutorial. It will install Xorg at /opt/xorg.

– Compile mouse, keyboard and evdev Xserver drivers:

# git clone git://anongit.freedesktop.org/driver/xf86-input-mouse
# cd xf86-input-mouse
# ./autogen --prefix=/opt/xorg
# make
# make install

# git clone git://anongit.freedesktop.org/driver/xf86-input-keyboard
# cd xf86-input-keyboard
# ./autogen --prefix=/opt/xorg
# make
# make install

# git clone git://anongit.freedesktop.org/driver/xf86-input-evdev
# cd xf86-input-evdev
# ./autogen --prefix=/opt/xorg
# make
# make install

– Download and Install xkeyboard configuration:

# git clone git://anongit.freedesktop.org/xkeyboard-config
# cd xkeyboard-config
# ./autogen --prefix=/opt/xorg
# make
# make install

– Download and Install DisplayLink FrameBuffer Driver:

# module-assistant prepare
# git clone http://git.plugable.com/webdav/udlfb/
# cd udlfb
# make
# make install
# depmod -a

Now, when you plug in a DisplayLink device, you should see a “green screen” as
the driver successfully loads and sets the graphics mode to match your monitor.

– Download and Install DisplayLink Xserver Driver:

# git clone http://git.plugable.com/webdav/xf-video-udlfb/
# cd xf-video-udlfb
# ./configure --prefix=/opt/xorg
# make
# make install

– Make a link in /opt/xorg/bin to xkbcomp

# ln -s /usr/bin/xkbcomp /opt/xorg/bin/xkbcomp

– Download gdm (display-configuration branch) from git repository and install it:

# git clone git://git.gnome.org/gdm -b display-configuration
# sudo apt-get build-dep gdm
# cd gdm
# CFLAGS="-g -O2 -g -Wall -O2" CXXFLAGS="-g -O2 -g -Wall -O2" CPPFLAGS="" LDFLAGS="-Wl,-Bsymbolic-functions" ./autogen.sh --build=i486-linux-gnu --prefix=/usr --includedir="\${prefix}/include" --mandir="\${prefix}/share/man" --infodir="\${prefix}/share/info" --sysconfdir=/etc --localstatedir=/var --libexecdir="\${prefix}/lib/gdm" --disable-maintainer-mode --disable-dependency-tracking --disable-silent-rules --srcdir=. --disable-scrollkeeper --with-at-spi-registryd-directory=/usr/lib/at-spi --enable-ipv6=yes --with-incomplete-locales --with-selinux
# make
# make install

– Download and Install ConsoleKit (multi-seat branch) from git repository:

# git clone git://anongit.freedesktop.org/ConsoleKit -b multi-seat
# cd ConsoleKit
# CFLAGS="-g -O2 -g -Wall -O2" CXXFLAGS="-g -O2 -g -Wall -O2" LDFLAGS="-Wl,-Bsymbolic-functions" ./autogen.sh --build=i486-linux-gnu --prefix=/usr --includedir="\${prefix}/include" --mandir="\${prefix}/share/man" --infodir="\${prefix}/share/info" --sysconfdir=/etc --localstatedir=/var --libexecdir="\$(prefix)/lib/ConsoleKit" --disable-maintainer-mode --disable-dependency-tracking --disable-silent-rules --srcdir=. --enable-pam-module --with-pid-file=/var/run/console-kit-daemon.pid
# make
# make install

– Download and Install udev rules to detect the Dock Stations and a script to name the seats in /dev directory. It also install xorg.conf and ConsoleKit files for two seats.

# git clone

# cd usbseat
# ./install.sh

– Fbcon workaround

fbcon is a standard Linux kernel module, which aggressively assumes it can open any framebuffer device and take it over for use as a text terminal. Unfortunately, that’s not what we want if we’re going to be using that
framebuffer to run its own X server. So we need to add a file /etc/modprobe.d/fbcon.conf to disable fbcon and leave our framebuffers free for other uses.

# echo "blacklist font
blacklist tileblit
blacklist bitblit
blacklist fbcon" > /etc/modprobe.d/fbcon.conf

# update-initramfs -u

Now, when you reboot and run “lsmod” you should not see fbcon in the loaded modules. And in /sys/class/graphics you should see fb0, instead of fbcon.

– To test this new environment restart gdm and ConsoleKit:

# service gdm stop; sudo pkill -f /usr/sbin/console-kit-daemon
# /usr/sbin/console-kit-daemon && sudo service gdm start

This is just the hard work to set up a multiseat with Plugable Dock Stations and latest versions of gdm, ConsoleKit and Xorg. I’m working to make this configuration more easy and automatic. This tutorial is for
a static environment, I’m also working to use ‘ck-seat-tool’ for make the environment dynamic.


6 Responses to “Tutorial to set up a multiseat with Plugable Dock Stations, gdm 2.27, ConsoleKit 0.4.1 and Xorg 1.8 on Ubuntu 10.4”

  1. 1 Bernie Thompson July 13, 2010 at 12:48 am

    Lucas – Great job getting this working, and the tutorial posted!

  2. 2 Anonymous July 15, 2010 at 6:21 am

    Why do people use “sudo su” rather than “sudo bash”, “sudo -s”, or “sudo -i”?

  3. 3 gyula August 5, 2010 at 9:44 am


    I have been trying to achieve multiseat environment for several days on Ubuntu 10.04, but no success… Does your method work on a 64bit system? I have two identical GeForce 9800GT cards in the machine.


  4. 4 Rene Crisostomo November 21, 2010 at 8:33 am

    Nice tutorial. I will to use this with my displaylink device. Thanks for posting the tutorial.

  5. 5 Dr ulhas deshmukh May 3, 2011 at 2:50 pm

    I was trying in my lab with my student, but facing a lot of problems. We will try it tomorrow.

  1. 1 Initialize Seats Automaticaly « Lucas Ferreira's Blog Trackback on August 2, 2010 at 8:56 pm

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s


%d bloggers like this: