guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GDM status


From: Andy Wingo
Subject: GDM status
Date: Tue, 29 Aug 2017 10:09:25 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)

Hi!

I gave a poke to getting the GNOME Display Manager (GDM) to work.  The
idea would be to replace SLiM, at least for GNOME workstations.  My goal
is to get native GNOME screen locking to work.  I would also like to get
Wayland to work at some point as well.

The upstream state of GDM right now is a little weird -- I feel like it
was being developed mostly by Fedora GNOME folks who were racing towards
a new future of Wayland and more secure logins but who haven't had time
to collect and document things.  The documentation that exists is
extensive but completely out of date, corresponding to an older
architecture.  But I think the general idea is for GDM to spawn a
limited GNOME session, including GNOME shell.  That is the UI for the
greeter.  The actual PAM authentication is handled by GDM via a worker
process (GdmSessionWorker).  GDM is also involved in screen lock --
specifically it handles unlocking of sessions.  I don't know how screen
lock works yet though.

The current Guix status of GDM is that we have a package and a service,
but the combination doesn't really work.  You can build this VM and
test:

    (use-modules (gnu))
    (use-service-modules desktop xorg)
    (use-package-modules gnome linux)

    (operating-system
      (host-name "gnome-test")
      (timezone "Europe/Paris")
      (locale "en_US.utf8")

      (bootloader (bootloader-configuration
                   (bootloader grub-bootloader)
                   (target "/dev/sda")))
      (file-systems (cons* (file-system
                             (device "root")
                             (type 'label)
                             (mount-point "/")
                             (type "ext4"))
                           %base-file-systems))

      (packages (cons strace %base-packages))

      (services (cons* (gnome-desktop-service)
                       (gdm-service)
                       (filter (lambda (x)
                                 (not (eq? (service-kind x) slim-service-type)))
                               %desktop-services))))

I have the GDM shepherd service marked as (auto-start #f), so you'll
have to go in manually and do "herd start xorg-server" as root.  What
happens is that GDM blanks the screen, starts a new session, then
somehow fails, blinks to the terminal, and restarts.  I have a really
hard time debugging it; I spent two or three days on it!

My biggest problem was being able to get out good log information.  With
the VM I wasn't able to launch multiple VT's, so I couldn't tail
/var/log/debug from other terminals; and trying to do anything from
terminal 1 was impossible, and of course you have no scrollback there.
Literally at one point I was taking dozens of screenshots in a row,
hoping one of them captured the part when the VT wasn't blank.

I got the same results on "bare metal", with the unhappy bonus that
other terminals slowed down and stopped processing input events, to the
point that I could barely log in.

In theory the configuration file that I write should cause GDM to log
more information to syslog but I am not sure if it's working.  I got the
best results by patching out the part of GDM that enables logging to
syslog, instead logging to the terminal, and setting the
G_MESSAGES_DEBUG=all environment variable (so that I would get g_debug()
output).

So that's where GDM is.  I need to step back for a while, and I would be
happy if anyone else wants to take a stab at it :)  I feel like it's
actually not that far away.  Godspeed!

Andy



reply via email to

[Prev in Thread] Current Thread [Next in Thread]