Zurück

1.110.1

Installation und Konfiguration von XFree86


Beschreibung: Prüfungskandidaten sollten in der Lage sein, X und einen X-Fontserver zu installieren und zu konfigurieren. Dieses Lernziel beinhaltet die Überprüfung, ob Grafikkarte und Monitor von einem X-Server unterstützt werden, und das Anpassen und Trimmen von X für Grafikkarte und Monitor. Ebenfalls enthalten ist die Installation eines X-Fontservers, die Installation von Schriftarten und das Konfigurieren von X zur Benutzung des Fontservers (möglicherweise durch manuelles Bearbeiten des Abschnitts "Files" in /etc/X11/XF86Config).

Die wichtigsten Dateien, Bezeichnungen und Anwendungen:


Grundlagen

Das X-Window-System oder kurz X11 ist ein netzbasiertes graphisches Fenstersystem, das auf einer Client/Server Architektur beruht. Programme, die ihre Ausgaben in Fenstern machen wollen sind Clients, die den Service in Anspruch nehmen, den der Display-Server anbietet, nämlich Ausgabe auf dem Schirm zu bringen und Eingaben von der Tastatur und Mouse entgegenzunehmen.

Dabei ist wichtig, daß es möglich ist, daß Client und Server über ein Netzwerk miteinander kommunizieren können. Es ist also unerheblich, ob die Programme, die auf einem Bildschirm dargestellt werden auf dem lokalen Rechner laufen oder auf einem anderen Rechner im Netz.

Client und Server verständigen sich mittels einem Protokoll, dem sogenannten X-Protokoll. Dieses Protokoll nutzt als Transportbasis meist TCP/IP, aber auch DECNet oder der Betrieb auf reinen Unix-Sockets ist möglich. Technisch gesehen ist das X-Protokoll die eigentliche Definition des X-Window-System.

Durch die Definition eines eindeutigen Protokolls, das alle Fähigkeiten zur Übermittlung von graphischen Ausgaben beinhaltet wird X11 zur hardwareunabhängigen Graphikplattform. Das X11-System ist aufgegliedert in einen Displayserver und in Programme, die den Display-Service in Anspruch nehmen, also Clients. Ein Server kann für jede beliebige Art von Graphiksystemen geschrieben werden, über das vordefinierte X-Protokoll können beliebige Clients dann ihre Ausgaben auf dem Server machen.

Natürlich können Clients (also X11-Programme) auch lokal auf dem selben Rechner laufen, auf dem auch der Display-Server läuft, das ist sogar die Regel. Aber es können eben auch beliebige andere Rechner Programme laufen haben, deren Ausgaben dann auf unserem Server zu sehen sind.

Zusammenfassend können wir also sagen, das X11-System beruht auf drei Einzelelementen:

  1. Der Display-Server, der alle Ausgaben auf den Bildschirm steuert und die Eingaben von der Tastatur und der Maus entgegennimmt. Er ist ein Programm, das lokal auf dem Rechner läuft und Kontrolle über die Grafik-Hardware hat.
  2. Ein oder mehrere Clients, also Programme, die ihre Ein/Ausgabe nicht selbst erledigen sondern diese Aufgabe vom Display-Server erledigen lassen. Kurz gesagt sind alle X-Anwendungen (xterm, xsnow, xteddy, ...) Clients. Es ist unerheblich, auf welchem Rechner im Netz diese Programme laufen, solange sie mit dem Display-Server verbunden sind geht ihre Ausgabe auf den Bildschirm dieses Servers.
  3. Das X-Protokoll, das die Kommunikation zwischen den Clients und dem Display-Server regelt. Dieses Protokoll ist das einzige, das X11 eigentlich ausmacht. Prinzipiell kann für jedes graphikfähige Gerät ein X-Server geschrieben werden, wenn er das X-Protokoll versteht, kann er X-Clients erlauben, ihre Ausgaben auf dem Gerät auszugeben.

Bei der hier gestellten Aufgabe geht es also um die Installation eines X-Servers, also des Programms, das anderen Programmen (den X-Clients) den Dienst anbietet, sich auf dem Bildschirm darstellen zu können und die Eingabegeräte Tastatur und Mouse zu nutzen. Beim Umgang mit X11 ist es grundsätzlich wichtig, sich dieser Client-Server-Architektur immer bewußt zu sein, um tatsächlich zu verstehen, was eigentlich vorgeht.

