Kapitel 11. Das X Window System und virtuelle Konsolen

11.1. Was ist das X Window System?
11.2. Ich möchte X benutzen, was muss ich tun?
11.3. Ich habe versucht, X zu starten, aber wenn ich startx eingebe, erhalte ich die Fehlermeldung “KDENABIO failed (Operation not permitted)”. Was soll ich jetzt machen?
11.4. Warum funktioniert meine Maus unter X nicht?
11.5. Kann ich meine Rad-Maus auch unter X benutzen?
11.6. X verbietet Verbindungen von entfernten Systemen!
11.7. Was ist eine virtuelle Konsole und wie erstelle ich mehr?
11.8. Wie greife ich von X aus auf virtuelle Konsolen zu?
11.9. Wie starte ich XDM beim Booten?
11.10. Wieso erhalte ich die Meldung “Couldn't open console”, wenn ich xconsole benutze?
11.11. Früher konnte ich Xorg als normaler User starten. Warum sagt mir das System jetzt, dass ich root sein muss?
11.12. Warum funktioniert meine PS/2-Maus nicht richtig?
11.13. Meine PS/2-Maus von MouseSystems scheint nicht zu funktionieren.
11.14. Wie vertausche ich die Maustasten?
11.15. Wie installiere ich einen Splash-Screen und wo finde ich sie?
11.16. Kann ich die Windows-Tasten unter X benutzen?
11.17. Wird 3D Hardware Beschleunigung für OpenGL® unterstützt?

11.1. Was ist das X Window System?

Das X Window System (oder auch nur X11) ist das am häufigsten verwendete Window System für UNIX®- und UNIX-ähnliche Systeme, zu denen auch FreeBSD gehört. Der X  Protokollstandard wird von der X.org Foundation definiert und liegt aktuell in Version 11 Release 7.5.2 vor und wird häufig auch nur als X11 bezeichnet.

Das X Window System wurde für viele verschiedene Architekturen und Betriebssysteme implementiert. Eine serverseitige Implementierung wird dabei als X-Server bezeichnet.

11.2. Ich möchte X benutzen, was muss ich tun?

Wenn Sie X auf einem existierenden System installieren wollen, sollten Sie entweder den Meta-Port x11/xorg verwenden, der alle benötigen Komponenten baut und installiert, oder Sie installieren die FreeBSD Xorg-Pakete:

# pkg_add -r xorg

Es ist auch möglich, Xorg aus sysinstall(8) heraus zu installieren, indem Sie Configure, dann Distributions und anschliessend The X.Org Distribution aufrufen.

Lesen Sie nach erfolgreicher Installation von Xorg den Abschnitt X11 konfigurieren im FreeBSD Handbuch.

11.3. Ich habe versucht, X zu starten, aber wenn ich startx eingebe, erhalte ich die Fehlermeldung “KDENABIO failed (Operation not permitted)”. Was soll ich jetzt machen?

Das System läuft auf einer erhöhten Sicherheitsstufe (securelevel). X kann auf einer erhöhten Sicherheitsstufe nicht gestartet werden, weil X dazu Schreibzugriff auf io(4) benötigt. Lesen Sie dazu auch init(8).

Die Frage ist also eigentlich, was Sie anders machen sollten. Sie haben zwei Möglichkeiten: Setzen Sie die Sicherheitsstufe wieder zurück auf 0 (die Einstellung erfolgt in der Regel in /etc/rc.conf) oder starten Sie xdm(1) während des Starts des Systems, bevor die Sicherheitsstufe erhöht wird.

Der Abschnitt F: 11.9. enthält Informationen darüber, wie Sie xdm(1) beim Start des Systems starten können.

11.4. Warum funktioniert meine Maus unter X nicht?

