Lugs Penguin Logo

LUGS - Vorträge: X Display Manager xdm vom 5.12.1996

LUGS

Über die LUGS
Statuten und Protokolle
Sektionen
Terminliste
IRC
Mailinglisten
Kontaktadressen
Mitglied werden
Internes
Mitgliederliste

LINUX

Was ist Linux?
   Screenshots
Distributionen
   kmLinux
Firmen
Ressourcen
LIB

Dokumentation
Events
Projekte
Vorträge
Allgemeines

ChangeLog
Sprache
Galerie

Wozu xdm verwenden?

Damit man unter Linux und X (wie bei einer richtigen Workstation üblich) direkt beim Booten den X Server starten kann und dann im graphischen Modus mit einer Dialogbox zum Login aufgefordert wird.

Dies ist erheblich vornehmer als auf einer Console mit /bin/login einzuloggen und dann von Hand X mit startx/xinit zu starten (=Steinzeit, so arbeitete man unter DOS 5.0/Windows 3.0).

Wie funktioniert xdm?

Analog zum normalen Unix Login-Vorgang:
/etc/init -> getty, login, bash, ev startx -> init von vorne
wird hier gemacht:
/usr/X11R6/bin/xdm -> XLogin, session, fvwm -> xdm von vorne
xdm übernimmt also die Aufgabe von init.

Wie konfiguriert man xdm?

Im xdm Konfigurations-Directory (/var/X11R6/lib/xdm/) sind mehrere Dateien, die die verschiedenen Aspekte von xdm steuern. Wichtig davon sind:
  • xdm-config : nennt alle weiteren Dateien, die xdm benutzt
  • Xsetup_0 : baut den X Server Bildschirm auf, bevor Login Dialogbox
  • Xresources : konfiguriert die Login Dialogbox von xdm (XLogin)
  • TakeConsole : nach Login mit root-Privilegien den User vorbereiten
  • Xsession : User Login Prozess, entspricht dem bash (oder fvwm)
  • GiveConsole : räumt mit root-Privilegien TakeConsole wieder auf
Danach wird noch der X Server von xdm geresettet und alles wiederholt.

Damit beim Booten automatisch xdm kommt (anstelle eines Console Logins) muss man noch in /etc/inittab die Zeile

# Default runlevel.
id:5:initdefault:
von 5 (mehrere gettys starten) in 6 (xdm starten) abgeändert werden.

Was muss der User bei xdm noch machen?

xdm ruft zuerst ein systemweites Xsession auf. Dieses ruft dann ein userspezifisches .xsession (oder falls keines existiert das normale .xinit) auf. Darin wird der User seinen Windowmanager oder etwas ähnliches aufrufen. Dessen Ende signalisiert wie üblich einen Logout, nur dass danach nicht X beseitigt wird sondern nur der X Server geresettet wird und wieder die Login Dialogbox erscheint.

Wer sich daran gewöhnt hat, Linux mit Ctrl-Alt-Del in der Console herunterzufahren wird dies schnell bei xdm vermissen. Aber Rettung ist schnell zuhanden, einfach in .fvwmrc folgendes addieren

# and the keys that kill everything...
Key Delete      A  CM  Exec "C-A-D" /sbin/shutdown -t3 -rf now
Key KP_Delete   A  CM  Exec "C-A-D" /sbin/shutdown -t3 -rf now
Key KP_Decimal  A  CM  Exec "C-A-D" /sbin/shutdown -t3 -rf now

Was muss bei xdm noch beobachtet werden?

Leider hat xdm (bzw. Xsession) ein Problem: mit login/bash werden die Dateien /etc/profile und .profile ausgeführt um z.B. Environment Variablen zu setzen, xdm macht das nicht. Daher hab ich im Xsession diese Aufrufe hinzugefügt.
# Since xdm doesn't run a bash -login shell (or any other login shell)
# then read the files that it would, to set up the user's environment
profile=/etc/profile
userprofile=~/.profile
if [ -e $profile ]; then
        source $profile
fi
if [ -e $userprofile ]; then
        source $userprofile
fi

Ein eine kleine Falle gibts in xdm noch: ohne funktionierendes X ist man am Ende! Wer z.B. in /etc/XF86Config herumfummelt oder in .xinit oder .fvwnrc herumexperimentiert und dabei eines dieser Dateien so kaputt macht, dass die entsprechenden Programme nicht mehr funktionieren hat neu nach dem Booten einen gecrashten X Server vor sich, keine Console, Ende mit irgendwelchen Login Versuchen!
Um das zu vermeiden sollte man:

  • Nachdem man xdm konfiguriert hat zuerst von der Console aus mit telinit 6 testen. Erst wenn es läuft initdefault auf 6.
  • Für "gefährliche" Experimente mit XF86Config etc. wieder mit starx/xinit arbeiten. Dazu gehören z.B. neue ModeLines, BPPs.
Wer diesen sinnvollen Rat "vergisst" sollte den single-user Boot kennen: Dazu im LILO den Prompt holen, mit linux single einen single-user Boot machen, dann inittab von 6 auf 5 frisieren, dann reboot. Wer nach einem single user Boot nicht auf die Platte schreiben kann (weil read-only gemountet wurde) kann dies mit mount -w -n -o remount / retten.

Wo find ich mehr zu diesem Thema?

Für die Details der Dateien und des ganzen Prozesses ist die man Page von xdm sehr zu empfehlen.
Diese Page ist von Neil Franklin, letzte Modifikation 96.12.04

Powered by Linux, served by Apache / PHP, last changes done 04.02.2008 -- Copyright