Sie sind nicht angemeldet.

1

26.06.2005, 17:58

[gelöst] fglrx: version magic oder ATI-Treiber ohne emerge installieren

Hallo,

momentan habe ich beim Laden des Modules "fglrx" den Fehler:

fglrx: version magic '2.6.11-gentoo-r11 SMP K7 gcc-3.3' should be '2.6.12.1 SMP preempt K7 gcc-3.3'

Ebenso kann ich den ATI-Treiber (von ATI direkt) mittels des Installationsscriptes von ATI nicht fehlerfrei installieren. Vermutlich gleiches Problem.

Ein modprobe fglrx bringt
FATAL: Error inserting fglrx (/lib/modules/2.6.12.1/video/fglrx.ko): Invalid module format

Im gleichen Moment meldet /var/log/messages
fglrx: version magic '2.6.11-gentoo-r11 SMP K7 gcc-3.3' should be '2.6.12.1 SMP preempt K7 gcc-3.3'

Nun meine Fragen.

- Wie kann ich das version magic - Problem loesen?
- Wie und wo wird "2.6.11-gentoo-r11 SMP K7 gcc-3.3" bzw. "2.6.12.1 SMP preempt K7 gcc-3.3" gebildet?
- Wie kann ich meinem Gentoo den zu verwendenden Namen/String "2.6.12.1 SMP preempt K7 gcc-3.3" mitteilen?

mfg quiptime

PS.
Der installierte Kernel 2.6.12.1 ist ein Vanilla von kernel.org und nicht mit emerge installiert.
Bitte,
kein "mal hier im Forum oder bei google suchen".

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »quiptime« (27.06.2005, 21:43)


2

27.06.2005, 16:36

RE: version magic

Ich habe den Kernel 2.6.12.1 nochmal mit vorherigem mrproper kompiliert.
Keine Aenderung. Nach wie vor der oben beschriebene Zustand.

Gruss quiptime

3

27.06.2005, 17:30

Diese Fehlermeldung tritt auf, wenn versucht wird ein Modul zu laden, welches für eine andere Kernelversion kompiliert wurde.
In Deinem Fall wurde fglrx für einen 2.6.11er Kernel übersetzt und passt somit nicht zu dem von Dir verwendeten 2.6.12er.

Also müsstest Du das Paket, aus welchem fglrx stammt noch mal neu emergen, damit das Modul mit den aktuellen Kernel-Headern neu übersetzt wird.

Oder Du benutzt einen 2.6.11er Kernel.
__
Rud

4

27.06.2005, 21:32

geloest

Nun habe ich das Problem allein loesen koennen.

Es vielen mehrere Dinge zusammen und das fuehrte zum im Eroeffnungsthread geschilderten Problem.

1. Das in meinem Moduleordner liegende Modul war wirklich mit dem 2.6.11-er kompiliert. Ich habe es wohl bei meinen Versuchen, die ATI-Karte unter dem 2.6.12.1-er Kernel zum laufen zu kriegen, aus dem Moduleordner des 2.6.11-er teesthalber rueberkopiert und vergessen es wieder zu loeschen.

2 Der originale ATI-Treiber als Installer, ati-driver-installer-8.14.13.run, ist buggy und kann in der vorliegenden Version so nicht funktionieren. Dazu spaeter.

Da das Kompilieren des neuen fglrx-Modules zunaechst fehlgeschlagen ist, wurde das im 2.6.12.1-er Moduleorder liegende "falsche" fglrx-Modul nicht ueberschrieben. Also war die Fehlermeldung beim Laden von fglrx,
fglrx: version magic '2.6.11-gentoo-r11 SMP K7 gcc-3.3' should be '2.6.12.1 SMP preempt K7 gcc-3.3',
richtig. Das System hat korrekt reagiert.

3. Ich habe mich also auf die Suche des Fehlers im Installer des ATI-Treibers 8.14.13 begeben und Folgendes herausgefunden:

