Gentoo Logo

Migrations-HOWTO zu modularem X

Inhalt:

1.  Einleitung

Warum modular?

Sie fragen sich vielleicht, warum aus einem einfachen xorg-x11-Paket beinahe 300 einzelne geworden sind. Das wäre auch ein ganz berechtigte Frage. =) Es handelt sich dabei nicht um etwas, was Gentoo unabhängig von X.Orgs Entwicklung macht; sie spalten die ganzen Pakete in separate Versionen und wir folgen diesem Beispiel nur.

Für dieses Aufteilen und ändern des Build-Systems gibt es mindestens drei Gründe:

  • Für neue Entwickler ist es zu schwierig sich in X einzuarbeiten. Deswegen der Wechsel zu automatischen Tools, an welche mehr Leute gewöhnt sind.
  • Dementsprechend ist es auch möglich, den Quelltext mit autotools aufzuteilen, was es gleichzeitig entwicklerfreundlicher macht.
  • Dinge sind unnötigerweise zusammengelegt worden, was dazu führte, dass Bugfixes oft nicht veröffentlicht werden konnten. Wenn die Fixes veröffentlicht wurden, war es nötig, XOrg vollständig neu zu übersetzen. Zum Beispiel müsste ein Bug im ATI-Treiber entweder 6 Monate bis zur nächsten Version warten, oder man müsste unnötigerweise seine Schriftarten erneut erstellen.

2.  Migration zum modularem X

Einleitung

Um zu verhinden, dass ein altes Paket im Weg ist, werden wir all den überflüssigen Müll vor der Installation von modularem X beseitigen. Dies ist nicht unbedingt entscheidend, aber es wird helfen einen sanften Übergang zu garantieren.

Erster Schritt: Das alte X bereinigen

Erstellen Sie sich eine Sicherungskopie Ihres monolithischen xorg-x11 für den Fall, dass das modulare X nicht zufriedenstellend funktioniert und Sie zu 6.x zurückkehren möchten. Vielleicht wollen Sie einen textbasierten Browser wie links oder lynx installieren, um dieses Howto lesen zu können, falls X nicht verfügbar ist.

Befehlsauflistung 2.1: Sichern des alten xorg-x11

# emerge gentoolkit
# quickpkg xorg-x11

Werden Sie die monolithische Installation los. Um die Möglichkeit von Abstürzen oder das Einfrieren Ihres Systems zu verhindern, raten wir Ihnen, alle laufenden X-Sitzungen zu beenden, bevor Sie X.org deinstallieren.

Befehlsauflistung 2.2: Die monolithische Installation unmergen

# emerge -Ca xorg-x11 virtual/x11

Wenn Ihr /usr/X11R6 kein symbolischer Link auf /usr ist, löschen Sie diesen und beginnen Sie ganz von vorne. Sichern Sie aber zunächst eine Liste aller Pakete, die dort installiert sind. Das gentoolkit Paket stellt equery zur Verfügung.

Befehlsauflistung 2.3: Eine Paketliste anfertigen

# if [[ ! -L /usr/X11R6 ]]; \
  then equery belongs /usr/X11R6 > ~/usr-x11r6-packages \
  && rm -rf /usr/X11R6; fi

Schließlich sollte, wenn es vorhanden ist, /usr/lib/X11/xkb (bei 64-Bit Benutzern /usr/lib64/X11/xkb) entfernt werden. Dies ist eine Voraussetzung für die Installation des xkeyboard-config Pakets.

Zweiter Schritt: Modulares X installieren

Für Direct Rendering setzen Sie bitte das dri USE-Flag. Es sollte standardmäßig gesetzt sein.

Als nächstes entscheiden Sie, welche Treiber Sie installieren müssen. Dies variiert basierend auf Ihrer Eingabe- und Video-Hardware. Wenn Sie bereits eine funktionierende /etc/X11/xorg.conf haben, führen Sie folgenden Befehl aus, um eine Vorstellung über die benötigten Treiber zu erhalten:

Befehlsauflistung 2.4: Herausfinden, welche Treiber gebraucht werden

# grep Driver /etc/X11/xorg.conf
    Driver      "kbd"
    Driver      "mouse"
    Driver      "radeon"

Befehlsauflistung 2.5: Verfügbare Treiber kontrollieren

# emerge --verbose --pretend xorg-x11
[ebuild   R   ] x11-base/xorg-x11-7.0-r1  USE="-xprint" INPUT_DEVICES="keyboard
mouse -acecad -aiptek -calcomp -citron -digitaledge -dmc -dynapro -elo2300
-elographics -evdev -fpit -hyperpen -jamstudio -joystick -magellan -magictouch
-microtouch -mutouch -palmax -penmount -spaceorb -summa -synaptics% -tek4957
-ur98 -vmmouse -void" VIDEO_CARDS="i128 mga radeon savage -apm -ark -chips
-cirrus -cyrix -dummy -fbdev -fglrx% -glint -i740 -i810 -imstt -mach64 -neomagic
-newport -nsc -nv -nvidia% -r128 -rendition -s3 -s3virge -siliconmotion -sis
-sisusb -sunbw2 -suncg14 -suncg3 -suncg6 -sunffb -sunleo -suntcx -tdfx -tga
-trident -tseng -v4l -vesa -vga -via -vmware -voodoo" 0 kB

Setzen Sie INPUT_DEVICES und VIDEO_CARDS Ihren Bedürfnissen entsprechend in /etc/make.conf. Das Minimum der obigen Einstellungen wäre INPUT_DEVICES="keyboard mouse" VIDEO_CARDS="radeon". Wenn Sie keine der Variablen setzen, wird xorg-x11 alle möglichen Treiber diesen Typs einbauen. Als Backup-Treiber sollten Sie vielleicht außerdem vesa und fbdev zu VIDEO_CARDS hinzufügen.

Jetzt installieren Sie das Metabuild. Dies wird den Server und beliebte Anwendungen installieren und Ihnen eine funktionierende Desktop-Implementierung von X zur Verfügung stellen.

Befehlsauflistung 2.6: Installieren des modularen Metabuilds

# emerge xorg-x11
# etc-update
# revdep-rebuild
# [[ -e ~/usr-x11r6-packages ]] && emerge
$(<~/usr-x11r6-packages)

Notiz: Wenn Sie wirklich eine minimale Installation wollen, installieren Sie nur xorg-server. Dies wird nur das einbauen, was zum Starten des X-Servers notwendig ist.

Diese Installation versucht möglichst klein zu sein, so dass Dinge wie xcursor-themes standardmäßig nicht installiert werden. In diesem spezifischen Beispiel werden Sie xcursor-themes wollen, falls Sie Ihre Cursor-Einstellung auf whiteglass, redglass, oder handhelds geändert haben. Wenn Sie die gentoo, gentoo-blue, oder gentoo-silver Cursorthemes benutzen, installieren Sie gentoo-xcursors.

Notiz: Bei modularer Installation kann es sein, dass externe Treiber wie nvidia-glx, wacom und auch einige vnc-Applikationen nicht arbeiten, wenn diese ihr Zeug nach /usr/lib/modules anstelle von /usr/lib/xorg/modules installieren. Viele werden eine Erkennung für modulares X in die Installationsroutinen eingebaut haben, wodurch sie nach der Installation von modularem X erneut emerged werden müssen. Außerdem werden Sie bei vielen externen Treibern das dlloader USE-Flag setzen und dann die Treiber neu erstellen müssen.

3.  Vorbehalte/Gängige Probleme

'emerge -u world' will xorg-x11 6.x, oder virtual/x11 installieren

