| jens.hatlak.de | Über mich | ||||||
| Atari | PHP | ||||||
| Dreamweaver Manual | Linux | R40 / Debian | |||||
| Akronyme | Mozilla | Notebook | Dualhead/DRI | ||||
| SciTE | Samba | MergedFB | |||||
| FASTA-Parser | Archos | ||||||
| Ich spreche... | Genius EM700 | ||||||
Der letzte Schrei in Sachen sis-Treiber für
Linux ist sicherlich der Merged Framebuffer. Noch nie was davon gehört?
Gut möglich, denn das ist ein spezielles und v.a. recht neues Feature
von Thomas Winischhofers sis-Treiber. Wie wir im Folgenden sehen werden,
erfordert dessen Aktivierung unter SuSE 8.1 allerdings einige
Modifikationen, u.a. das Aktualisieren auf XFree 4.3, da es für SuSE 8.1
keine Binärpakete für XFree 4.2.1 gibt, und das Einspielen des
aktuellen Winischhofer-Treibers (was aber durchaus als Vorteil zu sehen ist,
da dieser gegenüber der in XFree 4.2 enthaltenen Version stark
verbessert worden ist und auch die Konfiguration mittels des neuen Tools
sisctrl erlaubt). Die gute Nachricht ist aber, dass der Kernel nicht neu
kompiliert werden muss - eines der Dinge, die auch ich mich noch nie
getraut habe (der Standard-SuSE-Kernel läuft einfach zu gut).
Anmerkung am Rande: Im neuen XFree 4.4 ist nicht nur eine Version des Winischhofer-Treibers enthalten, die den Merged Framebuffer unterstützt, sondern auch der DRI-Treiber wieder integriert! Siehe hierzu auch die Release Notes.
Im Folgenden werde ich nun das Einrichten des MergedFB unter SuSE 8.1 zeigen, und zwar am Beispiel meiner Konfiguration: 1280x1024/1024x768 (VGA/LCD). Ich übernehme jedoch ausdrücklich keine Verantwortung für jegliche Komplikationen, die durch das Befolgen oder Nichtbefolgen dieses Textes entstehen! Ihr handelt auf eigene Gefahr!
Im Folgenden wird davon ausgegangen, dass SuSE 8.1 und XFree 4.2 installiert sind. Dann leisten folgende Befehle das Gewünschte:
mkdir sis-dri-bak cd sis-dri-bak WHEREAMI=`pwd` mkdir -p usr/X11R6/lib/modules/dri mkdir usr/X11R6/lib/modules/drivers mkdir usr/X11R6/lib/modules/extensions cd usr/X11R6/lib/modules cd /usr/X11R6/lib/modules/dri cp gamma_dri.so i830_dri.so r128_dri.so sis_dri.so \ i810_dri.so mga_dri.so radeon_dri.so tdfx_dri.so \ $WHEREAMI/usr/X11R6/lib/modules/dri cd ../drivers cp sis_drv.o $WHEREAMI/usr/X11R6/lib/modules/drivers cd ../extensions cp libGLcore.a libGLcore.a.xf86_glx $WHEREAMI/usr/X11R6/lib/modules/extensions cd $WHEREAMI mkdir usr/lib cd /usr/lib/ cp -r GL libGL* $WHEREAMI/usr/lib cd $WHEREAMI
Zunächst sind natürlich die RPMs (am besten einfach alle samt DRI und sax2) von folgender Adresse zu beziehen:
ftp://ftp.suse.com/pub/suse/i386/supplementary/X/XFree86/XFree86-4.3.0-SuSE/suse81/
Diese sind dann mit rpm -Uvh *.rpm zu installieren, wobei
zumindest bei mir einige Pakete mit Dateien aus dem Basispaket
aaa_base kollidierten - da half dann leider nur noch ein
--replacefiles.
Damit DRI wieder funktioniert, muss jetzt das Backup zurück gespielt werden, da die Treiber dafür nicht mehr in XFree 4.3 (aber wieder ab CSV-Version 4.3.99.14) enthalten sind. Einfach root werden und aus dem oben angelegten Verzeichnis sis-dri-bak alles dort hin kopieren, wo es hingehört, also einfach folgendes:
cp -r sis-dri-bak/* /
Ich möchte an dieser Stelle noch einmal ausdrücklich darauf hinweisen, dass alles was hier steht auf eigene Gefahr durchzuführen ist! Wenn ihr euch das System zerschießt, übernehme ich dafür, wie auch für sonst nichts - die Verantwortung; auch dann nicht, wenn ihr alles genau so macht, wie es hier steht! Bei mir hat es funktioniert, aber irren ist menschlich und vielleicht hat sich ja beim Schreiben dieses Howtos ein schwerwiegender Fehler eingeschlichen. Für Hinweise bin ich natürlich dankbar.
Nun sollte erst einmal überprüft werden, ob noch alles so funktioniert
wie es sollte, konkret also entweder einen X-Server starten und die
verschiedenen Modi/Layouts testen (Xinerama, Clone; verschiedene
Auflösungen; DRI) oder bei normalem grafischem Login als root
rckdm restart eingeben (bewirkt ein Neustarten des K Display
Managers, also des grafischen Logins - hierbei wird KDE o.ä beendet!)
bzw. den Rechner neu starten.
Hat bis hierher alles geklappt, sollte man sich nun von Thomas Winischhofers sis-Seite den aktuellen sis-Treiber holen. Dieser findet sich dort recht weit unten unter "VII. Download the latest versions", genauer: unter "For newbies:" und ist verlinkt als "X driver for 4.3.0 (...) gcc 3.2 (SuSE 8.1 wird mit gcc3 ausgeliefert und auch die XFree 4.3 RPMs sind damit kompiliert).
Das Archiv enhält dann (hoffentlich) den aktuellen sis-Treiber
sis_drv.o, der nach /usr/X11R6/lib/modules/drivers
muss (dort sollte sich nach dem Zurückspielen des Backups noch die zu
XFree 4.2 gehörige Version befinden - einfach überschreiben; das
Backup sollte man sowieso irgendwo sicher verwahren).
Von derselben Downloadseite und Position in derselben kann man sich
gleich auch noch das SiS Display Control Panel
besorgen; Kompilieren ist i.d.R. nicht notwendig. Dieses kann man dann z.B.
in /usr/local/bin/ platzieren.
Thomas Winischhofer betreibt die Entwicklung des Treibers recht engagiert voran. Wann immer also eine neue sis-Treiberversion für XFree 4.3/gcc3 bei ihm verfügbar wird, sollte sich diese ebenso leicht aktualisieren lassen wie hier beschrieben (man bemerke, dass ich hier von keiner konkreten Treiberversion spreche). Zu beachten ist lediglich, dass man immer sis-Treiber und SiS Display Control Panel gleichzeitig auf den aktuellen Stand bringen sollte.
Ebenfalls auf ThomaSite, der Homepage des Treiberautors, findet sich eine
ausführliche Dokumentation aller Optionen, die in der XF86Config (er benutzt
Debian und dort heißt sie XF86Config-4) zu machen sind und auch der
Parameter, die das Kernelmodul akzeptiert (zur Erinnerung: Bei SuSE ist der
sis-Treiber nicht in den Kernel integriert, sondern wird über die
Modulschnittstelle nachgeladen, also mit insmod). Für den
Anfang sollte es aber reichen, wenn man sich seine
Beispielkonfigurationsdatei für den MergedFB-Modus anschaut: Unter
"Other stuff (entirely optional)" findet sich ein Link auf example XF86Config-4 for merged framebuffer mode (please
read!).
Zu beachten sind lediglich noch drei Dinge:
Modes alle
bei MetaModes irgendwo vorkommenden Auflösungen eingetragen werden,
unabhängig davon, für welchen Monitor sie gelten. Das ist ein
wichtiger Unterschied zu Xinerama und zu XFree 4.2.Hier noch auszugsweise meine aktuelle /etc/X11/XF86Conf, die die beiden von der Dualhead-Seite bekannten Profile sowie das neu hinzugekommene Merged-Layout enthält. Letzteres definiert CRT2 (das Laptop-LCD) rechts vom externen Monitor (CRT1, immer an) und die MetaModes "links SXGA, rechts XGA", "links und rechts XGA", "XGA-Clone" und "SVGA-Clone". Der gesamte Framebufferbereich ist dabei aber immer 2304x1024, d.h. in jedem MetaMode wird bei Berühren der Bildschirmgrenzen gescrollt (beim ersten nur auf dem LCD) - das LCD kann nunmal nur XGA; den externen Monitor auch darauf zu beschränken wäre aber Platzverschwendung. Der sis-Treiber bzw. der Grafikchip SiS 630 kann extern auch höhere Auflösungen, mein Monitor aber nicht. ;-)
Section "Device"
Driver "sis"
Identifier "SiS 630-0"
VendorName "SiS"
BoardName "630"
Option "HWcursor"
Option "EnableSiSCtrl" "true"
Option "MergedFB" "true"
Option "CRT2Position" "RightOf"
Option "MetaModes" "1280x1024-1024x768 1024x768-1024x768 1024x768 800x600"
Option "CRT2HSync" "31-60"
Option "CRT2VRefresh" "50-75"
Option "ForceCRT2Type" "LCD"
Option "ForceCRT1" "TRUE"
Option "MaxXFBMem" "24000"
BusID "PCI:1:00:0"
Screen 0
EndSection
Section "Device"
Driver "sis"
Identifier "SiS 630-1"
VendorName "SiS"
BoardName "630"
Option "HWcursor"
Option "ForceCRT2Type" "LCD"
Option "ForceCRT1" "TRUE"
Option "MaxXFBMem" "12288"
BusID "PCI:1:00:0"
Screen 0
EndSection
Section "Device"
Driver "sis"
Identifier "SiS 630-2"
Option "ForceCRT1" "TRUE"
BusID "PCI:1:00:0"
Screen 1
EndSection
Section "Screen"
Identifier "Screen0"
Device "SiS 630-0"
Monitor "Generic LCD"
DefaultDepth 16
SubSection "Display"
Depth 16
Virtual 2304 1024
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Virtual 2304 1024
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "SiS 630-1"
Monitor "Generic LCD"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen2"
Device "SiS 630-2"
Monitor "Generic VGA"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Merged"
Screen "Screen0"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "USB Mouse"
EndSection
Section "ServerLayout"
Identifier "Multi"
Screen "Screen1"
Screen "Screen2" LeftOf "Screen1"
Option "Xinerama" "on"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "USB Mouse"
EndSection
Section "ServerLayout"
Identifier "Clone"
Screen "Screen1"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "USB Mouse"
EndSection
Section "DRI"
Mode 0666
EndSection
An dieser Stelle noch ein abschließendes, großes Dankeschön an Thomas Winischhofer, der mir beim Update und anschließendem Klären der letzten Feinheiten mit hilfreichem Rat zur Seite stand. Witziges Detail am Rande: Erst dadurch, dass er auf meine Seite aufmerksam wurde, kam überhaupt der Stein ins Rollen...
Group "video" eintragen
und sicher stellen, dass man selbst in der Gruppe video
ist.rm -rf /dev/drm ausführen.rpm --rebuild
pango*.src.rpm). Das schlägt aber fehl, weil zum Bauen von
Xft eine Datei benötigt wird, die es in XFree 4.3 nicht mehr gibt.
Für hilfreiche Ratschläge bin ich dankbar!12. Oktober 2003 |