[FAQ-Index] [Zum Kapitel 10 - Systemverwaltung] [Zum Kapitel 12 - Hardware- und plattformspezifische Fragen]
X wird als »Client-Server«-strukturiertes Protokoll aufgefasst, obwohl die Terminologie manchmal etwas verwirrend ist. Der Computer, der die Grafik auf dem Bildschirm anzeigt, ist der »X-Server«. Die Anwendung, die dem X-Server mitteilt, was auf dem Bildschirm angezeigt werden soll, ist der »X-Client«, selbst wenn es sich hierbei um einen leistungsstärkeren Computer in einem Rechenzentrums handelt. Dieses Modell kann genutzt werden, um rechenintensive Anwendungen (X-Clients) auf sehr leistungsstarken Maschinen auszuführen, die den X-Server als Benutzerschnittstelle verwenden, der auf einer kleinen und stromsparenden Maschine auf deinem Schreibtisch läuft.
Es ist möglich, X-Clients auf einem System auszuführen, das über keine grafische Ausgabemöglichkeit verfügt. Man könnte zum Beispiel eine Anwendung (den X-Client) auf einer mvme88k ausführen und die Ausgabe auf einem Bildschirm einer Alpha anzeigen lassen (der X-Server). Da X ein klar definiertes und plattformübergreifendes Protokoll ist, ist es sogar möglich, eine X-Anwendungen auf einer (beispielsweise) Solaris-Maschine auszuführen und auf einer OpenBSD-Maschine anzeigen zu lassen.
Der Client und der Server können auch auf dem gleichen System laufen. Im Rest dieses Kapitels gehen wir hiervon aus.
Soweit zur Grundlage. X wird normalerweise gestartet, um X-Anwendungen aufrufen zu können. Einige X-Applikationen sind sehr genügsam, andere scheinen sich hingegen alle Rechenleistung und verfügbaren RAM unter den Nagel zu reißen. Selbstverständlich gibt es auch Leute, die X verwenden, um eine große Anzahl xterm(1)s aufzurufen - hierfür reicht auch sehr schlichte Hardware.
Viele Plattformen benötigen den X-Aperturetreiber xf86(4), der direkten Zugriff auf den Speicher und die Ein-/Ausgabeports des VGA-Boards und der PCI-Konfigurationsregister ermöglicht, was für die X-Server eine Voraussetung ist. Dieser Treiber muss aktiviert werden, bevor er genutzt werden kann - entweder indem mit »Yes« auf die Frage
Do you expect to run the X window System [no]
geantwortet wird (diese ist während der Installation zu sehen) oder
indem man machdep.allowaperture in der
/etc/sysctl.conf auf einen der Plattform entsprechenden
Wert setzt (dieser darf nicht 0 sein) und neustartet, da diese
Sysctl aus Sicherheitsgründen nach dem Bootvorgang nicht mehr geändert
werden kann. Die Verwendung des Treibers zieht Sicherheitsbedenken
nach sich. Du solltest ihn nicht aktivieren, wenn du nicht unbedingt
auf ihn angewiesen bist.
Setze machdep.allowaperture=1 in /etc/sysctl.conf.
Die TGA- und einige VGA-Karten werden unterstützt. Es sollte keine weitere Konfiguration notwendig sein.
Setze machdep.allowaperture=2 in /etc/sysctl.conf.
X wird auf amd64 meist erfolgreich automatisch konfiguriert, so dass in den meisten Fällen keine weitere Konfiguration notwendig ist. Sollte weitere Konfiguration benötigt werden, rufe X -configure wie weiter unten beschrieben auf.
Setze machdep.allowaperture=2 in /etc/sysctl.conf.
Aufgrund der unglaublich vielen verfügbaren Grafikkarten, Mäusen, Tastaturen und anderer Hardware kann die Konfiguration auf einem i386-System recht abenteuerlich sein. Abenteuerlich genug, um diesem Thema eine separate Sektion zu widmen.
Zum Glück ist es meist gar nicht so schlimm wie es im ersten Augenblick scheint - in vielen Fällen »funktionierts einfach«, wenn man »startx« eingibt. In diesen Fällen wird deine Hardware erfolgreich erkannt und ausgewertet; X läuft ohne Probleme.
Mac68k-Systeme »funktionieren einfach« mit X, sodass keine Konfiguration benötigt wird.
Maus: Die standardmäßige Macintosh-Maus hat nur eine Taste. Dies stellt ein Problem dar, denn X geht von einer Dreitasten-Maus aus. Einige Mäuse von Drittanbietern haben eine zweite Taste, die auch mit X funktioniert. Falls dies nicht möglich ist, wirf einen Blick auf die Xmac68k(1)-Seite für weitere Informationen über die Emulation von Maustasten.
Setze machdep.allowaperture=2 in /etc/sysctl.conf.
Unterstützte Macintosh-PPC-Systeme können auf zwei unterschiedliche Weisen verwendet werden: »beschleunigt« oder »Framebuffer« (unbeschleunigt).
Im »Framebuffer«-Modus wird das System mit 8 Bits pro Pixel arbeiten und die Videoauflösung wird von der Macintosh-Umgebung geregelt. Das bedeutet, dass du eine kleine MacOS-Partition auf deiner Platte belassen möchtest, um von dort aus diese Einstellungen anzupassen. Dieser Modus hat den Vorteil, dass er »einfach funktioniert«, doch kann es frustrierend einschränkend sein (zum Beispiel setzt eine Änderung der Auflösung einen Boot von MacOS voraus).
Wenn dein Macintosh ein ATI-basiertes Videosystem hat, kannst du es mit einem beschleunigten X-Server verwenden. Dieser liefert bessere Geschwindigkeiten und mehr Kontrolle in deiner OpenBSD-Umgebung. Die NVIDIA-Grafikkarten einiger macppc-Systeme werden auch in vielen Fällen funktionieren. Die README-Datei beinhaltet Details über die Konfiguration des beschleunigten Treibers - verwende erst einmal die Beispieldatei dort.
Während die README-Datei detailiert auf die Verwendung der Standardmaus von Apple mit nur einer Taste unter X eingeht, wird dir dringend dazu geraten, dir einfach eine USB-Maus eines Drittanbieters zu kaufen - es sei denn, du verwendest einen Laptop.
Mit nur einem unterstützten Framebuffer wird keine Konfiguration benötigt. Wenn du eine Multihead-Konfiguration verwenden möchtest, wirf einen Blick auf die zuvor genannte README-Datei für weitere Details.
Die Auflösung wird von der Firmware eingestellt, bevor OpenBSD bootet.
Unter diesen Maschinen gibt es viele Variationen, sodass du wissen musst, welchen Bustyp dein System verwendet (PCI oder SBus), an welcher Schnittstelle deine Maus angeschlossen ist (zstty, com oder USB/PS2) und welche Grafikkarte du hast. Beginne mit der xorg.conf-Datei in der README. Modifiziere sie entsprechend deiner Hardware und deinen Bedürfnissen. Erwarte nicht, dass die Beispieldatei ohne Anpassung auf deiner Maschine läuft!
Der X-Server funktioniert momentan nur auf VAXstation-4000-Modellen mit einem lcg(4)- oder lcspx(4)-Framebuffer.
Es wird keine Konfiguration benötigt, X »funktioniert einfach«.
Es gibt zwei Programme, die für eine pseudo-automatische Erstellung der Konfigurationsdatei für X.Orgs i386-X-Server genutzt werden können. Leider gibt es für keines der beiden Programme Garantie, dass eine einsetzbare xorg.conf-Datei erzeugt wird.
vga1 at pci1 dev 0 function 0 "3DFX Interactive Banshee" rev 0x03
Dies war einmal eine Highend-Grafikkarte mit 16 MB RAM, doch wird
sie heutzutage von »gängigen« Betriebssystemen fast nicht mehr
unterstützt. Des Weiteren wird ein Sony Multiscan G400 19" CRT als
Monitor angeschlossen. Es wäre schön, wenn dieser Monitor bei einer
Auflösung von 1280x1024, einer angenehmen Bildwiederholrate und
24 Bit Farbtiefe genutzt werden kann.
Nachdem OpenBSD mit X installiert wurde (wir haben sichergestellt, dass der Aperturetreiber im Kernel aktiviert wurde) werfen wir zuerst einen Blick auf die automatische Erkennung und Konfiguration von X.Org - vielleicht haben wir Glück. So, wir loggen uns einfach ein und rufen startx(1) auf. Der Bildschirm wird für ein paar Momente schwarz, dann erhalten wir den »Schachbrett«-Hintergrund von X, den »X«-Cursor und ein xterm-Fenster.
Es funktioniert!
Mehr oder weniger. Obwohl das System voll einsatzfähig ist, scheint es keine Funktionalitäten des Monitors erkannt zu haben und läuft auf einer eindeutig zu niedrigen Auflösung (640x480). Wir hoffen mal, dass wird das noch besser hinbekommen - damit meine ich sehr viel besser. Das heißt also, dass wir unsere eigene xorg.conf-Datei erstellen müssen.
Wir verwenden die »X -configure«-Methode, um eine Grundlage für unsere xorg.conf-Datei zu schaffen. Du musst folgenden Befehl als root ausführen:
# X -configure
[...]
Your xorg.conf file is /root/xorg.conf.new
To test the server, run 'X -config /root/xorg.conf.new'
Im Übrigen muss die Meldung ernstgenommen werden - verwende den
vollständigen Pfad zu deiner xorg.conf.new-Datei, selbst wenn
du dich im gleichen Verzeichnis befindest. Wenn du dies nicht machst,
dann wird
X(7)
die Datei nicht finden und ohne weiteren Kommentar die
Standardkonfiguration verwenden, die nicht im Geringsten etwas mit
deiner aktuell bearbeiteten Konfiguration zu tun haben muss.
Dies kann die Fehlersuche später deutlich vereinfachen. Vertrau uns
einfach.
Wir führen also aus, was uns gesagt wird:
# X -config /root/xorg.conf.new
Alles was wir kriegen ist ein schwarzes Bild.
Dabei hat es so gut angefangen ...
Nun ist ein guter Zeitpunkt gekommen, um über die unterschiedlichen Möglichkeiten zu sprechen, X zu beenden, wenn es auf diese Weise gestartet wurde. Nach Vorzug sortiert sind es:
An dieser Stelle kommt unser Wissen über die Hardware ins Spiel. Wenn wir das System an einen anderen Monitor anschließen, während ein schwarzes Bild angezeigt wird, gibt er uns eine »Sync. out of Range«-Meldung auf dem Bildschirm aus. Offensichtlich scheint die Konfiguration von X nicht mit diesem Monitor zu funktionieren. Eventuell läuft diese Konfiguration auf KEINEM Monitor, wenn ein Videomodus ausgewählt wurde, der mit der Karte nicht zusammen funktioniert (beachte bitte, dass X sich am Chip auf der Karte und dessen Leistung orientiert - nicht daran, wie der Hersteller die Komponenten zusammengestellt hat). Unterschiedliche Monitore werden verschieden reagieren, wenn die Rate falsch ist. Einige werden versuchen, das Bild anzuzeigen, andere werden in den Energiesparmodus wechsel, andere schreckliche Geräusche von sich geben und wieder andere werden hilfreiche Meldungen auf dem Bildschirm angeben. Dieser Bildschirm scheint zu keiner der zuvor genannten Arten gehören. Wir merken uns einfach, diesen Monitor NIE wieder für grundlegende X-Konfigurationen zu verwenden.
Während wir durch die erstellte xorg.conf.new-Datei gehen, sehen wir folgenden Eintrag:
Section "Monitor"
#DisplaySize 370 270 # mm
Identifier "Monitor0"
VendorName "SNY"
ModelName "SONY CPD-G400"
### Comment all HorizSync and VertSync values to use DDC:
HorizSync 30.0 - 107.0
VertRefresh 48.0 - 120.0
Option "DPMS"
EndSection
Zum Testen werden wir einen DDC-Monitor (»Data Display Channel« - damit
kann der Monitor dem Computer und der Grafikkarte mitteilen, wozu er
in der Lage ist) verwenden und sehen, was geschieht. Dieses Mal erhalten
wir wieder das Schachbrettmuster von X und einen beweglichen Cursor. Das
ist alles, was wir von X erwarten, wenn wir es so aufrufen (wir beenden
X mit dem STRG-ALT-Backspace-Trick von vorhin). Es ist (wieder) eine
niedrige Auflösung, doch es funktioniert. Wir können also davon
ausgehen, dass wir ein Raten- und Auflösungsproblem haben. Wir werden
zuerst die »HorizSync«- und »VertRefresh«-Zeilen wiederherstellen,
da wir die Spezifikationen des Monitors im Internet gefunden und
überprüft haben.
Wir werden nun versuchen, Xorg auf eine bestimmte Auflösung zu trimmen und zu sehen, ob wir damit Glück haben. In Section "Screen" der xorg.conf-Datei werden wir ein paar Zeilen hinzufügen, die hier fettgedruckt sind:
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1280x1024"
EndSubSection
EndSection
Diese beiden Änderungen teilen X mit, dass wir eine Farbtiefe von
24 Bit verwenden möchten und für 24 Bit Farbtiefe eine Auflösung
von 1280x1024. Da keine andere Auflösung unter »Depth 24« aufgelistet
ist, wird das System dazu gezwungen sein, diese Auflösung zu
verwenden.
Wir testen die neue Konfiguration und ... ERFOLG! Wir scheinen ein schönes und hoch auflösendes Display zu besitzen. Beachte, dass wir NUR ein Schachbrettmuster (das sehr gut geeignet ist, um die Qualität deines Bildschirms zu prüfen und um LCDs zu kalibrieren [»root weave«]) und einen beweglichen Cursor erwarten. An diesem Punkt erwarten wir noch keine voll einsatzfähige Oberfläche.
Nun werden wir die xorg.conf-Datei installieren, sodass wir den alltäglichen Aufruf von X testen können.
# cp xorg.conf.new /etc/X11/xorg.conf
Wir können nun versuchen, X mit dem normalen startx(1)-Kommando zu
starten. Es funktioniert!
Es wäre auch nicht schlecht, zu überprüfen, ob es sich wirklich um die Auflösung und Farbtiefe handelt, die wir angestrebt haben. Das ganze soll selbstverständlich auch mit einer angenehmen Bildwiederholrate angezeigt werden. Wir können dies mit den Kommandos xrandr(1) und xdpyinfo(1) überprüfen. Neben anderen Informationen liefert xdpyinfo(1):
[...]
screen #0:
print screen: no
dimensions: 1280x1024 pixels (433x347 millimeters)
resolution: 75x75 dots per inch
depths (7): 24, 1, 4, 8, 15, 16, 32
root window id: 0x44
depth of root window: 24 planes
[...]
Die Antwort ist also »ja, wir verwenden 1280x1024 mit einer Tiefe von
24 Ebenen (Bits).«
Folgende Ausgabe liefert xrandr(4):
SZ: Pixels Physical Refresh
*0 1280 x 1024 ( 433mm x 347mm ) *85 75 60
1 1280 x 960 ( 433mm x 347mm ) 85 60
[...]
Das sagt uns, dass wir mit einer Bildwiederholrate von 85 Hz arbeiten.
Die meisten Anwender empfinden dies als eine sehr angenehme Einstellung.
Auf einigen Plattformen musst du das für die Konsolen zuständige getty(8) deaktivieren, um xdm(1) starten zu können.
[FAQ-Index] [Zum Kapitel 10 - Systemverwaltung] [Zum Kapitel 12 - Hardware- und plattformspezifische Fragen]