Introduction to GDM

GDM is a system service that is responsible for providing graphical logins and managing local and remote displays.



Development versions of BLFS may not build or run some packages properly if dependencies have been updated since the most recent stable versions of the book.

Package Information

GDM Dependencies


AccountsService-22.08.8, GTK+-3.24.36, ISO Codes-4.12.0, itstool-2.0.7, libcanberra-0.30, libdaemon-0.14, and Linux-PAM-1.5.2



Runtime Dependencies

gnome-session-43.0, gnome-shell-43.2, and elogind-246.10

User Notes:

Installation of GDM

It is recommended to have a dedicated user and group to take control of the gdm daemon after it is started. Issue the following commands as the root user:

groupadd -g 21 gdm &&
useradd -c "GDM Daemon Owner" -d /var/lib/gdm -u 21 \
        -g gdm -s /bin/false gdm &&
passwd -ql gdm

First, adapt GDM to build without systemd present:

sed -i -r '/(^| )systemd_dep/d'

Install GDM by running the following commands:

sed -e '[email protected]@elogind@'                                \
    -e '/elogind/isession  required' \
    -i data/pam-lfs/gdm-launch-environment.pam &&

mkdir build &&
cd    build &&

meson --prefix=/usr               \
      --buildtype=release         \
      -Dgdm-xsession=true         \
      -Drun-dir=/run/gdm          \
      -Dsystemd-journal=false     \
      -Dsystemdsystemunitdir=/tmp \
      -Dsystemduserunitdir=/tmp   .. &&

This package does not come with a usable test suite.

Now, as the root user:

ninja install &&
rm -rv /tmp/*.{service,target.d}

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

-Dinitial-vt=7: Use this switch to make GDM start on VT7 instead of the first free VT.

-Ddefault-pam-config=lfs: Use this switch if you did not create the /etc/lfs-release file or distribution auto detection will fail and you will be unable to use GDM.

-Dgdm-xsession=true: This enables the installation of the GDM Xsession file.

Configuring GDM

Config Files


Configuration Information

The GDM daemon is configured using the /etc/gdm/custom.conf file. Default values are stored in GSettings in the gdm.schemas file. It is recommended that end-users modify the /etc/gdm/custom.conf file because the schemas file may be overwritten when the user updates their system to have a newer version of GDM.

Boot Script

To start gdm automatically when the system is switched to runlevel 5, install the /etc/rc.d/init.d/xdm script and the /etc/sysconfig/xdm configuration file included in the blfs-bootscripts-20230101 package and adjust /etc/inittab by running as the root user:

make install-gdm

In order to permanently set the default runlevel to 5, starting the gdm greeter screen automatically, you can modify /etc/inittab. As the root user:

sed /initdefault/s/3/5/ -i /etc/inittab

Starting GNOME

It is possible to start GNOME from the command line, rather than using GDM. However, you must still have GDM installed for some portions of the desktop to work. One reason to start from the command line is if you want Wayland support on a system that has the proprietary NVIDIA driver installed, since GDM will not show the Wayland session type on such a system.

To start GNOME using xinit-1.4.2, run the following commands:

cat > ~/.xinitrc << "EOF"
dbus-run-session gnome-session


Alternatively, to start GNOME with Wayland support, run the following command:

dbus-run-session -- gnome-shell --display-server --wayland


Installed Programs: gdm, gdmflexiserver, and gdm-screenshot
Installed Libraries: and (PAM Module)
Installed Directories: /etc/gdm, /usr/include/gdm, /usr/share/gdm, and /usr/share/help/*/gdm

Short Descriptions


is a login prompt for GNOME


is a screenshot tool for GDM