Moduliert
Für den Dezember 2005 kündigte die X.Org Foundation zwei neue Versionen des Bitmap-orientierten und netzwerktransparenten X Window System an: X11R6.9 und X11R7.0. Beide basieren auf identischem Sourcecode, unterscheiden sich aber in der internen Aufteilung. Während X11R6.9 analog zu bisherigen Releases einem monolithischen Programmpaket entstammt, ist X11R7.0 ein komplett modulares System.
- Dr. Fred Hantelmann
Seit die herstellerübergreifende X.Org-Stiftung für die Weiterentwicklung von X11 verantwortlich zeichnet, können sich seine - grob geschätzt - weltweit 30 Millionen Anwender praktisch halbjährlich über zusätzliche Fähigkeiten des wohl bedeutendsten, in Client-Server-Architektur erstellten Programmpakets für Unix-Betriebssysteme freuen.
Während das erste X.Org-Release X11R6.7 nur mit Bugfixes und einigen Aktualisierungen von Bibliotheken wie freetype, Xcursor und X Rendering Extension glänzte, konnte das im September 2004 freigegebene X11R6.8 neue Meilensteine setzen. Dort zählten etwa die Servererweiterung „Composite“ zum Aufbau auch transparenter Fenster und der verteilte „Multihead-Server“ Xdmx zu den Neuerungen [1].
Online-Ressourcen
Mit den nun offen gelegten zwei Releases steht ein Versionssprung ins Haus: Das wie bisher in einem Guss zu fertigende X11R6.9 erfährt Bugfixes, Komponenten- und Treiber-Updates, unterstützt zusätzliche Visual Classes und ist im Sourcecode besser an die ANSI-C-Erfordernisse angepasst. Das daraus entstandene X11R7.0 hingegen unterteilt sich in Module, jeweils gebündelt in die inhaltlichen Bereiche X Protokoll, Bibliotheken, Videotreiber, X Server, Anwendungen, Fonts, Werkzeuge Daten und Dokumentation. Dort lösen außerdem die Entwicklungswerkzeuge automake, autoconf, libtool und pkgconfig das bisher zum Übersetzen bemühte imake ab. Zum Test standen die Release Candidates vom November zur Verfügung. Die für den 7. Dezember angekündigte Freigabe war bei Redaktionsschluß auf den 21. Dezember verschoben worden.
Mehr Treiber für aktuelle Grafikhardware
Mehrheitlich betreffen die Neuerungen die Unterstützung aktueller Grafikchips. Unter anderem kommt der i810-Treiber nun mit Intels Grafikprozessoren i915GM und i945G zurecht. Für ATIs Rage 128 ist der Dualhead-Betrieb, also mit zwei Monitoren, integriert. Anwender von Mach64-basierter Hardware mit TV-Ausgang können jetzt diese Schnittstelle nutzen, und für ATIs Theatre 200 gibt es Unterstützung für den integrierten Videodecoder. Dank der Migration von Treibercode, der im Rahmen des GATOS-Projekts (siehe „Online-Ressourcen“) erstellt wurde, lässt sich außerdem der TV-Eingang auf ATI-Hardware ansprechen. Radeon-Chips profitieren von einem DMA-Treiber, der Render- und Xv-Operationen beschleunigt.
Der Savage-Treiber hat Dualhead- und DRI-Fähigkeit hinzugewonnen. Letzteres Feature steht nun auch für Via-Chips bereit, wobei die X.Org-Entwickler hier auf die Ergebnisse aus dem Unichrome-Projekt zurückgegriffen haben. Erwartungsgemäß haben sie die gerätespezifischen Codes für Nvidia- und SIS-Hardware ebenfalls aktualisiert. Über den hinzugekommenen sisusb-Treiber ist der Einsatz von USB-Video möglich. Bleibt der Vollständigkeit halber der Hinweis, dass Suns Creator- und Elite-Karten von Routinen profitieren dürfen, die bei X.Org hinsichtlich der Performance optimiert wurden.
Auch die Eingaberoutinen erfuhren Verbesserungen: Der bei Red Hat entwickelte evdev-Treiber ist jetzt offizieller Bestandteil von X11R6.9/7.0. Er ermöglicht den Betrieb von Eingabegeräten, deren Signale unter Linux über /proc/event/* zugänglich sind. Erweiterungen am generischen Maustreiber erlauben 24 statt der bisher gültigen Grenze von 12 Tasten.
Mit 12 Bit PseudoColor und 30 Bit TrueColor stellt der X-Server zwei neue Visual Classes bereit. Speziell Letztere ist überfällig, zumal im medizinischen Umfeld die bei 24 Bit Farbtiefe verfügbaren 256 Grauwerte für Diagnosezwecke unzureichend sind. Weitere Neuerungen im Servercode betreffen die Migration zu libdl-basierten Modulen und Multiseat-Support (mehrere Tastaturen/Mäuse bedienen einen einzelnen X-Server).
Auf Seiten der X-Anwendungen zählen nun zwei grafische Konfigurationsprogramme xorgcfg und xdmxconfig zum Lieferumfang. Ebenfalls dabei sind eine Handvoll kleinerer Beispiele, die elementare Eigenschaften des Distributed Multihead-Server Xdmx im laufenden Betrieb setzen. Abgesehen davon, dass die Dokumentation dazu nur der Programmcode selbst ist, illustrieren diese recht eindrucksvoll den denkbaren Einsatzbereich.
Im Test sollte Xdmx über seine Xinerama-Extension einige virtuelle, eingebettete Xnest-Server als kaskadiertes Display bedienen. Das Bildschirmfoto zeigt OpenOffice.org, verteilt auf vier virtuelle Displays. Auffällig ist zunächst die Anordnung der Gnome-Panel: Sie beranden nur den Bildschirmbereich des ersten Servers. Die Ursache hierfür ist, dass Gnomes Windowmanager die von Xinerama übermittelten Informationen auswertet und so die verfügbare Bildschirmgröße berechnet. Die jeweils benötigte Eingabe innerhalb der virtuellen Screens gelang nach Zuschalten von Tastatur und Maus über xdmxaddinput.
Unterschiede in der Übersetzungszeit
X11R6.9, die monolithische Variante, belegt als bzip2-komprimiertes Archiv 44 MByte. Ein Übersetzen forderte im Test eine Laufzeit von 19 Minuten und einen Plattenplatzbedarf von etwa 720 MByte. Als Testsystem diente ein Zweiprozessorsystem mit AMDs Opteron-246-CPUs, 2 GByte RAM und einer 80 GByte großen IDE-Festplatte, auf dem ein RHEL4U2-Clone installiert war.
Das Übersetzen der in 284 Einzelpaketen vorgehaltenen modularen Version X11R7.0 erforderte zunächst einige Klimmzüge: Zwingend benötigt ist pkgconfig in der Version 0.18.1 - RHEL4U2 enthält nur pkgconfig-0.15.0. Eine weitere Komponente libdrm, als Zubehör in Quellform enthalten, ist außerdem vorab zu übersetzen und einzuspielen.
Stolpersteine bildeten zahlreiche Konfigurationsdateien: pkgconfig fand diverse *.pc-Dateien nicht, da das zum Übersetzen bemühte Script aus X11R7.0 den jeweils benötigten Suchpfad dafür nicht setzte. Hier half eine Kopie aller *.pc-Dateien aus dem X11R7.0-Baum an die standardmäßig genutzte Position. Ähnlich behinderten einige nicht gefundene *.m4-Dateien einen reibungslosen Ablauf. Nachdem diese aus dem X11R7.0-Baum nach /usr/share/aclocal kopiert waren, gelang schließlich die Übersetzungsprozedur - Laufzeit: 75 Minuten.
Fazit
Abgesehen von den ohnehin in jeder neuen X11 Release üblichen Verbesserungen im Bereich Videotreiber bilden auf funktioneller Seite die hinzugekommenen zusätzlichen Visuals, der Multiseat-Support und ein neues Modulkonzept die wesentlichen Neuerungen. Die interne Reorganisation, also der Austausch des althergebrachten imake durch die Autotools in X11R7.0, darf man zweifelsfrei als wichtigen Schritt in Richtung modernes Softwaredesign verstehen.
Beträchtlich ist allerdings die im Test allein von den Autotools verbrauchte Zeit während des Übersetzens von X11R7.0. Außerdem fiel auf, dass das Übersetzungsscript die inzwischen übliche Gruppierung von 64-Bit-Bibliotheken in */lib64 nicht umsetzte. Mit gcc -m32 wiederum ließ sich auf der im Test genutzten x86_64-Linux-Distribution alles als 32-Bit-Code erstellen. Dank der Entscheidung des X.org-Teams, Konfigurationsdaten im pkgconfig-Format vorzuhalten, dürften damit alle Voraussetzungen für echte Biarch-Laufzeit- und -Entwicklungsumgebungen bestehen.
Fred Hantelmann
ist als Leiter Entwicklung bei der Emplics AG in Hamburg tätig und beschäftigt sich mit der Standardisierung von Cluster-Systemen.
Literatur
[1] Fred Hantelmann; Durchgeblickt; Neue Erweiterungen für das X Window System; iX 11/04, S. 80. (ka)