Das kommt daher, dass der Portagetree bisher nicht an die modularen Abhängigkeiten angepasst wurde. Sie können der Portierung helfen, indem Sie das HOWTO zur Portierung zum modularem X lesen und Bugs mit Patches für das jeweilige Paket bei den Entwicklern einreichen. Die Entwickler werden in der Datei metadata.xml aufgeführt sein, welche sich im selben Verzeichnis wie das Paket befindet, und das herdstat Paket wird die Suche nach ihnen beschleunigen.

Vor allem, wenn Sie modulares X auf einem ansonsten stabilen System betreiben, werden Sie mit dieser Angelegenheit konfrontiert werden. Viele Pakete arbeiten nur in der ~arch-Version mit modularem X, also werden Sie womöglich zusätzliche Pakete der Datei /etc/portage/package.keywords hinzufügen müssen.

Was ist mit den ganzen USE-Flags passiert?

Viele der USE-Flags in xorg-x11-6.8-Serie verschwanden oder verschoben sich in 7.0. Es erschienen neue USE-Flags. Hier kommt der Grund dafür:

USE-Flag Was passiert in 7.0?
3dfx In 7.0 beinhaltet das xorg-x11 Metabuild glide-v3
3dnow, mmx, sse Standardmäßig beim Erstellen aktiviert, weil es Laufzeit-Checks gibt
bitmap-fonts, truetype-fonts, type1-fonts Das xorg-x11 Metabuild beinhaltet eine geringe Auswahl der am meisten benutzten oder benötigten Schriften. Sie können zusätzlich alle weiteren vorhandenen in media-fonts/ installieren.
cjk Verwenden Sie USE=nls bei font-misc-misc und font-sony-misc, um japanische JISX0201 Schriften zu erhalten. Weitere befinden sich in font-jis-misc. Chinesische Schriften sind in font-isas-misc. Koreanische Schriften sind in font-daewoo-misc.
dlloader 7.0 verwendet dlloader standardmäßig, und der elfloader funktioniert nicht.
doc Verschoben nach app-doc/xorg-docs
dmx In xorg-server eingebaut, sofern nicht USE=minimal.
font-server Sie können xfs manuell installieren.
ipv6 Verschoben in individuelle Pakete, welche dies verwenden. Setzen Sie es global, wenn Sie es wünschen.
minimal Um den selben Effekt zu erzielen, installieren Sie einfach xorg-server anstelle von xorg-x11. USE=minimal beim xorg-server verhindert das Erstellen von Xdmx, Xvfb und Xnest. Wenn Sie etwas minimaleres wünschen, sehen Sie sich x11-base/kdrive an.
nls In 7.0 installiert USE=nls alle nicht-ISO8859-1 Versionen der Schriften.
nocxx Bisher nichts äquivalentes in 7.0
opengl Hat den Namen zu "dri" gewechselt, welches Direct Rendering in xorg-server und vielen Treibern aktiviert. Ob USE=dri gesetzt ist oder nicht, Sie sollten dennoch Software-3D mittels Mesa bekommen.
pam Verschoben in individuelle Pakete, die dies verwenden, wie zum Beispiel xorg-server und xdm.
sdk 7.0 muss SDK als Folge der Modularisierung installieren.
static Normalerweise macht es nicht allzu viel Sinn, einen statischen Server in einer modularen Umgebung zu erstellen, da der Treiber nicht eingebaut werden kann.
xprint Beim Metabuild in libXp eingebaut. Bei anderen Applikationen wird xprint-Support eingebaut. Die meisten werden dies nicht aktivieren wollen.
xv Nicht länger optional, da es nicht viel Platz spart und in Verbindung mit anderen Paketen, die es voraussetzen, Probleme verursacht.

Was ist mit all den Konfigurationsdateien passiert?

In Gentoos X.Org 6.8 Paket wurden alle Konfigurationsdateien unter /etc/X11 gespeichert. Im modularen X wurden die Speicherorte für diese Dateien geändert -- das bedeutet, dass die Konfigurationsdateien noch immer in /etc/X11 liegen, dass aber Skripte und Standardkonfigurationen nun unter /usr/lib/X11 (oder /usr/lib64/X11) und /usr/share/X11 zu finden sind.