Es gibt X-Server von verschiedensten Herstellern für verschiedenste Hard- und Softwaresysteme. Der hier verwendete X-Server ist der X-Free-86 Server. Dieser Server ist freie Software und für die Verwendung auf 80x86 Systemen (und kompatiblen Prozessoren) gedacht. Aus diesen Eigenschaften bezog er seinen Namen. XF86 ist der unter Linux verbreitetste Server, andere angebotene Server sind meist kommerzielle Produkte und spielen in der Praxis kaum eine Rolle.

Die Konfiguration des XFree86-Servers

Der Display-Server verwaltet die Hardware, deren Verwendung er anderen Clients ermöglichen soll. Er muß daher sehr genau über die installierte Graphik- und Eingabehardware Bescheid wissen. Insbesondere die folgenden Hardware-Elemente muß er verwalten:

Die gesamten Angaben über diese Geräte und auch alle anderen Konfigurationseinstellungen befinden sich in einer einzigen Datei. Diese Datei kann manuell bearbeitet werden, es ist eine einfache Textdatei. Sie heißt XF86Config und befindet sich in der Regel im Verzeichnis /etc/X11. Die Orginalversion von XF86 hatte eigentlich andere Orte für die Konfigurationsdatei vorgesehen, aber im neuen Filesystem Hierarchy Standard ist /etc/X11 festgelegt worden. Die meisten Distributionen halten sich heute an diesen Standard. Der Vollständigkeit halber seien hier nochmal die ursprünglichen Konfigurationsdateien genannt:

Noch heute funktionieren diese Dateien, werden aber kaum noch benutzt.

Weil heute zwei XFree86 Versionen im Umlauf sind (Version 3.x und Version 4.x) und die beiden unterschiedliche Formate ihrer Konfigurationsdatei erwarten, haben verschiedene Distributionen unterschiedliche Mechanismen entwickelt, um einen gleichzeitigen Betrieb beider Versionen zu ermöglichen. Entweder liegen beide Konfigurationsdateien in /etc/X11, dann trägt die Datei für die Version 4.x den Namen XF86Config-4, oder es wurde die Konfigurationsdatei für Version 3.x in /etc belassen und die von Version 4.x liegt in /etc/X11. Im weiteren Verlauf werden wir hier keine Unterschiede machen, sondern die Datei einfach immer /etc/X11/XF86Config nennen.

Früher musste die Konfigurationsdatei von Hand erstellt werden und es bestand die Gefahr, daß - bei falschen Monitor-Einstellungen - die Hardware tatsächlich beschädigt werden konnte. Die Errechnung der Bildschirmparameter war eine umständliche und schwierige Arbeit, die nicht immer das erreicht hatte, was gewünscht war. Durch die Architektur moderner Graphikkarten und Monitore ist diese Konfigurationsarbeit heute erheblich erleichtert worden. Zudem gibt es eine ganze Reihe von Hilfsmitteln, um die Konfigurationsdatei erstellen zu lassen.

Als distributionsunabhängige Zertifizierung genügt für LPI das Wissen um die ersten beiden Programme, alle anderen sind spezielle Lösungen der Distributionen. All diese Programme erledigen die selben Aufgaben (auf unterschiedliche Weise), die hier nochmal genauer dargestellt werden sollen. Im Wesentlichen handelt es sich um zwei Aufgaben:

  1. Abfrage der Hardware und erstellen einer passenden XF86Config Datei.
  2. Erstellen eines Links auf den zu verwendenden X-Server.

Beide Aufgaben werden jetzt nochmal im Einzelnen besprochen:

Abfrage der Hardware und erstellen einer passenden XF86Config Datei

Der X-Server steuert die Graphik- und Eingabehardware um sie dann den Clients zur Verfügung zu stellen. Er muß also sehr genau über die verwendeten Geräte Bescheid wissen und benötigt zum Teil sehr technische Informationen. Folgende Informationen werden abgefragt, müssen also bekannt sein:

Neben diesen Hardware-Angaben werden eventuell noch verschiedene Pfade abgefragt, die zu weiteren Informationen führen. Diese Pfade werden später noch einer genaueren Betrachtung unterworfen. Für die Konfiguration reicht hier die Übernahme der Vorgaben.