Wenn Sie syscons(4) (den Standard-Konsolentreiber) benutzen, können Sie FreeBSD so konfigurieren, dass auf jedem virtuellen Bildschirm ein Mauszeiger unterstützt wird. Um Konflikte mit X zu vermeiden, unterstützt syscons(4) ein virtuelles Gerät mit dem Namen /dev/sysmouse. Alle Mausbewegungen und Mausklicks werden in das sysmouse(4) Gerät über moused(8) geschrieben. Falls Sie Ihre Maus auf einer oder mehreren virtuellen Konsolen und X benutzen wollen, sollten Sie zunächst F: 4.5.4. lesen und dann moused(8) installieren.

Die Datei /etc/X11/xorg.conf sollte die folgenden Einträge enthalten:

Section "InputDevice"
   Option          "Protocol" "SysMouse"
   Option          "Device" "/dev/sysmouse"
.....

Beginnend mit Xorg 7.4 werden Angaben im Abschnitt InputDevice von xorg.conf ignoriert. Stattdessen wird die automatisch detektierten Werte zurückgegriffen. Um das alte Verhalten zu reaktivieren, fügen Sie die folgende Zeile entweder in den Abschnitt ServerLayout oder ServerFlags ein:

Option "AutoAddDevices" "false"

Einige Leute ziehen es vor, unter X /dev/mouse zu benutzen. Hierzu sollte /dev/mouse nach /dev/sysmouse (lesen Sie sysmouse(4)) gelinkt werden, indem Sie die folgende Zeile in /etc/devfs.conf (siehe auch devfs.conf(5)) hinzufügen:

link    sysmouse    mouse

Die Verknüpfung kann durch Neustart von devfs(5) über das folgende Kommando (als root) erzeugt werden:

# /etc/rc.d/devfs restart

11.5. Kann ich meine Rad-Maus auch unter X benutzen?

Ja.

Dazu müssen Sie X nur mitteilen, dass Sie eine Maus mit 5 Tasten haben. Dazu fügen Sie die Zeilen Buttons 5 sowie ZAxisMapping 4 5 in den Abschnitt “InputDevice” der Datei /etc/X11/xorg.conf ein. Das Beispiel zeigt, wie ein solcher Abschnitt aussehen könnte.

Beispiel 11-1. Abschnitt “InputDevice” für Rad-Mäuse in der Konfigurationsdatei von Xorg

Section "InputDevice"
   Identifier      "Mouse1"
   Driver          "mouse"
   Option          "Protocol" "auto"
   Option          "Device" "/dev/sysmouse"
   Option          "Buttons" "5"
   Option          "ZAxisMapping" "4 5"
EndSection         

Beispiel 11-2. “.emacs” Beispiel für seitenweises Blättern mit einer Rad-Maus (optional)