Zunachst erst mal die Fehlermeldung aus dem Logfile nach dem Ausfuehren von ati-driver-installer-8.14.13.run,

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[Message] Kernel Module : Trying to install a precompiled kernel module.
[Message] Kernel Module : Precompiled kernel module version mismatched.
[Message] Kernel Module : Found kernel module build environment, generating kernel module now.
ATI module generator V 2.0
==========================
initializing...
cleaning...
patching 'highmem.h'...
assuming new VMA API since we do have kernel 2.6.x...
doing Makefile based build for kernel 2.6.x and higher
make -C /lib/modules/2.6.12.1/build SUBDIRS=/lib/modules/fglrx/build_mod/2.6.x modules
make[1]: Entering directory `/usr/src/linux-2.6.12.1'
  CC [M]  /lib/modules/fglrx/build_mod/2.6.x/agp3.o
  CC [M]  /lib/modules/fglrx/build_mod/2.6.x/nvidia-agp.o
  CC [M]  /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.o
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c: In function `agp_find_supported_device':
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7136: error: structure has no member named `slot_name'
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7156: error: structure has no member named `slot_name'
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7161: error: structure has no member named `slot_name'
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7187: error: structure has no member named `slot_name'
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7207: error: structure has no member named `slot_name'
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7227: error: structure has no member named `slot_name'
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7232: error: structure has no member named `slot_name'
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c: In function `__fgl_agp_init':
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7613: warning: `pm_register' is deprecated (declared at include/linux/pm.h:106)
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c: In function `__fgl_agp_cleanup':
/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7623: warning: `pm_unregister_all' is deprecated (declared at include/linux/pm.h:116)
make[2]: *** [/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.o] Error 1
make[1]: *** [_module_/lib/modules/fglrx/build_mod/2.6.x] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.12.1'
make: *** [kmod_build] Error 2
build failed with return value 2
[Error] Kernel Module : Failed to compile kernel module - please consult readme.


Als erstes habe ich den Fehler mit "slot_name" beseitigt. Dazu folgendes durchfuehren.

In der Datei /lib/modules/fglrx/build_mod/agpgart_be.c habe ich ALLE Vorkommen von slot_name mit " " ersetzt (also " " hinschreiben).

Beispiel einer Ersetzung, in Zeile 7070

Quellcode

1
                         "chipset at %s\n", " ");

Wuerde man Jetzt die Treiber erneut installieren wurde man einen neuen Fehler erhalten. Auf diesen gehe ich nicht mit Code ein sondern beschreibe unter als zweites die Beseitigung dieses neuen Fehlers.

Als Zweites in der Datei /lib/modules/fglrx/build_mod/firegl_public.c kommt "inter_module_get" genau 3 x vor.

Diese 3 "inter_module_get" habe ich folgendermassen ersetzt.
Das erste Vorkommen mit inter_module_get_request(x,y)
Das zweite Vorkommen mit inter_module_get_request("drm","drm")
Das dritte Vorkommen mit inter_module_get_request("drm_agp","drm_agp")

Beispiel fuer die Ersetzung in der Zeile des ersten Vorkommens:

Quellcode

1
#define inter_module_get_request(x,y)       firegl_stub_pointer


Das sind die Fehlerkorrekturen. Nun kommt aber das Wichtigste. Um die ATI-Treiber zu installieren nun (nach den Fehlerkorrekturen) NICHT erneut das Script "ati-driver-installer-8.14.13.run" benutzen! Es geht auch anders und zwar so.

Quellcode

1
2
cd /lib/modules/fglrx
./make.sh

Das make.sh wird nun immer noch einige Warnungen zeigen. Am Ende sollte Folgendes stehen:

Quellcode

1
2
3
4
5
6
7
8
make[1]: Leaving directory `/usr/src/linux-2.6.12.1'
build succeeded with return value 0
duplicating results into driver repository...
done.
==============================
You must change your working directory to /lib/modules/fglrx
and then call ./make_install.sh in order to install the built module.
==============================

Nun noch

Quellcode

1
2
cd /lib/modules/fglrx
./make_install.sh

Das make_install.sh sollte Folgendes ergeben

Quellcode

1
2
3
4
- creating symlink
- recreating module dependency list
- trying a sample load of the kernel module
done.

und dmesg sollte folgende Angaben enthalten:

Quellcode

1
2
[fglrx] module loaded - fglrx 8.14.13 [Jun  8 2005] on minor 0
[fglrx] module unloaded - fglrx 8.14.13 [Jun  8 2005] on minor 0

Ein nun durchgefuehrtes modprobe fglrx erfolgt ohne Error und dmesg zeigt dazu

Quellcode

1
[fglrx] module loaded - fglrx 8.14.13 [Jun  8 2005] on minor 0


Fazit

Der von ATI angebotene Treiber in der Version 8.14.13 ist nicht der erste fuer diese Karten. Eigentlich koennte man annehmen, dass er in der x-ten Version endlich fehlerfrei ist. Schwache Leistung von ATI !

Eventuell hilft mein Thread Jemandem, seine ATI-Karte zum Laufen zu bekommen. Feedback willkommen.

Gruss quiptime

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »quiptime« (28.06.2005, 01:03)


5

27.06.2005, 21:34

Noch ein paar Hinweise.

Diese sind aber sicherlich verstreut im Einzelnen hier im Forum schon genannt worden und erheben an dieser Stelle auch keinen Anspruch auf Vollstaendigkeit.

Ich habe meine Graka unter xorg 6.8.2 am laufen.

1. Nach dem die ATI-Treiber erfolgreich installiert sind muss fglrxconfig ausgefuehrt werden um die Grafikkarte zu konfigurieren.

2. Wer einen schwarzen Bildschirm und eine volle Logdatei beim booten verhindern will (selbst erlebt) sollte in der xorg.conf bei der Konfiguration in Section "Device" das interne AGP aktivieren.

Quellcode

1
Option "UseInternalAGPGART"         "yes"
Das wird bei der Durchfuehrung von fglrxconfig als Frage formuliert. Wer sich hinterher nicht sicher ist ob der richtigen Antwort zu dieser Frage kann auch nachtraeglich die xorg.conf manuell entsprechend bearbeiten.

3. Einige andere wichtige Dinge wie DRM sind hier im Forum ausfuehrlich beschrieben.

4. Als Letztes noch den XServer oder den Rechner neu starten.


Wie stelle ich nun fest, ob das System mit der ATI-Grafikkarte und den dazugehoerigen Treibern laeuft?

Dazu in der Shell fglrxinfo eingeben.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »quiptime« (28.06.2005, 01:30)