unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* GDM status
@ 2017-08-29  8:09 Andy Wingo
  0 siblings, 0 replies; only message in thread
From: Andy Wingo @ 2017-08-29  8:09 UTC (permalink / raw)
  To: guix-devel

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2017-08-29  8:10 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-29  8:09 GDM status Andy Wingo

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).