Exxtreme
2004-02-28, 00:20:49
Da es anscheinend immer noch Probleme gibt beim Installieren einer dieser Komponenten, mache ich ein kleines HowTo, mit dem es bei mir funktioniert hat. :)
Der Kernel
Zuerst werden die Kernel-Sourcen gebraucht. Diese kann man sich bei [1] ziehen oder die entspr. Kernelpatches, die die Sourcen auf eine neue Version updaten. Diese Sourcen sollte man am besten ins Verzeichnis /usr/src/linux-x.x.xx entpacken, z.B. /usr/src/linux-2.6.3. Dann sollte man den Sym-Link /usr/src/linux auf die neuen Sourcen "umbiegen". Das macht man mittels:
rm /usr/src/linux
ln -s /usr/src/linux-2.6.3 /usr/src/linux
Zusätzlich braucht man neue Modutils da sich vieles beim Kernel 2.6.x geändert hat. Die fertigen SRC-RPMs kriegt man bei [2]. Diese Datei heisst "modutils-2.4.25-xx.src.rpm" wobei das "xx" für den jeweiligen Patchlevel steht und sich auch ändern kann. Um die neuen Modutils zu bauen wird man eine Komponente namens "dietlibc" benötigen da ansonsten der Kompiliervorgang nicht durchläuft. Diese Komponente müsste aber bei SuSE 8.2 dabei sein, sodaß man diese einfach per Yast2 nachinstallieren kann. Hat man alles beisammen, kann man die Modutils bauen per:
rpm --rebuild modutils-2.4.25-xx.src.rpm
Wenn das durchgelaufen ist, dann muss man die bestehenden Modutils aktualisieren mittels:
rpm -Uhv /usr/src/packages/RPMS/i386/modutils-2.4.25-xx.i386.rpm
____________________________________________________________________
Anmerkung
Bei SuSE 9 oder einer anderen Distri, die "Kernel 2.6.x-ready" ist, dürften diese neuen Modutils bereits installiert sein.
____________________________________________________________________
Wenn das abgeschlossen ist, wechselt man in das Kernel-Source-Verzeichnis:
cd /usr/src/linux-2.6.x
und konfiguriert das make-File für den Compiler mittels:
make xconfig
oder
make menuconfig.
Hier ist es sehr empfehlenswert das Configfile des alten Kernels zu nehmen. Dieses befindet sich im /boot-Verzeichnis und heisst vmlinuz.config. Um dieses zu nutzen muss man es im Menüpunkt "Load an Alternate Configuration File" vorher laden. Dann kann man darauf aufbauend eine eigene .config-Datei erzeugen. Man muss 2 Punkte beachten. 1.) Es ist wichtig, daß der Kernel ein Feature namens "Module Unloading" unterstützt. Dieses findet man unter dem Punkt "Loadable Module Support". 2.) Es kann sein, daß sich die kernel-eigenen DRI-Treiber mit den ATi-Treibern in die Quere kommen. Wenn man die ATi-Treiber nutzen will dann sollte man den DRI-Support deaktivieren. Diesen findet man unter Device Drivers -> Character devices -> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support). Und wenn man einen Nforce2-Chipsatz hat oder einen anderen, für den der ATi-eigene Treiber keinen AGPGART-Treiber hat, dann kann man diesen AGPGART-Treiber zusammen mit dem Kernel laden. Man findet die Punkte unter Device Drivers -> Character devices. Hier den passenden auswählen. Man hat jetzt die Wahl ob man den AGPGART-Treiber als Modul lädt oder direkt in den Kernel integriert. Ich habe mich für die zweite Methode entschieden. Macht IMHO weniger Stress nachher. Wer es trotzdem als Modul haben will, der muss aber dafür sorgen, daß dieses VOR dem ATi-Treiber geladen wird. Wenn man den Kernel konfiguriert hat, dann beendet man das Programm und bestätigt die Frage ob die Konfiguration gespeichert werden soll.
____________________________________________________________________
Netter Gag am Rande
Man kann einen eigenen Kernelnamen vergeben will dann öffnet man die Datei "Makefile" mit einem Texteditor. Dort gibt es die Einträge Version, Patchlevel, Sublevel und Extraversion. Die ersten drei Einträge würde ich so lassen wie sie sind, den Eintrag Extraversion kann man aber ändern. Mein Kernel meldet sich offiziell als "2.6.3-Exx-1". X-D
____________________________________________________________________
Sodele, jetzt geht's ans Angemachte ... nämlich die Compilierung. Diese führt man durch mittels der allseits bekannten Anweisungen:
make clean
make bzImage
make modules
make modules_install
Sollten diese Schritte ohne Probleme durchlaufen dann findet man das gute Stück unter /usr/src/linux-2.6.x/arch/i386/boot. Das Teil heisst "bzImage". An benennt diese Datei jetzt am besten um in z.B. "bzImage-2.6.x" und kopiert diese in das /boot-Verzeichnis. Dann sollte man die /usr/src/linux-2.6.x/System.map nicht vergessen. Am besten auch in System.map-2.6.x umbenennen und nach /boot verfrachten. Jetzt sollte man die Datei /etc/modules konvertieren. Der Kernel 2.6.x verwendet jetzt eine neue Datei namens /etc/modprobe.conf. Das führt man durch mittels:
generate-modprobe.conf /etc/modprobe.conf
Diese Anweisung entnimmt aus der alten /etc/modules-Datei die nötigen Informationen und erzeugt die neue /etc/modprobe.conf-Datei. Wenn das fertig ist, muss man noch sicherstellen, daß der Bootlader den neuen Kernel kennt. Das kann man mit Hilfe von Yast2 einstellen. Danach wird der erste Start fällig ...
Die ATi-Treiber
Diese gibt es bei [3] zum DL. Man installiert diese mittels:
rpm -UhV fglrx-glc22-4.3.0-x.x.x.i586.rpm
____________________________________________________________________
Wichtig für AMD-Nutzer!
Hier wird man mit hoher Wahrscheinlichkeit den berühmt-berüchtigten "AMD-Patch" brauchen. Doch anstatt diesen im I-Net zu suchen und mittels des Patch-Kommandos die Treiber zu patchen, kann man sich mit einem Texteditor behelfen. Einfach die Datei "/lib/modules/fglrx/build_mod/firegl_public.c" öffnen, zur Zeile 3123 springen und die Zeile:
#if ( (PAGE_ATTR_FIX == 1) || (LINUX_VERSION_CODE == KERNEL_VERSION(2,4,19)) )
durch:
#if ( (PAGE_ATTR_FIX == 1) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19)) )ersetzen.
____________________________________________________________________
Jetzt wechselt man in das Treiber-Verzeichnis und kompiliert das FireGL-Kernel-Modul:
cd /lib/modules/fglrx/build_mod
./make.sh
Wenn dieses kompiliert wurde dann muss es noch installiert werden:
cd /lib/modules/fglrx
./make_install.sh
Wenn keine Fehlermeldungen kommen, kann man sich an die Konfiguration des Treiber ranmachen. Vorher die Datei /etc/X11/XF86Config-4 wegsichern und dann in den Init-Level 3 wechseln mittels:
init 3
Hier wird der X-Server beendet und man muss sich als root anmelden. Dann gibt man:
fglrxconfig
ein.
Da werden jetzt einige Fragen bezüglich Auflösung, Monitorfrequenz etc. abgefragt. Wichtig wäre hier der Punkt ob man den internen oder externen AGPGART-Treiber nutzen will. Nforce2-Besitzer müssen hier den externen nehmen da die ATi-Treiber keinen eigenen mitbringen. Wenn das durchgelaufen ist, muss man die neue /etc/X11/XF86Config-4 erstellen lassen. Jetzt installiert man das Kernelmodul fglrx mittels:
insmod fglrx
Wenn das ohne Probleme läuft, dann kann man versuchen den X-Server zu starten und wieder in den Initlevel 5 wechseln:
init 5
Und wenn man alles richtig eingestellt hat, dann startet dieser und man hat auch echte 3D-Beschleunigung.
Glxgears läuft bei mir mit ca. 4.000 fps und Tuxracer läuft auch flüssig. :)
Have fun.
[1] Kernel-Sourcen: http://www.kernel.org/mirrors
[2] Modutils: ftp://ftp.gwdg.de/linux/suse/ftp.suse.com/suse/i386/9.0/suse/src/
[3] ATi-Treiber: http://www.ati.com/support/driver.html
Der Kernel
Zuerst werden die Kernel-Sourcen gebraucht. Diese kann man sich bei [1] ziehen oder die entspr. Kernelpatches, die die Sourcen auf eine neue Version updaten. Diese Sourcen sollte man am besten ins Verzeichnis /usr/src/linux-x.x.xx entpacken, z.B. /usr/src/linux-2.6.3. Dann sollte man den Sym-Link /usr/src/linux auf die neuen Sourcen "umbiegen". Das macht man mittels:
rm /usr/src/linux
ln -s /usr/src/linux-2.6.3 /usr/src/linux
Zusätzlich braucht man neue Modutils da sich vieles beim Kernel 2.6.x geändert hat. Die fertigen SRC-RPMs kriegt man bei [2]. Diese Datei heisst "modutils-2.4.25-xx.src.rpm" wobei das "xx" für den jeweiligen Patchlevel steht und sich auch ändern kann. Um die neuen Modutils zu bauen wird man eine Komponente namens "dietlibc" benötigen da ansonsten der Kompiliervorgang nicht durchläuft. Diese Komponente müsste aber bei SuSE 8.2 dabei sein, sodaß man diese einfach per Yast2 nachinstallieren kann. Hat man alles beisammen, kann man die Modutils bauen per:
rpm --rebuild modutils-2.4.25-xx.src.rpm
Wenn das durchgelaufen ist, dann muss man die bestehenden Modutils aktualisieren mittels:
rpm -Uhv /usr/src/packages/RPMS/i386/modutils-2.4.25-xx.i386.rpm
____________________________________________________________________
Anmerkung
Bei SuSE 9 oder einer anderen Distri, die "Kernel 2.6.x-ready" ist, dürften diese neuen Modutils bereits installiert sein.
____________________________________________________________________
Wenn das abgeschlossen ist, wechselt man in das Kernel-Source-Verzeichnis:
cd /usr/src/linux-2.6.x
und konfiguriert das make-File für den Compiler mittels:
make xconfig
oder
make menuconfig.
Hier ist es sehr empfehlenswert das Configfile des alten Kernels zu nehmen. Dieses befindet sich im /boot-Verzeichnis und heisst vmlinuz.config. Um dieses zu nutzen muss man es im Menüpunkt "Load an Alternate Configuration File" vorher laden. Dann kann man darauf aufbauend eine eigene .config-Datei erzeugen. Man muss 2 Punkte beachten. 1.) Es ist wichtig, daß der Kernel ein Feature namens "Module Unloading" unterstützt. Dieses findet man unter dem Punkt "Loadable Module Support". 2.) Es kann sein, daß sich die kernel-eigenen DRI-Treiber mit den ATi-Treibern in die Quere kommen. Wenn man die ATi-Treiber nutzen will dann sollte man den DRI-Support deaktivieren. Diesen findet man unter Device Drivers -> Character devices -> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support). Und wenn man einen Nforce2-Chipsatz hat oder einen anderen, für den der ATi-eigene Treiber keinen AGPGART-Treiber hat, dann kann man diesen AGPGART-Treiber zusammen mit dem Kernel laden. Man findet die Punkte unter Device Drivers -> Character devices. Hier den passenden auswählen. Man hat jetzt die Wahl ob man den AGPGART-Treiber als Modul lädt oder direkt in den Kernel integriert. Ich habe mich für die zweite Methode entschieden. Macht IMHO weniger Stress nachher. Wer es trotzdem als Modul haben will, der muss aber dafür sorgen, daß dieses VOR dem ATi-Treiber geladen wird. Wenn man den Kernel konfiguriert hat, dann beendet man das Programm und bestätigt die Frage ob die Konfiguration gespeichert werden soll.
____________________________________________________________________
Netter Gag am Rande
Man kann einen eigenen Kernelnamen vergeben will dann öffnet man die Datei "Makefile" mit einem Texteditor. Dort gibt es die Einträge Version, Patchlevel, Sublevel und Extraversion. Die ersten drei Einträge würde ich so lassen wie sie sind, den Eintrag Extraversion kann man aber ändern. Mein Kernel meldet sich offiziell als "2.6.3-Exx-1". X-D
____________________________________________________________________
Sodele, jetzt geht's ans Angemachte ... nämlich die Compilierung. Diese führt man durch mittels der allseits bekannten Anweisungen:
make clean
make bzImage
make modules
make modules_install
Sollten diese Schritte ohne Probleme durchlaufen dann findet man das gute Stück unter /usr/src/linux-2.6.x/arch/i386/boot. Das Teil heisst "bzImage". An benennt diese Datei jetzt am besten um in z.B. "bzImage-2.6.x" und kopiert diese in das /boot-Verzeichnis. Dann sollte man die /usr/src/linux-2.6.x/System.map nicht vergessen. Am besten auch in System.map-2.6.x umbenennen und nach /boot verfrachten. Jetzt sollte man die Datei /etc/modules konvertieren. Der Kernel 2.6.x verwendet jetzt eine neue Datei namens /etc/modprobe.conf. Das führt man durch mittels:
generate-modprobe.conf /etc/modprobe.conf
Diese Anweisung entnimmt aus der alten /etc/modules-Datei die nötigen Informationen und erzeugt die neue /etc/modprobe.conf-Datei. Wenn das fertig ist, muss man noch sicherstellen, daß der Bootlader den neuen Kernel kennt. Das kann man mit Hilfe von Yast2 einstellen. Danach wird der erste Start fällig ...
Die ATi-Treiber
Diese gibt es bei [3] zum DL. Man installiert diese mittels:
rpm -UhV fglrx-glc22-4.3.0-x.x.x.i586.rpm
____________________________________________________________________
Wichtig für AMD-Nutzer!
Hier wird man mit hoher Wahrscheinlichkeit den berühmt-berüchtigten "AMD-Patch" brauchen. Doch anstatt diesen im I-Net zu suchen und mittels des Patch-Kommandos die Treiber zu patchen, kann man sich mit einem Texteditor behelfen. Einfach die Datei "/lib/modules/fglrx/build_mod/firegl_public.c" öffnen, zur Zeile 3123 springen und die Zeile:
#if ( (PAGE_ATTR_FIX == 1) || (LINUX_VERSION_CODE == KERNEL_VERSION(2,4,19)) )
durch:
#if ( (PAGE_ATTR_FIX == 1) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19)) )ersetzen.
____________________________________________________________________
Jetzt wechselt man in das Treiber-Verzeichnis und kompiliert das FireGL-Kernel-Modul:
cd /lib/modules/fglrx/build_mod
./make.sh
Wenn dieses kompiliert wurde dann muss es noch installiert werden:
cd /lib/modules/fglrx
./make_install.sh
Wenn keine Fehlermeldungen kommen, kann man sich an die Konfiguration des Treiber ranmachen. Vorher die Datei /etc/X11/XF86Config-4 wegsichern und dann in den Init-Level 3 wechseln mittels:
init 3
Hier wird der X-Server beendet und man muss sich als root anmelden. Dann gibt man:
fglrxconfig
ein.
Da werden jetzt einige Fragen bezüglich Auflösung, Monitorfrequenz etc. abgefragt. Wichtig wäre hier der Punkt ob man den internen oder externen AGPGART-Treiber nutzen will. Nforce2-Besitzer müssen hier den externen nehmen da die ATi-Treiber keinen eigenen mitbringen. Wenn das durchgelaufen ist, muss man die neue /etc/X11/XF86Config-4 erstellen lassen. Jetzt installiert man das Kernelmodul fglrx mittels:
insmod fglrx
Wenn das ohne Probleme läuft, dann kann man versuchen den X-Server zu starten und wieder in den Initlevel 5 wechseln:
init 5
Und wenn man alles richtig eingestellt hat, dann startet dieser und man hat auch echte 3D-Beschleunigung.
Glxgears läuft bei mir mit ca. 4.000 fps und Tuxracer läuft auch flüssig. :)
Have fun.
[1] Kernel-Sourcen: http://www.kernel.org/mirrors
[2] Modutils: ftp://ftp.gwdg.de/linux/suse/ftp.suse.com/suse/i386/9.0/suse/src/
[3] ATi-Treiber: http://www.ati.com/support/driver.html