Wegen des Schutzes der Konfigurationsdateien (CONFIG_PROTECT) werden Sie wahrscheinlich alle Ihre alten Konfigurationsdateien von X.Org 6.8 noch unter /etc/X11 haben, die dort nur Platz belegen und nützlich aussehen.

Da diese neuen Verzeichnisse nicht unter dem Schutz von CONFIG_PROTECT stehen, ist es wichtig, dass alle Änderungen an den Standardkonfigurationen so durchgeführt werden, dass die relevanten Dateien nach /etc/X11 kopiert und dort aktualisiert werden. Es folgen einige Beispiele:

Befehlsauflistung 3.1: Anpassen der Initialisierung von XDM


Zuerst kopieren Sie die Datei Xsetup_0 nach /etc, so dass sie
konfigurations-geschützt ist.

# cp -a /usr/lib/X11/xdm/Xsetup_0 /etc/X11/xdm/

Bearbeiten und verändern Sie diese Datei nach Ihren Wünschen.


Dann editieren Sie xdm-config, um den Pfad zu dieser Datei zu ändern.

# nano /etc/X11/xdm/xdm-config

Ändern Sie folgende Passage von dieser Version:

  ! The following three resources set up display :0 as the console.
  DisplayManager._0.setup:        /usr/lib/X11/xdm/Xsetup_0
  DisplayManager._0.startup:      /usr/lib/X11/xdm/GiveConsole
  DisplayManager._0.reset:        /usr/lib/X11/xdm/TakeConsole

... auf diese:

  ! The following three resources set up display :0 as the console.
  DisplayManager._0.setup:        /etc/X11/xdm/Xsetup_0
  DisplayManager._0.startup:      /usr/lib/X11/xdm/GiveConsole
  DisplayManager._0.reset:        /usr/lib/X11/xdm/TakeConsole

Notiz: Auf 64Bit multilib Systemen mit dem no-symlink Profil müssen Sie lib in lib64 ändern.

In diesem von Joe Womack eingeschickten Beispiel werden wir einige xterm Einstellungen anpassen. Dies kann entweder global oder benutzerspezifisch gemacht werden.

Befehlsauflistung 3.2: Globales Anpassen von app-defaults/XTermn-color


Analog zum obigen Beispiel kopieren Sie die Datei nach /etc, damit sie
konfigurations-geschützt ist:

# cp -a /usr/share/X11/app-defaults/XTerm-color /etc/X11/app-defaults/

Ändern Sie die Datei wunschgemäß. Jetzt müssen wir Xt mittels
XFILESEARCHPATH mitteilen, wo es die Dateien finden kann. Wir machen dies
in einer Datei unter /etc/env.d:

# echo '# Dies betrifft systemweite Anpassungen.' >> /etc/env.d/10xpaths
# echo 'XFILESEARCHPATH=/etc/X11/%T/%N:/usr/share/X11/%T/%N' >> /etc/env.d/10xpaths

Befehlsauflistung 3.3: Lokales Anpassen von app-defaults/XTerm-color

Es gibt zwei Wege, dies zu tun:

1) Einrichten eines benutzerspezifischen app-defaults Verzeichnnis:

# echo '# Dies betrifft Anpassungen durch den Benutzer in $HOME/app-defaults.' >> /etc/env.d/10xpaths 
# echo 'XUSERFILESEARCHPATH=$HOME/%T/%N' >> /etc/env.d/10xpaths


2) Erstellen Sie eine .Xdefaults oder .Xresources und kopieren Sie die
Einstellungen, die Sie ändern möchten. Dieses Beispiel ändert alle XTerms so,
dass sie einen orangen Cursor haben, als Login-Shell laufen, einen Scrollbar
und einen 1000 Zeilen Puffer zum rückwärts blättern besitzen:

# echo '! Xterm defaults'               >> .Xresources
# echo 'XTerm*CursorColor:      orange' >> .Xresources
# echo 'XTerm*loginShell:       true'   >> .Xresources
# echo 'XTerm*scrollBar:        true'   >> .Xresources
# echo 'XTerm*saveLines:        1000'   >> .Xresources


Um diese Einstellungen zu aktivieren, starten Sie entweder X neu oder
führen Sie Folgendes aus:

# xrdb -merge $HOME/.Xresources

Notiz: Schauen Sie sich http://www.faqs.org/faqs/x-faq/part2/section-22.html für genauere Details zu den Einstellungen XFILESEARCHPATH und XUSERFILESEARCHPATH an. Werfen Sie einen Blick auf http://tldp.org/HOWTO/XWindow-User-HOWTO/moreconfig.html#XRESOURCES für Details zu .Xresources.

Treiberprobleme

Ich habe Berichte erhalten, dass:

  • vesa den Rechner bei Matrox-Karten einfriert
  • vga einen eigenartigen Bildschirm produziert, der geviertelt ist

3D-Beschleunigung wieder zum Laufen bekommen

Um einige Debug-Informationen zu bekommen, die dabei helfen Direct Rendering ans Laufen zu bekommen:

Befehlsauflistung 3.4: Einige Debug-Informationen erhalten

# grep -e EE -e WW /var/log/Xorg.0.log
# LIBGL_DEBUG=verbose glxinfo

Automatische Erkennung des Maus-Protokolls

Wenn Sie "Protocol" "auto" in der xorg.conf für Ihre Maus gesetzt haben, funktioniert sie möglicherweise nicht. Sie müssen eventuell "Protocol" "ExplorerPS/2" oder "IMPS/2" eintragen, damit Ihr Mausrad funktioniert.

Ich bekomme Fehlermeldungen, dass libbitmap oder libpcidata nicht gefunden werden konnten

Stellen Sie sicher, dass kein ModulePath Eintrag in /etc/X11/xorg.conf existiert.

gdm/kdm funktionieren nicht

Wenn Sie modulares X auf einer frischen Gentoo-Installation eingerichtet haben, werden Sie womöglich keinen /usr/X11R6 -> /usr Symlink haben. Das x11-base/xorg-x11 Paket wird sicherstellen, dass der symbolische Link während des emerge-Prozesses besteht.

Indem Sie die Pakete ausbessern, die sich dorthin installieren, können Sie dabei helfen, die Dinge aus /usr/X11R6 zu entfernen. Vergessen Sie außerdem nicht, diese Paket zu re-installieren.

Befehlsauflistung 3.5: Pakete, die nach /usr/X11R6 installieren

# cat ~/usr-x11r6-packages
# emerge --pretend $(< ~/usr-x11r6-packages )

XKB funktioniert nicht, ich kann nicht zwischen virtuellen Konsolen wechseln, usw.

  • Viele XKB-Layouts sind gewandert, zusammengelegt worden oder verschwunden. Werfen Sie einen Blick auf /usr/share/X11/xkb/symbols/, um zu sehen, was mit Ihren alten XKB-Layouteinstellungen in xorg.conf passiert ist. Um beispielsweise das alte "us_intl"-Layout zu ersetzen, würden Sie "XkbLayout" "latin", "XkbOptions" "lv3:ralt_switch" einsetzen. Um das alte "sk_qwerty"-Layout zu ersetzen, würden Sie "XkbLayout" "sk", "XkbVariant" "qwerty" einsetzen. Ein detaillierteres Beispiel, Sie haben eventuell "XkbLayout" "us,sk_qwerty": Um das ans Laufen zu bekommen, wäre die neue Einstellung "XkbLayout" "us,sk". Der Trick ist das Komma in diesem Abschnitt hier: "XkbVariant" ",qwerty", da Sie diese Variante dem zweiten Layout zuordnen.