Erstellen eines Links auf den zu verwendenden X-Server

Der eigentliche X-Server wird später auf verschiedene Art und Weise gestartet. Gemeinsam ist allen Methoden aber, daß sie das Programm /usr/X11R6/bin/X aufrufen. Es wird also immer davon ausgegangen, daß der X-Server einfach nur X heißt.

In den XFree86 Versionen vor 4.0 gab es nicht nur einen, sondern sehr viele unterschiedliche X-Server. Jeder Server war für eine bestimmte Graphikkarte (oder eine Klasse von Karten) zuständig. Typische Beispiele dieser Server waren XF86_Mach64, XF86_VGA16, XF86_SVGA oder XF86_S3. Damit das jeweils verwendete Startprogramm auch den richtigen Server startet, ist das Programm /usr/X11R6/bin/X nur ein symbolischer Link auf den entsprechenden Server. Genauer gesagt ist X ein Link auf /var/X11R6/bin/X und das ist wiederum ein Link auf den entsprechenden X-Server. Der Grund für diese doppelte Verlinkung ist, daß ansonsten bei einem ReadOnly gemounteten /usr-Verzeichnis keine Änderungen möglich wären. Die Verlinkung bei XFree86 Version 3.x sieht also folgendermaßen aus:

  /usr/X11R6/bin/X => /var/X11R6/bin/X => /usr/X11R6/bin/XF86_Servertyp 
Diese Links werden auch vom jeweils verwendeten Konfigurationsprogramm angelegt.

Ab der Version 4.0 von XFree86 hat sich diese Architektur geändert. Es war einfach zu viel Aufwand, für jede Graphikkarte einen eigenen X-Server zu schreiben. Aus diesem Grund wurde ein modularisierter X-Server erstellt, der die kartenabhängigen Informationen als Modul nachläd. Der eigentliche X-Server heißt jetzt /usr/X11R6/bin/XFree86. Trotzdem existiert meist immer noch der Link von /usr/X11R6/bin/X auf /usr/X11R6/bin/XFree86. Nur bei Debian ist /usr/X11R6/bin/X ein kleines Ladeprogramm, das dann aber auch /usr/X11R6/bin/XFree86 läd.

Tunen der Konfiguration

Nach abgeschlossener Konfiguration kann der X-Server gestartet werden. Im einfachsten Fall wird das durch die Eingabe des Befehls startx erfolgen. (Andere Startmethoden werden im Abschnitt 1.110.2 - Einrichten eines Display Managers beschrieben.)

Falls die Bildschirmeinstellungen nicht zufriedenstellend sind, gibt es zwei Möglichkeiten, daran noch etwas zu verändern. Entweder der Monitor wird mittels seiner Hardwarekonfiguration (Monitormenü oder Drehknöpfe) an die Konfiguration angepasst, oder die Konfiguration wird im Nachhinein noch verändert. Dazu steht uns das Programm xvidtune zur Verfügung.

Mit Hilfe dieses Programms können die Bildschirmeinstellungen ähnlich verändert werden, wie mit dem Menü des Monitors selbst. Im Unterschied dazu wird xvidtune aber die Einstellungen in der XF86Config Datei verändern, statt sie hardwareseitig einzustellen.

Mögliche Einstellungen sind:

Die beste Methode ist es, die Bildschirmeinstellungen mit xvidtune soweit wie möglich einzustellen, und dann anschließend das Feintuning mit der Monitoreinstellung vorzunehmen.

Struktur der Datei XF86Config

Alle Konfigurationseinstellungen des X-Servers werden in der Datei /etc/X11/XF86Config abgelegt. Diese Datei kann manuell mit einem Texteditor verändert werden. Ihr Format unterscheidet sich zwischen den Versionen 3.x und 4.x erheblich.

Wichtige Einstellungen für die LPI101 Prüfung beziehen sich nur auf einen Abschnitt, den Abschnitt Files. Dieser Abschnitt ist in beiden Versionen vorhanden.

Die weiteren Abschnitte bezeichnen die jeweiligen Konfigurationen der verschiedenen Hardware und Bildschirmauflösungen. Der Vollständigkeit halber seien sie hier kurz aufgezählt:

Optional können noch weitere Abschnitte enthalten sein, die sich auf Extras wie 3D-Beschleuniger (DRI) oder ähnliches beziehen.