;; wheel mouse
(global-set-key [mouse-4] 'scroll-down)
(global-set-key [mouse-5] 'scroll-up)

11.6. X verbietet Verbindungen von entfernten Systemen!

Aus Sicherheitsgründen verbietet der X-Server in der Voreinstellung Verbindungen von entfernten Systemen.

Starten Sie den X-Server mit der Option -listen_tcp, wenn Sie Verbindungen von entfernten Systemen erlauben wollen:

%
startx -listen_tcp
	 

11.7. Was ist eine virtuelle Konsole und wie erstelle ich mehr?

Mit virtuellen Konsolen können Sie mehrere simultane Sitzungen auf einer Maschine laufen lassen, ohne so komplizierte Dinge wie die Einrichtung eines Netzwerkes oder die Benutzung von X zu benötigen.

Wenn das System startet, wird es nach der Anzeige aller Bootmeldungen eine Eingabeaufforderung auf dem Bildschirm anzeigen. Sie können dann auf der ersten virtuellen Konsole Ihren Benutzernamen und das Passwort eingeben und anfangen, zu arbeiten (oder zu spielen!).

Gelegentlich möchten Sie möglicherweise eine weitere Sitzung starten wollen, vielleicht, um die Dokumentation zu einem Programm, das Sie gerade benutzen, einzusehen, oder, um Ihre Mails zu lesen, während Sie auf das Ende einer FTP-Übertragung warten. Drücken Sie einfach Alt+F2 (halten Sie die Alt-Taste gedrückt und drücken Sie die Taste F2) und Sie gelangen zur Anmelde-Aufforderung auf der zweiten “virtuellen Konsole”! Wenn Sie zurück zur ersten Sitzung möchten, drücken Sie Alt+F1.

Die Standardinstallation von FreeBSD bietet acht aktivierte virtuelle Konsolen. Mit Alt+F1, Alt+F2, Alt+F3 und so weiter wechseln Sie zwischen diesen virtuellen Konsolen.

Um mehr von ihnen zu aktivieren, editieren Sie /etc/ttys (siehe ttys(5)) und fügen Einträge für ttyv8 bis zu ttyvc nach dem Kommentar zu “virtuellen Terminals” ein:


# Edit the existing entry for ttyv8 in /etc/ttys and change
# "off" to "on".
ttyv8   "/usr/libexec/getty Pc"         cons25  on secure
ttyv9   "/usr/libexec/getty Pc"         cons25  on secure
ttyva   "/usr/libexec/getty Pc"         cons25  on secure
ttyvb   "/usr/libexec/getty Pc"         cons25  on secure
         

Benutzen Sie so wenig oder so viele, wie Sie möchten. Je mehr virtuelle Terminals Sie benutzen, desto mehr Ressourcen werden gebraucht; das kann wichtig sein, wenn Sie 8 MB RAM oder weniger besitzen. Sie können auch secure in insecure ändern.

Wichtig: Wenn Sie einen X-Server benutzen möchten, müssen Sie mindestens ein virtuelles Terminal unbenutzt (oder ausgeschaltet) lassen damit der Server es benutzen kann. Das heißt, dass Sie Pech haben, wenn Sie für jede Ihrer 12 Alt-Funktionstasten eine Anmeldeaufforderung haben möchten - Sie können das nur für elf von ihnen tun, wenn Sie einen X-Server auf derselben Maschine laufen lassen möchten.

Der einfachste Weg, eine Konsole zu deaktivieren, ist, sie auszuschalten. Wenn Sie zum Beispiel die oben erwähnte volle Zuordnung aller 12 Terminals hätten, müssten Sie die Einstellung für das virtuelle Terminal 12 von:

ttyvb   "/usr/libexec/getty Pc"         cons25  on secure

in:

ttyvb   "/usr/libexec/getty Pc"         cons25  off secure

ändern.

Wenn Ihre Tastatur nur über zehn Funktionstasten verfügt, bedeutet das:


ttyv9   "/usr/libexec/getty Pc"         cons25  off secure
ttyva   "/usr/libexec/getty Pc"         cons25  off secure
ttyvb   "/usr/libexec/getty Pc"         cons25  off secure
         

(Sie können diese Zeilen auch einfach löschen.)

Die einfachste (und sauberste) Möglichkeit, die virtuellen Konsolen zu aktivieren, ist, zu rebooten. Wenn Sie jedoch auf keinen Fall rebooten möchten, können Sie auch einfach das X Window System herunterfahren und als root

# kill -HUP 1

ausführen.

Es ist unbedingt erforderlich, dass Sie das X Window System vollständig herunterfahren, falls es läuft. Falls Sie es nicht tun, könnte es sein, dass sich ihr System nach der Eingabe des kill-Befehls aufhängt.

11.8. Wie greife ich von X aus auf virtuelle Konsolen zu?

Benutzen Sie Ctrl+Alt+Fn um auf eine virtuelle Konsole umzuschalten. Mit Ctrl+Alt+F1 würden Sie zur ersten virtuellen Konsole umschalten.

Sobald Sie auf eine virtuelle Konsole umgeschaltet haben, können Sie ganz normal Alt+Fn benutzen, um zwischen den einzelnen virtuellen Konsolen umzuschalten.

Um zu Ihrer X-Sitzung zurückzukehren, müssen Sie auf die virtuelle Konsole umschalten, auf der X läuft. Wenn Sie X über der Eingabeaufforderung gestartet haben (z.B. mit startx), benutzt X die nächste freie virtuelle Konsole und nicht die Konsole, von der es gestartet wurde. Wenn Sie acht aktive virtuelle Konsole haben, dann wird X die neunte benutzen und Sie können mit Alt+F9 umschalten.

11.9. Wie starte ich XDM beim Booten?

Es gibt zwei Denkansätze, wie xdm(1) zu starten ist. Bei dem einen wird xdm unter Nutzung des mitgelieferten Beispiels über /etc/ttys (ttys(5)) gestartet, während beim zweiten Ansatz rc.local (rc(8)) oder das Skript X im Verzeichnis /usr/local/etc/rc.d verwendet wird. Beide Ansätze sind gleichwertig und der eine wird in Situationen funktionieren, in denen der andere es nicht tut. In beiden Fällen ist das Ergebnis das gleiche: X liefert eine graphische Anmeldeaufforderung.

Die ttys(5)-Methode hat den Vorteil, dass dokumentiert ist, auf welchem vty X gestartet wird und der Neustart des X-Servers beim Abmelden an init(8) übergeben wird. Die rc(8)-Methode erleichtert den Aufruf von kill xdm, falls Probleme beim Start des X-Servers auftreten sollten.

Beim Laden von rc(8) sollte xdm ohne irgendwelche Argumente (das heißt als Daemon) gestartet werden. Das Kommando xdm muss gestartet werden nachdem getty(8) läuft, andernfalls entsteht ein Konflikt zwischen getty und xdm und die Konsole bleibt gesperrt. Der beste Weg, um dies zu vermeiden, ist, das Skript für etwa zehn Sekunden anzuhalten und dann xdm zu starten.

Wenn Sie xdm durch einen Eintrag in /etc/ttys starten lassen, kann es zu einem Konflikt zwischen xdm und getty(8) kommen. Um dieses Problem zu vermeiden, sollten Sie die Nummer des vt in die Datei /usr/local/lib/X11/xdm/Xservers eintragen:

:0 local /usr/local/bin/X vt4

Diese Zeile führt dazu, dass der X Server /dev/ttyv3 nutzt. Die beiden Zahlen weichen voneinander ab: Der X-Server beginnt die Zählung der vty bei 1, während der FreeBSD-Kernel bei 0 beginnt.

11.10. Wieso erhalte ich die Meldung “Couldn't open console”, wenn ich xconsole benutze?

Wenn Sie X mit startx starten, werden die Zugriffsrechte für /dev/console leider nicht geändert, was dazu führt, dass Dinge wie xterm -C und xconsole nicht funktionieren.

Das hängt damit zusammen, wie die Zugriffsrechte für die Konsole standardmäßig gesetzt sind. Auf einem Mehrbenutzersystem möchte man nicht unbedingt, dass jeder Benutzer einfach auf die Systemkonsole schreiben kann. Für Benutzer, die sich auf einer Maschine direkt mit einem VTY anmelden, existiert die Datei fbtab(5), um derartige Probleme zu lösen.

In Kürze: sorgen Sie dafür, dass sich in der Datei /etc/fbtab eine nicht auskommentierte Zeile der folgenden Art befindet:

/dev/ttyv0 0600 /dev/console

Das sorgt dafür, dass wer auch immer sich auf /dev/ttyv0 anmeldet, auch die Konsole besitzt.

11.11. Früher konnte ich Xorg als normaler User starten. Warum sagt mir das System jetzt, dass ich root sein muss?

Alle X-Server müssen mit der ID root laufen, um direkt auf die Videohardware zuzugreifen.

Es gibt zwei Möglichkeiten, um X auch als normaler Benutzer starten zu können. Die erste ist die Verwendung von xdm oder eines ähnlichen Programms; die zweite ist die Benutzer von Xwrapper.

xdm ist ein ständig laufendes Programm, mit dem Logins über eine graphische Benutzeroberfläche sind. Es wird normalerweise beim Systemstart initialisiert und für die Authentifizierung der Benutzer und den Start ihrer Sitzungen verantwortlich. Es ist also die graphische Entsprechung von getty(8) und login(1). Weitere Informationen zum Thema xdm finden Sie in der Xorg Dokumentation und dem entsprechenden FAQ-Eintrag.

Xwrapper ist eine “Hülle” für den X-Server. Mit diesem kleinen Utility ist es möglich, manuell den X-Server zu starten und weiterhin eine annehmbare Sicherheit zu haben. Das Tools prüft, ob die per Kommandozeile übergebenen Argumente halbwegs sinnvoll sind. Wenn dies der Fall ist, startet es den entsprechenden X-Server. Wenn Sie (aus welchem Grund auch immer) keine graphische Anmeldung wollen, ist Xwrapper die optimale Lösung. Wenn Sie die vollständige Ports-Sammlung installiert haben, finden Sie das Tool im Verzeichnis x11/wrapper.

11.12. Warum funktioniert meine PS/2-Maus nicht richtig?

Ihre Maus und der Maustreiber sind etwas aus der Synchronisation geraten.

In seltenen Fällen kann es jedoch sein, dass der Treiber fälschlicherweise Synchronisationsprobleme meldet und Sie in den Kernelmeldungen folgendes sehen:

psmintr: out of sync (xxxx != yyyy)

und Ihre Maus nicht richtig zu funktionieren scheint.

Falls das passiert, deaktivieren Sie den Code zur Überprüfung der Synchronisation, indem Sie die Treiberangaben für den PS/2-Maustreiber auf 0x100 setzen. Rufen Sie UserConfig durch Angabe der Option -c am Boot-Prompt auf:

boot: -c

Geben sie dann in der Kommandozeile von UserConfig folgendes ein:

UserConfig> flags psm0 0x100
UserConfig> quit

11.13. Meine PS/2-Maus von MouseSystems scheint nicht zu funktionieren.

Es wurde berichtet, dass einige Modelle der PS/2-Mäuse von MouseSystems nur funktionieren, wenn sie im “hochauflösenden” Modus betrieben werden. Andernfalls springt der Mauszeiger sehr oft in die linke obere Ecke des Bildschirms.

Das Flag 0x04 des Maustreibers bringt die Maus in den hochauflösenden Modus. Rufen Sie UserConfig durch Angabe der Option -c am Boot-Prompt auf:

boot: -c

Geben sie dann in der Kommandozeile von UserConfig folgendes ein:

UserConfig> flags psm0 0x04
UserConfig> quit

Lesen Sie den vorigen Abschnitt über eine andere mögliche Ursache für Probleme mit der Maus.

11.14. Wie vertausche ich die Maustasten?

Benutzen Sie den Befehl xmodmap -e "pointer = 3 2 1" in Ihrer .xinitrc oder .xsession.

11.15. Wie installiere ich einen Splash-Screen und wo finde ich sie?

Die detaillierte Antwort auf diese Frage können Sie im Abschnitt Splash-Screens während des Systemstarts des Handbuchs nachlesen.

11.16. Kann ich die Windows-Tasten unter X benutzen?

Ja, Sie müssen lediglich mit xmodmap(1) festlegen, welche Aktion diese Tasten auslösen sollen.

Unter der Annahme, dass alle “Windows” Tastaturen dem Standard entsprechen, lauten die Keycodes für die drei Tasten wie folgt:

  • 115 - Windows-Taste zwischen den Ctrl- und Alt-Tasten auf der linken Seite

  • 116 - Windows-Taste rechts von der AltGr-Taste

  • 117 - Menü-Taste, links von der rechten Strg-Taste

Nach der folgenden Anweisung erzeugt die linke Windows-Taste ein Komma.

# xmodmap -e "keycode 115 = comma"

Sie werden Ihren Window Manager wahrscheinlich neu starten müssen, damit diese Einstellung wirksam wird.

Um die neue Belegung der Windows-Tasten automatisch beim Start von X zu erhalten, könnten Sie entsprechende xmodmap Anweisungen in ihre ~/.xinitrc einfügen. Die bevorzugte Variante ist aber, eine Datei mit dem Namen ~/.xmodmaprc zu erzeugen, die nur die Parameter für den Aufruf von xmodmap enthält. Wenn Sie mehrere Tasten umdefinieren wollen, muss jede Definition in eine eigene Zeile gesetzt werden. Weiterhin müssen Sie in Ihrer ~/.xinitrc noch die folgende Zeile einfügen:

xmodmap $HOME/.xmodmaprc

Sie könnten die drei Tasten zum Beispiel mit den Funktionen F13, F14 und F15 belegen. Dadurch ist es sehr einfach, diese Tasten mit nützlichen Funktionen eines Programmes oder Desktops zu verknüpfen.

Falls Sie das auch tun wollen, sollten in Ihrer ~/.xmodmaprc die folgenden Anweisungen stehen.


keycode 115 = F13
keycode 116 = F14
keycode 117 = F15
         

Falls Sie zum Beispiel den x11-wm/fvwm2 Port benutzen, können Sie ihn so einstellen, dass F13 das Fenster unter dem Mauszeiger minimiert bzw. maximiert. F14 holt das Fenster unter dem Mauszeiger in den Vordergrund bzw. ganz nach hinten, wenn es bereits im Vordergrund ist. F15 öffnet das Arbeitsplatz (Programme) Menü, auch wenn der Cursor nicht auf den Hintergrund zeigt. Dies ist extrem praktisch, wenn der gesamte Bildschirm von Fenster belegt wird; als kleiner Bonus gibt es sogar einen Zusammenhang zwischen dem Symbol auf der Taste und der durchgeführten Aktion.

Dieses Verhalten kann man mit den folgenden Einträgen in der Datei ~/.fvwmrc erhalten:


Key F13        FTIWS    A        Iconify
Key F14        FTIWS    A        RaiseLower
Key F15        A        A        Menu Workplace Nop
         

11.17. Wird 3D Hardware Beschleunigung für OpenGL® unterstützt?

Dies hängt davon ab, welche Version von Xorg und welche Grafikkarte Sie verwenden. Wenn Sie eine Karte mit NVIDIA-Chipsatz besitzen, benutzen Sie die binären Treiber für FreeBSD, indem Sie einen der folgenden Ports installieren:

  • Die aktuelle Version von NVIDIA-Karten wird durch den Port x11/nvidia-driver unterstützt.

  • NVIDIA Karten wie die GeForce2 MX/3/4 Serie wird durch die 96XX Treiber unterstützt, die im x11/nvidia-driver-96xx Port bereitgestellt werden.

  • Sogar ältere Karten wie die GeForce und RIVA TNT sind durch die 71XX Treiberserie verfügbar, die im Port x11/nvidia-driver-71xx enthalten ist.

Tatsächlich liefert NVIDIA detaillierte Informationen darüber, welche Karte von welchem Treiber unterstützt wird. Diese Information finden Sie auf der Website von NVIDIA: http://www.nvidia.com/object/IO_32667.html.

Für Matrox G200/400 sehen Sie sich den Port x11-servers/mga_hal an.

Bei ATI Rage 128 und Radeon lesen Sie die Anleitungen ati(4), r128(4) und radeon(4).

Fü 3dfx Vodoo 3, 4, 5 und Banshee Karten gibt es einen x11-servers/driglide Port.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.