Xinit

Bild des Benutzers oxy
Tags:

Unter bestimmten Umständen kann es Sinn machen für ein Spiel eine eigene X-Instanz zu starten, das geht sehr gut mit xinit.

Mit xinit einen eigenen Server zum Spielen starten

Unter bestimmten Umständen kann es Sinn machen für ein Spiel eine eigene X-Instanz zu starten, das geht sehr gut mit xinit.

Ein Grund dafür kann sein, dass man gerne verschiedene xorg.conf Konfiguration für Spiele und normalen Desktop benutzen will. z.B. (stabile) OpenSource Grafikkartentreiber für den normalen Betrieb, und 3D Beschleunigte Treiber beim Spielen. Oder man möchte gerne einfach auf den Desktop während des Spiels zurückschalten, um kurz nach Mails zu sehen o.Ä..

Ich persönlich starte zum Spielen einen eigenen XServer, weil ich für den normalen Desktopbetrieb zwei Bildschirme nutze, zum Spielen aber nur einen will (und sinnvoll nutzen kann), und da ich für das Spielen den Event-Device Treiber für meine Maus nutzen will, um die Sondertasten der Maus mitzunutzen. Die Eventdev Treiber laufen mit Suspend to Disk nicht ordentlich (nach dem Aufwachen funktioniert die Maus nichtmehr), deshalb die Treiber nur für's spielen.

Aus welchen Gründen man auch immer einen zweiten Xserver starten will, das ganze ist denkbar einfach. xinit muss natürlich zuerst installiert sein (bei Debian ist es ein eigenes Paket).

Dann kann man mit

xinit /usr/local/bin/dein_spiel -- :1

das Spiel mit einem eigenen Xserver starten. Es muss übrigens immer der volle Pfad des zu startenden Spiels angegeben werden.

Wer das aus einem laufendem X heraus versucht, wird die Meldung bekommen, dass das Starten eines Xservers nicht erlaubt ist. Von der Textkonsole aus geht es, ist aber nicht so bequem. Deshalb muss in der /etc/X11/Xwrapper.config "allowed_users" von "console" auf "anybody" geändert werden.

So, unter Umständen gibt es ein weiteres Problem (unter Debian ist es der Fall), dann meckert xinit, dass es bestimmte Logdateien nicht verschieben kann. Ein temporärer Workaround ist:

chmod +s /usr/bin/X11/Xorg

Danach sollte es aber funktionieren. Äußerst klug ist es aber nicht Xorg setuid Root zu machen. Ich suche zur Zeit noch nach einer besseren Lösung, bis dahin sollte dieser Workaround mit Vorsicht genossen werden.

Zurück auf den Normalen Display kommt man normalerweise über STRG + ALT + F7, zu dem neugestarteten Server wieder mit F8.

Jetzt hat man zumindest schon einen zweiten Xserver und kann bequem auf den Desktop zurückschalten.
Soll es auch noch eine eigene xorg Konfiguration sein, muss diese im Verzeichnis /etx/X11 abgelegt werden.

xinit /usr/local/bin/meinspiel -- :1 -config xorg-spiele.conf

startet dann "meinspiel" mit der Konfigurationsdatei /etc/X11/xorg-spiele.conf.

Einen Hinweis noch zur Stabilität: Wenn die angegebene xorg-Konfiguration nicht gefunden wurde crasht xinit bei mir den Xserver (auch den bestehenden).

Außerdem crasht beim starten über xinit in einem von zehn Fällen der bereits laufende Xserver. Also offene Dokumente am besten sichern wenn man mit xinit rumprobiert. Nachdem xinit einmal gestartet war bei mir lief aber alles einwandfrei stabil.

Screenshots und Videos