Die Sektion "Files"

In diesem Abschnitt werden dem X-Server die Pfade zu drei verschiedenen Informationen übermittelt. Die Pfade zu den Verzeichnissen, in denen die Schriften liegen (FontPath), der Pfad zu der Datei, die die Farbbeschreibungen enthält (RgbPath) und optional der Pfad zu dem Verzeichniss, das die Module für den Server enthält (ModulePath). Diese Angabe muß nur gemacht werden, wenn der Pfad vom Standard abweicht.

Nachdem sowohl der ModulPath, als auch der RgpPath sehr statisch sind, werden wir an diesen beiden Einstellungen eigentlich niemals Veränderungen vornehmen müssen. Die einzigen Einstellungen, die wir tatsächlich verwalten und verändern müssen sind die Pfade zu den Schriftverzeichnissen.

Auf einem X-Server sind normalerweise mehrere Verzeichnisse mit Schriften installiert. Wir können diese Verzeichnisse entweder in einem Eintrag durch Kommas getrennt hintereinanderhängen, oder - was sicherlich zu einer besseren lesbarkeit führt - für jedes Verzeichnis einen eigenen Eintrag vornehmen. Also entweder

  FontPath="/usr/X11R6/lib/X11/fonts/local/","/usr/X11R6/lib/X11/fonts/misc/"
oder
  FontPath   "/usr/X11R6/lib/X11/fonts/local/"
  FontPath   "/usr/X11R6/lib/X11/fonts/misc/"
In modernen Versionen wird nur noch die zweite Variante benutzt. Jede der Pfadangaben bezieht sich auf ein Verzeichnis, das Schriftdateien enthält. Die Reihenfolge dieser Angaben ist nicht unwichtig, weil der Server auf der Suche nach einer Schrift immer die Pfade in der angegebenen Reihenfolge durchsucht. Die erste gefundene Schrift, die den Anforderungen der Suche entspricht, wird verwendet. Wenn beispielsweise sowohl TrueType, als auch klassische X11-Schriften installiert sind, und es dabei zu einer Namensüberschneidung kommt (beispielsweise Times und Helvetica), dann kommt es darauf an, ob das Verzeichnis mit den TrueType Schriften vor oder nach dem mit den klassischen Schriften hier angegeben wurde.

Eine Veränderung der Datei XF86Config wird erst wirksam, wenn der X-Server neu gestartet wird. Es gibt aber zumindestens für FontPath-Änderungen auch die Möglichkeit, die neuen Einträge manuell zu aktivieren oder zu deaktivieren. Dazu wird das Programm xset benutzt:

  xset +fp neuer_Pfad
  xset fp+neuer_Pfad
fügen einen angegebenen neuen Pfad zum FontPath hinzu,
  xset -fp Pfad
  xset fp-Pfad
entfernen den angegebenen Pfad aus dem FontPath.

Das Prinzip der Schriftnamen von X11

Schriften können bei X11, wie bei fast jeder anderen graphischen Oberfläche auch, beliebig hinzugefügt oder entfernt werden. Dabei existieren mehrere mögliche Formate, so daß es also möglich ist, daß ein und dieselbe Schrift in einer Installation mehrfach vorhanden ist.

Schriftnamen haben eine etwas gewöhnungsbedürftige Form, hier einmal ein Beispiel, an dem die einzelnen Elemente des Namens erklärt sind.

 Hersteller   Gewicht Breite     Pixels  XAufl Sp     Zeichensatz
    |           |        |         |      |     |        |
  -b&h-lucida-medium-r-normal-sans-18-180-75-75-p-106-iso8859-1
         |           |          |      |     |     |          |
     Schriftart    Neigung    Stil   Punkte YAufl Durchschn. Optionen des
                                                  Zeichen-   Zeichensatzes
                                                  breite
