7.5. Runlevels and XFree86
In most cases, the default installation of Red Hat Linux configures a machine to
boot into a graphical login environment, known as runlevel 5. It is
possible, however, to boot into the
text-only multi-user mode called runlevel 3 and begin an X session from
there.
For more information about runlevels, refer to Section 1.4 SysV Init Runlevels.
This section reviews how XFree86 starts in both runlevel 3 and runlevel 5.
7.5.1. Runlevel 3
When in runlevel 3, the best way to start an X session is to log in
and type startx. The startx
command is a front-end to the xinit command which
launches the XFree86 server and connects X clients applications to it.
Because the user is already logged into the system at runlevel 3,
startx does not launch a display manager or
authenticate users. Refer to Section 7.5.2 Runlevel 5 for
more information about display managers.
When the startx command is executed, it searches
for a .xinitrc file in the user's home directory
to define the desktop environment and possibly other X client
applications to run. If no .xinitrc file is
present, it will use the system default /etc/X11/xinit/xinitrc
file instead.
The default xinitrc script then looks for
user-defined files and default system files, including
.Xresources, .Xmodmap, and
.Xkbmap in the user's home directory and
Xresources, Xmodmap, and
Xkbmap in the /etc/X11/
directory. The Xmodmap and
Xkbmap files, if they exist, are used by the
xmodmap utility to configure the keyboard. The
Xresources files are read to assign specific
preference values to applications.
After setting these options, the xinitrc script
executes all scripts located in the
/etc/X11/xinit/xinitrc.d/ directory. One
important script in this directory is xinput,
which configures settings such as the default language.
Next, the xinitrc script tries to execute
.Xclients in the user's home directory and turns
to /etc/X11/xinit/Xclients if it cannot be
found. The purpose of the Xclients file is to
start the desktop environment or, possibly, just a basic window
manager. The .Xclients script in the user's home
directory starts the user-specified desktop environment in the
.Xclients-default file. If
.Xclients does not exist in the user's home
directory, the standard /etc/X11/init/Xclients
script attempts to start another desktop environment, trying GNOME
first and then KDE followed by twm.
The user is returned to a text mode user session after logging out of
X from runlevel 3.
7.5.2. Runlevel 5
When the system boots into runlevel 5 a special X client application,
called a display manager is launched. A user must authenticate using
the display manager before any desktop environments or window
managers are launched.
Depending on the desktop environments installed on the system, three
different display managers are available to handle user
authentication.
gdm — The default display manager for
Red Hat Linux, gdm allows the user to configure language
settings, shutdown, restart or log in to the system.
kdm — KDE's display manager which
allows the user to shutdown, restart or log in to the system.
xdm — A very basic display manager
which only lets the user log in to the system.
When booting into runlevel 5, the prefdm script
determines the preferred display manager by referencing the
/etc/sysconfig/desktop file. Refer to the
/usr/share/doc/initscripts-<version-number>/sysconfig.txt
file (where <version-number> is the
version number of the initscripts package) for a
listing of options available for this file.
Each of the display managers references the
/etc/X11/xdm/Xsetup_0 file to set up the login
screen. Once the user logs into the system, the
/etc/X11/xdm/GiveConsole script runs to assign
ownership of the console to the user. Then, the
/etc/X11/xdm/Xsession script runs to accomplish
many of the tasks normally performed by the xinitrc
script when starting X from runlevel 3, including setting system and
user resources, as well as running the scripts in the
/etc/X11/xinit/xinitrc.d/ directory.
The user can specify which desktop environment they want to utilize
when they authenticate using the gdm or
kdm display managers by selecting it from the
menu (accessed by selecting [on the Panel] =>
=> => ). If
the desktop environment is not specified in the display manager, the
/etc/X11/xdm/Xsession script will check the
.xsession and .Xclients
files in the user's home directory to decide which desktop environment
to load. As a last resort, the
/etc/X11/xinit/Xclients file is used to select a
desktop environment or window manager to use in the same way as
runlevel 3.
When the user finishes an X session on the default display
(:0) and logs out, the
/etc/X11/xdm/TakeConsole script runs and
reassigns ownership of the console to the root user. The original
display manager, which continued running after the user logged in,
takes control by spawning a new display manager. This restarts the
XFree86 server, displays a new login window, and starts the entire
process over again.
The user is returned to the display manager after logging out of X
from runlevel 5.
For more information about how display managers control user
authentication, refer to the
/usr/share/doc/gdm-<version-number>/README
(where <version-number> is the
version number for the gdm package installed) and
the xdm man page.