The kdm Handbook
Prev |  | Next

# Chapter 3. Configuring your system to use kdm

This chapter assumes that your system is already configured to run the X Window System, and that you only need to reconfigure it to allow graphical login.

# 3.1. Setting up kdm

The fundamental thing that controls whether your computer boots to a terminal prompt (console mode) or a graphical login prompt is the default runlevel. The runlevel is set by the program /sbin/init under the control of the configuration file `/etc/inittab`. The default runlevels used by different Unix systems (and different Linux distributions) vary, but if you look at `/etc/inittab` the start of it should be something like this:

     # Default runlevel. The runlevels used by RHS are:
     # 0 - halt (Do NOT set initdefault to this)
     # 1 - Single user mode
     # 2 - Multiuser, without NFS
     # 3 - Full multiuser mode
     # 4 - unused
     # 5 - X11
     # 6 - reboot (Do NOT set initdefault to this)

     id:3:initdefault:

All but the last line of this extract are comments. The comments show that runlevel 5 is used for X11 and that runlevel 3 is used for multi-user mode without X11 (console mode). The final line specifies that the default runlevel of the system is 3 (console mode). If your system currently uses graphical login (for example, using xdm) its default runlevel will match the runlevel specified for X11.

The runlevel with graphical login (xdm) for some common Linux distributions are:

- 5 for Red Hat 3.x and later, and for Mandrake

- 4 for Slackware

- 3 for S.u.S.E. 4.x and 5.x

The first step in configuring your system is to ensure that you can start kdm from the command line. Once this is working, you can change your system configuration so that kdm starts automatically each time you reboot your system.

To test kdm, you must first bring your system to a runlevel that doesn't run xdm. To do so, issue a command like this:

     /sbin/init 3

Instead of the number "`3`" you should specify the appropriate runlevel for console mode on your system.

Next you need to locate your xdm configuration directory; normally `/etc/X11/xdm/` or `/usr/X11R6/lib/X11/xdm/`. The configuration directory contains the file `Xsetup_0`. If you build kdm from source code and the `configure` step is unable to find this directory, it will install a new version of `Xsetup_0` from a template file in the kdm source tree. You can include the line:

     kdmdesktop

In your file to display some nice backgrounds (pictures and background colors). (I'm not sure if this still works; it is certainly not required). If your `KDEDIR` is not `/opt/kde` you may have to change the path to `kdmdesktop`.

If your system uses Pluggable Authentication Modules (PAM), which is normal with recent Red Hat and Mandrake systems, you should check that your PAM configuration permits login through the service named `xdm`. If you previously used xdm successfully, you should not need to make any changes to your PAM configuration in order to use kdm. `/etc/pam.conf` or `/etc/pam.d/xdm`. Information on configuring PAM is beyond the scope of this handbook, but PAM comes with comprehensive documentation (try looking in `/usr/doc/pam*/html`).

Now it's time for you to test kdm by issuing the following command:

     kdm -nodaemon

If you get a kdm login box and you are able to log in, things are going well. The main thing that can go wrong here is that the run-time linker might not find the shared Qt or KDE libraries. If you have a binary distribution of the KDE libraries, make sure kdm is installed where the libraries believe kde is installed (usually `/opt/kde/bin`) and try setting some environment variables to point to your KDE and Qt libraries. For example:

     export KDEDIR=/opt/kde
     export QTDIR=/usr/lib/qt2
     export PATH=$KDEDIR/bin:$QTDIR/bin:$PATH
     export LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib

If you are still unsuccessful, try starting xdm instead, to make sure that you are not suffering from a more serious X configuration problem.

When you are able to start kdm successfully, you can start to replace xdm by kdm. Again, this is distribution-dependent.

- For Redhat, edit `/etc/inittab`, look for the string xdm and replace it with kdm (including all paths).

- For Mandrake, the X11 runlevel in `/etc/inittab` invokes the shell script `/etc/X11/prefdm`, which is set up to select from amongst several display managers, including kdm. Make sure that all the paths are correct for your installation.

- For S.u.S.E, edit `/sbin/init.d/xdm` to add a first line:

       . /etc/rc.config
       DISPLAYMANAGER=kdm
       export DISPLAYMANAGER

- Most other distributions are a variation of one of these.

If you don't like changing `inittab`, an alternative is to rename `xdm` to `xdm.bak` and make `xdm` a symbolic link to kdm.

At this stage, you can test kdm again by bringing your system to the runlevel that should now run kdm. To do so, issue a command like this:

     /sbin/init 5

Instead of the number "`5`" you should specify the appropriate runlevel for running X11 on your system.

The final step is to edit the `initdefault` entry in `/etc/inittab` to specify the appropriate runlevel for X11.

| Before you make this change, ensure that you have a way to reboot your system if a problem occurs. This might be a "rescue" floppy-disk provided by your operating system distribution or a specially-designed "rescue" floppy-disk, such as `tomsrtbt`. Ignore this advice at your peril.

When you reboot your system, you should end up with the graphical kdm login box.

If this step is unsuccessful the most likely problem is that the environment used at boot time differs from the environment that you used for testing at the command line. Check files like `/etc/X11/xdm/Xsetup_0` (and any scripts that it invokes) to make sure that your path is not being changed without your knowledge. If you are trying to get two versions of KDE to co-exist, be particularly careful that the settings you use for your `PATH` and `LD_LIBRARY_PATH` environent variables are consistent, and that the startup scripts are not over-riding them in some way.

Prev | Home | Next
Lilo |  | Supporting multiple window managers