Dabei bedeuten im Einzelnen:
Hersteller
Meist die Herstellerfirma der Schriftart, z.B. adobe, dec, sony, manchmal aber auch nur eine weitere Schublade wie misc oder bitstream.
Schriftart
Die "Schriftfamilie" also etwa Times, Symbol, Utopia,...
Gewicht
Das "Gewicht" der Schwärze wie black, bold, demibold oder medium.
Neigung
Die Schräge der Schrift. i steht für italic (kursiv), r für roman (aufrecht).
Breite
Die Breite einer Schrift wie normal, narrow oder semicondensed.
Stil
Zusätzliche Stilangaben
Pixels
Das Höhenmaß der Schrift in Pixel (in einer bestimmten Punktgröße und Auflösung)
Punkte
Die Größe der Schrift in typographischen Punkten (1/72 Zoll) angegeben in Zehntel-Punkten
X-Auflösung
Horizontale Auflösung in Dots per Inch (DPI) in der die Schrift ursprünglich erstellt wurde.
Y-Auflösung
Vertikale Auflösung in Dots per Inch (DPI) in der die Schrift ursprünglich erstellt wurde.
Spacing
Die Beschreibung der Raumaufteilung einer Schriftart. Hier geht es darum, ob eine Schriftart proportional aufgebaut ist, also für ein i einen kleineren Platz als z.B. für ein o benötigt, oder nicht. Mögliche Werte sind hier p für proportional, m für monospaced also nicht proportional und c für charactercell, einer Technik, in der allen Zeichen ein gleichgroßer Rahmen gegeben wird, was sie auch wieder zur nicht-proportionalen Schrift macht.
Durchschnittsbreite
Die durchschnittliche Breite eines Zeichens dieser Schrift.
Zeichensatz
Die ISO-Standard, die diese Schrift enthält.
Die Nummer der ausgewählten Zeichensatzseite des Standards.
Oft werden statt einzelner Angaben auch ein Sternchen angegeben, dann wird die erste passende Einstellung genommen. So wird ein * bei der Angabe der Neigung automatisch zu einem i.

Verwaltung von Schriften unter X11

Wenn neue Schriften installiert werden sollen, dann werden ein paar Einstellungen nötig, damit sie benutzbar werden.

Verzeichnisse, die Schriften für X11 enthalten, enthalten neben den eigentlichen Schriftdateien (Endungen .bdf .snf .pcf .spd .fb .ps .ttf) noch die folgenden Dateien:

Wenn ein neues Verzeichnis mit Schriften also hinzugefügt wird, indem es beispielsweise neu erstellt und mit Schriftdateien aus dem Internet gefüllt wird, so sind folgende Schritte nötig, damit die Schriften benutzbar werden.

Ab diesem Zeitpunkt sind die Schriften auf dem X-Server verfügbar.

Installation eines FontServers

Das Schriftenmodell unter X11 erfordert relativ viel Speicherplatz, weil bei den meisten installierten Schriftarten jede Schrift eine eigene Schriftdatei benutzt. Aus diesem Grund gibt es die Möglichkeit, einen Fontserver zu installieren, der beliebig vielen X-Servern im Netz Schriften zur Verfügung stellt. So müssen die Schriftdateien nur auf einem Rechner vorhanden sein und stehen trotzdem allen X-Servern im Netz zur Verfügung.

Ein weiterer Vorteil dieser Technik ist es, daß ein Unternehmen bestimmte Schriften für seine Präsentationen benutzen kann und zentral festlegen kann, daß alle X-Server die selben Schriften benutzen.

Für die Ansprüche der LPI101 Prüfung muß sowohl ein Fontserver eingerichtet werden können, als auch ein X-Server an einen Fontserver angebunden werden, so daß er die vom Server angebotenen Schriften nutzen kann.

Konfiguration eines Fontservers

Der Fontserver für X11 heißt xfs und ist ein eigenständiger Daemon. Er wird in der Regel über ein init-Script gestartet und bietet dann seine Dienste an.

Wie so oft bei Linux/Unix-Servern besitzt xfs eine einzige Konfigurationsdatei, in der die gesamte Konfiguration des Servers erledigt wird. Diese Konfigurationsdatei liegt standardmäßig unter /usr/X11R6/lib/X11/fs/config. Da diese Plazierung dem neuen Dateisystem-Standard widerspricht, kann alternativ dazu dem xfs per Kommandozeilenoption eine andere Datei mitgeteilt werden, die er als Konfigurationsdatei nutzt. In modernen Versionen von Linux wird meist /etc/X11/xfs.conf oder /etc/X11/fs/config benutzt.

Der Fontserver muß die Schriftdateien in Verzeichnissen ablegen, die exakt den oben genannten Ansprüchen der Schriftverzeichnisse eines normalen X-Servers entsprechen. Er kann jetzt diese Verzeichnisse an andere X-Server weitergeben, ohne daß dabei zusätzlicher Verwaltungsaufwand entsteht.

