X: Unterschied zwischen den Versionen
Dirk (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
|||
(103 dazwischenliegende Versionen von 22 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{righttoc}} | |||
Das ''X window system'', auch ''X'' oder ''X11'' genannt, stellt unter Linux und anderen UNIX-artigen Betriebssystemen die grafische Oberfläche bereit. Die unter Linux wohl am meist genutzte Implementierung ist ''X.org''. | |||
{{installation | |||
|paket=xorg-server | |||
|repo=extra | |||
|name=X.org | |||
|zusatz=xorg-xinit | |||
|zusatzinfo=Zum einfachen starten des Servers}} | |||
Anschließend sollte der Treiber für die Grafikkarte installiert werden. Die folgenden Artikel der drei gängigen Systeme bieten hierzu detaillierte Informationen. | |||
* [[ATI]] | |||
* [[Intel]] | |||
* [[Nvidia]] | |||
Weitere Treiber lassen sich mittels der Suche nach {{ic|xf86-video}} über [[Pacman]] finden. | |||
Wenn keiner der Treiber funktioniert, kann man {{Paket|xf86-video-vesa}} benutzen. Dieser Treiber ist sehr robust und sollte immer ein Bild ausgeben können, man muss allerdings auf viele Funktionen verzichten und relativ starke Performanceeinbußen hinnehmen. Er ist also eher eine Notlösung, falls der eigentliche Treiber nicht funktioniert. | |||
==Konfiguration== | |||
''X.org'' wird über die Dateien in | |||
/etc/X11/xorg.conf.d/ | |||
konfiguriert. | |||
Eine komplette Konfigurationsdatei wie bis zum X-Server 1.7 unter ''/etc/X11/xorg.conf'' ist nicht mehr notwendig. | |||
Jetzt können unter ''/etc/X11/xorg.conf.d/'' verschiedene Dateien mit der Endung ''*.conf'' angelegt werden z.B. für die Maus und Tastatur. Die Konfigurationsdateien werden alphabetisch eingelesen, was ermöglicht eine Einstellung mit einer später folgenden Datei zu überschreiben. | |||
===Eingabegeräte=== | |||
Eingabegeräte lassen sich mittels ''InputClasses'' konfigurieren. Sie beziehen sich nicht auf ein einzelnes Gerät sondern auf eine ganze Klasse von Geräten. Dazu wird eine ''Section "InputClass"'' angelegt, in der mittels ''matches'' festgelegt wird, auf welche Geräte die nachfolgenden Einstellungen zutreffen sollen. | |||
Soll lediglich ein deutsches Tastaturlayout eingestellt werden, befinden sich im Beitrag [[Arch_Linux_auf_Deutsch_stellen|Arch Linux auf deutsch stellen]] weitere Informationen dazu. | |||
Dieses Beispiel weist allen Tastaturen ein deutsches Tastaturlayout zu: | |||
Section "InputClass" | |||
Identifier "system-keyboard" | |||
MatchIsKeyboard "on" | |||
Option "XkbLayout" "de" | |||
Option "XkbVariant" "deadgraveacute" | |||
EndSection | |||
Und wird z.B. unter ''/etc/X11/xorg.conf.d/00-keyboard.conf'' abgespeichert. | |||
Es lassen sich auch mehrere ''Match*'' Option verwenden, um die Geräteklasse genauer anzugeben. Folgende Optionen sind verfügbar: | |||
== | {| {{prettytable}} | ||
|style="width:30%;background-color:#E5E5E5"|'''Option''' | |||
|style="width:70%;background-color:#E5E5E5"|'''Beschreibung''' | |||
|- | |||
|MatchIsPointer, MatchIsKeyboard, MatchIsTouchpad, MatchIsTouchscreen, MatchIsJoystick | |||
|trifft auf die jeweiligen Geräte zu | |||
|- | |||
|MatchProduct "foo<nowiki>|</nowiki>bar" | |||
|trifft auf alle Geräte zu, deren Name ''foo'' oder ''bar'' enthält | |||
|- | |||
|MatchVendor "foo<nowiki>|</nowiki>bar" | |||
|trifft auf alle Geräte zu, deren Herstellername ''foo'' oder ''bar'' enthält | |||
|- | |||
|MatchDevicePath "/dev/input/event*" | |||
|trifft auf alle Geräte zu, deren Pfad mit ''/dev/input/event'' beginnen | |||
|- | |||
|} | |||
Die Optionen für die jeweiligen Treiber finden sich in den Manpages. | |||
z.B. | |||
man xorg.conf | |||
Eine Möglichkeit um die ''MatchProduct'' und ''MatchVendor'' anzuzeigen ist | |||
udevadm info --export-db | grep -Ew "(NAME|ID_VENDOR)" | |||
== | ===TCP Port 6000 schließen=== | ||
Standardmäßig startet X auf dem TCP Port 6000. Um dies zu unterbinden muss die Option ''-nolisten tcp'' in der Datei ''/usr/bin/startx'' zu der Variablen ''defaultserverargs'' hinzugefügt werden. | |||
defaultserverargs="-nolisten tcp" | |||
Falls X per kdm gestartet wird, scheint das ''startx'' Script nicht ausgeführt zu werden. | |||
In diesm Fall muss die Option ''-nolisten tcp'' in der Datei ''/usr/share/config/kdm/kdmrc'' zu der Variablen ''ServerCmd'' hinzugefügt werden. | |||
ServerCmd=/usr/bin/X -br -nolisten tcp | |||
Die -br Option bewirkt, dass X mit einem schwarzen root-Fenster startet. Weitere Optionen des X Servers findet man auf der man page. | |||
man Xserver | |||
Nutzt man keinen [[Login-Manager]] um X zu starten und will ''/usr/bin/startx'' nicht verändern, kann man die Option(en) auch als Parameter angeben. | |||
startx -- -nolisten tcp | |||
''''' | Dies ist jedoch nur notwendig, wenn ''startx'' mit weiteren Optionen aufgerufen wird. Werden keine Optionen übergeben, so liest X die Datei ''/etc/X11/xinit/xserverrc'' bzw ''~/.xserverrc''. | ||
'' | Der erste Abschnitt ''-nolisten tcp'' ist unter Archlinux bereits eingetragen. | ||
'' | |||
==Xorg starten== | ==Xorg starten== | ||
Gestartet wird der ''X.org'' über ''/usr/bin/startx'' oder per [[Login-Manager]]. Bei der startx-Methode gibt es mehrere Möglichkeiten: | |||
===Nach Login manuell ausführen=== | |||
''startx'' muss nach dem Login manuell ausgeführt werden: | |||
startx | |||
===Nach Login automatisch ausführen=== | |||
startx | startx wird nach dem Login (auf der 1. Konsole) automatisch ausgeführt. Dazu folgendes am Ende der ''~/.bash_profile'' eintragen: | ||
if [ "$(tty)" = "/dev/tty1" ]; then | |||
if [ "$(tty)" = "/dev/ | |||
startx | startx | ||
fi | fi | ||
Zeile 163: | Zeile 106: | ||
Soll der User beim Beenden von X automatisch wieder ausgeloggt werden, kann man noch ''logout'' hinzufügen: | Soll der User beim Beenden von X automatisch wieder ausgeloggt werden, kann man noch ''logout'' hinzufügen: | ||
if [ "$(tty)" = "/dev/ | if [ "$(tty)" = "/dev/tty1" ]; then | ||
startx | startx | ||
logout | logout | ||
fi | fi | ||
===Mittels automatischem Login ausführen=== | |||
Nebst dem vorherigen Punkt ist folgendes durchzuführen: | |||
cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@tty1.service | |||
In der kopierten Datei folgende Zeile suchen und ändern: | |||
von | |||
ExecStart=-/sbin/agetty --noclear %I | |||
nach | |||
ExecStart=-/sbin/agetty --noclear -a <username> %I 38400 | |||
Wobei ''<username>'' durch den Namen des Benutzers, welcher automatisch angemeldet (und ergo in dessen Benutzerkontext der Xserver gestartet) werden soll, ersetzt werden muss.<br> | |||
Den normalen getty Service deaktivieren: | |||
systemctl disable getty@tty1 | |||
Den neuen Service aktivieren: | |||
systemctl enable autologin@tty1 | |||
wird | Beim nächsten Neustart wird der Rechner den Benutzer ''<username>'' automatisch auf ''tty1'' anmelden.<br> | ||
Da dabei die <code>~/.bash_profile</code> (s.o.) ausgeführt wird, wird im folgenden der Xserver gestartet. | |||
===Ohne Benutzerlogin starten=== | |||
Um den Xserver gänzlich ohne Benutzerlogin zu starten, muss der Xserver als Systemd.service als ''root'' gestartet werden, da die ''rootless'' Funktion des Xservers nur mit einer Login Session (s.o.) funktioniert. | |||
== | {{hc|1=/etc/systemd/system/xorg-server.service|2= | ||
[Unit] | |||
Description=Plain X.org server | |||
Conflicts=getty@tty7.service display-manager.service | |||
[Service] | |||
/usr/bin/ | Type=simple | ||
ExecStart=/usr/bin/Xorg vt7 -nolisten tcp -noreset | |||
Restart=on-failure | |||
[Install] | |||
WantedBy=graphical.target}} | |||
Dieses Unit startet den Xserver als ''root'' auf dem virtuellen Terminal Nr. 7 (''vt7'', [Strg]+[Alt]+[F7]).<br> | |||
Entsprechend konfligiert er daher mit ''getty@tty7'' da nur einer der beiden Dienste auf dem entsprechenden Terminal gestartet werden kann.<br> | |||
Sebstredend kann ''vt7'' durch ein anderes Terminal oder ein virtuelles Display ersetzt werden. | |||
==Fehlersuche== | |||
Bei der Fehlersuche kann es hilfreich sein einen Blick in die Xorg Log Datei zu werfen. | |||
Zur besseren Übersicht ist es empfehlenswert nur die Warnungen (WW) und Fehler (EE) anzeigen zu lassen. | |||
grep -e WW -e EE /var/log/Xorg.0.log | |||
==Bekannte Probleme== | |||
===X kann ACPI nicht laden=== | |||
Steht in /var/log/Xorg.0.log | |||
(WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory) | |||
so liegt das wahrscheinlich daran, dass kein acpid-Daemon läuft. | |||
Damit ACPI läuft muss das Paket installiert werden, mit | |||
pacman -S acpid | |||
Anschließend noch den acpid Daemon aktivieren | |||
systemctl enable acpid | |||
== | ===Strg+Alt+Backspace beendet X nicht=== | ||
Die Tastenkombination Strg+Alt+Backspace zum sofortigen beenden von X ist standardmäßig deaktiviert. | |||
Um das gewünschte Verhalten zu erhalten, muss | |||
Option "XkbOptions" "terminate:ctrl_alt_bksp" | |||
in der Datei /etc/X11/xorg.conf.d/00-keyboard.conf hinzugefügt werden.<br> | |||
Section "InputClass" | |||
Identifier "system-keyboard" | |||
MatchIsKeyboard "on" | |||
Option "XkbLayout" "de" | |||
Option "XkbVariant" "deadgraveacute" | |||
Option "XkbOptions" "terminate:ctrl_alt_bksp" | |||
EndSection | |||
== | ==Siehe auch== | ||
* [[Synaptics Touchpad Treiber|Synaptics Touchpad Treiber]] | |||
* [[Arch_Linux_auf_Deutsch_stellen|Deutsches Tastaturlayout]] | |||
*[[ | * [[Schriftarten]] | ||
*[[ | * [[Login-Manager]] | ||
*[[Schriftarten]] | |||
*[[Login-Manager]] | |||
==Weblinks== | |||
* [http://www.x.org Xorg Homepage] {{sprache|en}} | |||
[[Kategorie: | [[Kategorie: X11]] | ||
[[ | [[en:Xorg]] |
Aktuelle Version vom 7. Januar 2022, 10:16 Uhr
Das X window system, auch X oder X11 genannt, stellt unter Linux und anderen UNIX-artigen Betriebssystemen die grafische Oberfläche bereit. Die unter Linux wohl am meist genutzte Implementierung ist X.org.
Installation
X.org ist als
xorg-server
in extra
verfügbar, und kann von dort
mittels Pacman
installiert werden.
pacman -S xorg-server
# Zum einfachen starten des Servers
pacman -S xorg-xinit
Anschließend sollte der Treiber für die Grafikkarte installiert werden. Die folgenden Artikel der drei gängigen Systeme bieten hierzu detaillierte Informationen.
Weitere Treiber lassen sich mittels der Suche nach xf86-video
über Pacman finden.
Wenn keiner der Treiber funktioniert, kann man xf86-video-vesa benutzen. Dieser Treiber ist sehr robust und sollte immer ein Bild ausgeben können, man muss allerdings auf viele Funktionen verzichten und relativ starke Performanceeinbußen hinnehmen. Er ist also eher eine Notlösung, falls der eigentliche Treiber nicht funktioniert.
Konfiguration
X.org wird über die Dateien in
/etc/X11/xorg.conf.d/
konfiguriert.
Eine komplette Konfigurationsdatei wie bis zum X-Server 1.7 unter /etc/X11/xorg.conf ist nicht mehr notwendig.
Jetzt können unter /etc/X11/xorg.conf.d/ verschiedene Dateien mit der Endung *.conf angelegt werden z.B. für die Maus und Tastatur. Die Konfigurationsdateien werden alphabetisch eingelesen, was ermöglicht eine Einstellung mit einer später folgenden Datei zu überschreiben.
Eingabegeräte
Eingabegeräte lassen sich mittels InputClasses konfigurieren. Sie beziehen sich nicht auf ein einzelnes Gerät sondern auf eine ganze Klasse von Geräten. Dazu wird eine Section "InputClass" angelegt, in der mittels matches festgelegt wird, auf welche Geräte die nachfolgenden Einstellungen zutreffen sollen.
Soll lediglich ein deutsches Tastaturlayout eingestellt werden, befinden sich im Beitrag Arch Linux auf deutsch stellen weitere Informationen dazu.
Dieses Beispiel weist allen Tastaturen ein deutsches Tastaturlayout zu:
Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "de" Option "XkbVariant" "deadgraveacute" EndSection
Und wird z.B. unter /etc/X11/xorg.conf.d/00-keyboard.conf abgespeichert.
Es lassen sich auch mehrere Match* Option verwenden, um die Geräteklasse genauer anzugeben. Folgende Optionen sind verfügbar:
Option | Beschreibung |
MatchIsPointer, MatchIsKeyboard, MatchIsTouchpad, MatchIsTouchscreen, MatchIsJoystick | trifft auf die jeweiligen Geräte zu |
MatchProduct "foo|bar" | trifft auf alle Geräte zu, deren Name foo oder bar enthält |
MatchVendor "foo|bar" | trifft auf alle Geräte zu, deren Herstellername foo oder bar enthält |
MatchDevicePath "/dev/input/event*" | trifft auf alle Geräte zu, deren Pfad mit /dev/input/event beginnen |
Die Optionen für die jeweiligen Treiber finden sich in den Manpages.
z.B.
man xorg.conf
Eine Möglichkeit um die MatchProduct und MatchVendor anzuzeigen ist
udevadm info --export-db | grep -Ew "(NAME|ID_VENDOR)"
TCP Port 6000 schließen
Standardmäßig startet X auf dem TCP Port 6000. Um dies zu unterbinden muss die Option -nolisten tcp in der Datei /usr/bin/startx zu der Variablen defaultserverargs hinzugefügt werden.
defaultserverargs="-nolisten tcp"
Falls X per kdm gestartet wird, scheint das startx Script nicht ausgeführt zu werden.
In diesm Fall muss die Option -nolisten tcp in der Datei /usr/share/config/kdm/kdmrc zu der Variablen ServerCmd hinzugefügt werden.
ServerCmd=/usr/bin/X -br -nolisten tcp
Die -br Option bewirkt, dass X mit einem schwarzen root-Fenster startet. Weitere Optionen des X Servers findet man auf der man page.
man Xserver
Nutzt man keinen Login-Manager um X zu starten und will /usr/bin/startx nicht verändern, kann man die Option(en) auch als Parameter angeben.
startx -- -nolisten tcp
Dies ist jedoch nur notwendig, wenn startx mit weiteren Optionen aufgerufen wird. Werden keine Optionen übergeben, so liest X die Datei /etc/X11/xinit/xserverrc bzw ~/.xserverrc.
Der erste Abschnitt -nolisten tcp ist unter Archlinux bereits eingetragen.
Xorg starten
Gestartet wird der X.org über /usr/bin/startx oder per Login-Manager. Bei der startx-Methode gibt es mehrere Möglichkeiten:
Nach Login manuell ausführen
startx muss nach dem Login manuell ausgeführt werden:
startx
Nach Login automatisch ausführen
startx wird nach dem Login (auf der 1. Konsole) automatisch ausgeführt. Dazu folgendes am Ende der ~/.bash_profile eintragen:
if [ "$(tty)" = "/dev/tty1" ]; then startx fi
Soll der User beim Beenden von X automatisch wieder ausgeloggt werden, kann man noch logout hinzufügen:
if [ "$(tty)" = "/dev/tty1" ]; then startx logout fi
Mittels automatischem Login ausführen
Nebst dem vorherigen Punkt ist folgendes durchzuführen:
cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@tty1.service
In der kopierten Datei folgende Zeile suchen und ändern: von
ExecStart=-/sbin/agetty --noclear %I
nach
ExecStart=-/sbin/agetty --noclear -a <username> %I 38400
Wobei <username> durch den Namen des Benutzers, welcher automatisch angemeldet (und ergo in dessen Benutzerkontext der Xserver gestartet) werden soll, ersetzt werden muss.
Den normalen getty Service deaktivieren:
systemctl disable getty@tty1
Den neuen Service aktivieren:
systemctl enable autologin@tty1
Beim nächsten Neustart wird der Rechner den Benutzer <username> automatisch auf tty1 anmelden.
Da dabei die ~/.bash_profile
(s.o.) ausgeführt wird, wird im folgenden der Xserver gestartet.
Ohne Benutzerlogin starten
Um den Xserver gänzlich ohne Benutzerlogin zu starten, muss der Xserver als Systemd.service als root gestartet werden, da die rootless Funktion des Xservers nur mit einer Login Session (s.o.) funktioniert.
/etc/systemd/system/xorg-server.service
[Unit] Description=Plain X.org server Conflicts=getty@tty7.service display-manager.service [Service] Type=simple ExecStart=/usr/bin/Xorg vt7 -nolisten tcp -noreset Restart=on-failure [Install] WantedBy=graphical.target
Dieses Unit startet den Xserver als root auf dem virtuellen Terminal Nr. 7 (vt7, [Strg]+[Alt]+[F7]).
Entsprechend konfligiert er daher mit getty@tty7 da nur einer der beiden Dienste auf dem entsprechenden Terminal gestartet werden kann.
Sebstredend kann vt7 durch ein anderes Terminal oder ein virtuelles Display ersetzt werden.
Fehlersuche
Bei der Fehlersuche kann es hilfreich sein einen Blick in die Xorg Log Datei zu werfen.
Zur besseren Übersicht ist es empfehlenswert nur die Warnungen (WW) und Fehler (EE) anzeigen zu lassen.
grep -e WW -e EE /var/log/Xorg.0.log
Bekannte Probleme
X kann ACPI nicht laden
Steht in /var/log/Xorg.0.log
(WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
so liegt das wahrscheinlich daran, dass kein acpid-Daemon läuft.
Damit ACPI läuft muss das Paket installiert werden, mit
pacman -S acpid
Anschließend noch den acpid Daemon aktivieren
systemctl enable acpid
Strg+Alt+Backspace beendet X nicht
Die Tastenkombination Strg+Alt+Backspace zum sofortigen beenden von X ist standardmäßig deaktiviert.
Um das gewünschte Verhalten zu erhalten, muss
Option "XkbOptions" "terminate:ctrl_alt_bksp"
in der Datei /etc/X11/xorg.conf.d/00-keyboard.conf hinzugefügt werden.
Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "de" Option "XkbVariant" "deadgraveacute" Option "XkbOptions" "terminate:ctrl_alt_bksp" EndSection