Befehlsauflistung 3.6: XKB-Änderungen ausfindig machen

Checken Sie /var/log/Xorg.0.log auf diese Nachricht:
(WW) Couldn't load XKB keymap, falling back to pre-XKB keymap
Wenn Sie diesen Fehler nicht haben, funktioniert Ihr XKB bereits.

# grep Xkb /etc/X11/xorg.conf
        Option "XkbModel"  "logibik"
        Option "XkbLayout"  "dvorak"
        Option "XkbOptions" "ctrl:swapcaps"
Betrachten Sie als erstes, was sich an Ihrem Layout geändert hat. Dies ist das symbols/pc Verzeichnis.
# cd /usr/share/X11/xkb/symbols/
Wenn Sie xkbdata anstelle von xkeyboard-config installiert haben,
wechseln Sie in das pc/ Unterverzeichnis.
# ls *dvorak*
OK, nichts wird angezeigt.
Viele der alten Layouts wurden in in ihre regionalen Keymaps
verschoben.
# ls *us*
us
Jetzt suchen wir eine xkb_symbols-Variante namens dvorak.
# grep xkb_symbols.*dvorak us
xkb_symbols "dvorak" {
Dies bedeutet, dass wir in der xorg.conf die Optionen
"XkbLayout" "us"
und "XkbVariant" "dvorak" benötigen.

Wenn wir dies jedoch mit setxkbmap testen, erhalten wir immer noch
einen Fehler.
# setxkbmap -model logibik -layout us -variant dvorak -option "ctrl:swapcaps"
Vielleicht hat das Model sich ebenfalls geändert.
# cd /usr/share/X11/xkb/rules/
# grep logibik xorg.lst
Keine Ausgabe, also ist das Model weg. Was ist mit
ähnlichen?
# grep logi* xorg.lst
  logiaccess      Logitech Access Keyboard
  logicdit        Logitech Cordless Desktop iTouch
  logicdp         Logitech Cordless Desktop Pro
  logicdpa        Logitech Cordless Desktop Pro (alternate option)
  logicdpa2       Logitech Cordless Desktop Pro (alternate option2)
  logicdo         Logitech Cordless Desktop Optical
  logicfn         Logitech Cordless Freedom/Desktop Navigator
  logicdn         Logitech Cordless Desktop Navigator
  logidak         Logitech Deluxe Access Keyboard
  logiitc         Logitech iTouch Cordless Keyboard (model Y-RB6)
  logiik          Logitech Internet Keyboard
  logiitc         Logitech iTouch Cordless Keyboard (model Y-RB6)
  logiik          Logitech Internet Keyboard
  logiink         Logitech Internet Navigator Keyboard
  logiultrax      Logitech Ultra-X Keyboard
Großartig! Das "logiik"-Model sieht ähnlich aus, also testen Sie es
mit setxkbmap.
# setxkbmap -model logiik -layout us -variant dvorak -option
"ctrl:swapcaps"
Es funktioniert, also ändern Sie den XkbModel-Eintrag auf diesen.

Danach funktioniert alles.

Andere Probleme

  • Das x11-base/xorg-x11-Paket filtert nun alle ModulePath- und RgbPath-Zeilen aus ihrer /etc/X11/xorg.conf, da beide dieser Pfade sich seit den früheren Versionen geändert haben. Stellen Sie sicher, dass Sie etc-update ausgeführt haben, um diese Änderungen abzuschließen. Wenn Sie aus irgendeinem Grund nicht rausgefiltert wurden, entfernen Sie sie selbst.


Drucken

Seite aktualisiert 5. November 2006

Zusammenfassung: Dieser Leitfaden zeigt Ihnen, wie Sie zu modularem X.Org migrieren.

Donnie Berkholz
Autor

Joshua Baergen
Autor

Stefan Gasten
Übersetzer

Jens Grüntjes
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.