Eine einfache Konfigurationsdatei eines Fontservers könnte folgendermaßen aussehen:


  # Erlaubt maximal 10 Clients, die sich mit diesem Fontserver verbinden
  client-limit = 10

  #
  # Wenn ein Fontserver die maximale Anzahl Clients erreicht hat, 
  # startet er einen neuen um weitere Clients bedienen zu können
  clone-self = on

  #
  # Angabe der Schriftverzeichnisse
  #
  catalogue = /usr/local/fonts/tr_misc/,
 	      /usr/local/fonts/tr_75dpi/,
	      /usr/local/fonts/freefont/,
  	      /usr/local/fonts/sharefont/,
  	      /usr/local/fonts/Adobe/,
	      /usr/X11R6/lib/X11/fonts/misc:unscaled,
	      /usr/X11R6/lib/X11/fonts/75dpi:unscaled,
	      /usr/X11R6/lib/X11/fonts/100dpi:unscaled,
	      /usr/X11R6/lib/X11/fonts/Type1,
	      /usr/X11R6/lib/X11/fonts/Speedo,
	      /usr/X11R6/lib/X11/fonts/misc,
  	      /usr/X11R6/lib/X11/fonts/75dpi
	    

  # Voreingestellte Schriftgröße ist 12 Punkte (120 Dezipunkte)
  default-point-size = 120

  # 100 x 100 und 75 x 75 Auflösung
  default-resolutions = 100,100,75,75

  # Keine Meldungen an den Syslogdaemon
  use-syslog = off

Die Kommentare in der Datei erklären die jeweiligen Zeilen ausreichend. Wenn diese Datei jetzt als /etc/X11/fs/config abgespeichert wird, dann lautet der Aufruf des XFontServers:
  xfs -config /etc/X11/fs/config -daemon
Diese Zeile sollte jetzt aus einem init-Script heraus aufgerufen werden. Nachdem sie ausgeführt wurde, ist der Fontserver aktiv und hört auf den TCP-Port 7100.

Soll einem laufenden Fontserver ein neues Schriftverzeichnis hinzugefügt werden, so muß es in die Konfigurationsdatei eingefügt werden und danach dem xfs-Prozeß ein HUP-Signal geschickt werden. Das zwingt ihn, seine Konfigurationsdatei neu einzulesen und sich entsprechend zu verhalten.

Anbindung eines X-Servers an einen Fontserver

Damit ein beliebiger X-Server jetzt den Fontserver benutzen kann, reicht es, in der Datei XF86Config in der Section "Files" einen FontPath Eintrag in der Art zu machen. Wenn unser Font-Server auf dem Rechner marvin auf dem Standard-TCP-Port 7100 läuft, so kann jeder X-Server im Netz den Eintrag
  FontPath   "TCP/marvin:7100"
in die Section "Files" aufnehmen und nach einem Neustart des X-Servers (nicht des Rechners) stehen die Schriften des Font-Servers zur Verfügung. Auch hier spielt die Reihenfolge der Angaben eine Rolle. Der FontPath wird von vorne nach hinten (oben nach unten) durchgearbeitet und die erste passende Schrift wird gewählt. Steht also der Font-Server Eintrag am Anfang des FontPath, so werden wahrscheinlich niemals lokale Schriften benutzt (es sei denn es gibt lokale Schriften, die der FontServer nicht anbietet), steht er am Ende, werden immer lokale Schriften verwendet, außer es gibt eine bestimmte Schrift nicht lokal, dann wird der Font-Server herangezogen.

Verwendung von Schriften

Die in den Prüfungszielen angesprochene Datei .Xresources kann benutzt werden, um bestimmte Schriften für bestimmte Anwendungen fest einzustellen. Diese Technik wird im Abschnitt 1.110.4 - Installation und Anpassung einer Window Manager Umgebung genau besprochen.

 

 

 


[Zurück zur LPIC 101 Seite]  [Zurück zur Startseite]  [Zurück zur LPI Seite]  [Kontakt]  [Impressum


Diese und die darunterliegenden Seiten wurden erstellt von F. Kalhammer

© 2002 by F.Kalhammer -
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License..


www.lpi.org