kernel 2.6.19 e ATI Proprietary Driver [Problema e Soluzione
Inviato: ven 1 dic 2006, 0:39
Ciao,
scrivo questo thread in risposta a pino.giaquinto nel thread:
Spiego i problemi che ho avuto nell'installazione dei driver ATI per il kernel 2.6.19 e come li ho risolti.
Io parlo dell'rpm che scarichi dal sito della ATI.
Non so se con l'installer si riesce a capire bene ma per chi ha provato a estrarre tutti i file del pacchetto rpm avrà senza dubbio capito che ci sono due driver, il primo viene compilato ad hoc per la macchina (il driver per il direct rendering fglrx-versione.ko), e un altro invece, quello per X proprietario già compilato per xorg (nel mio caso xorg 6.8 ).
Il problema si ha con il driver che viene compilato ad hoc.
Di solito estraendo i file si ottiene una directory:
in questa directory c'è un file chiamato make.sh che altro non è che uno script per invocare la compilazione del modulo fglrx-versione.ko.
L'esecuzione di questo script con la nuova versione del kernel (2.6.19) non và a buon fine, di solito esce qualcosa tipo:
Perché questo?
Bene, questo accade perchè (dal ChangeLog del kernel) nella nuova versione hanno completamente eliminato l'uso del file config.h nell'albero dei sorgenti, indi per cui quando si cerca di compilare un modulo che include questo file, non viene trovato.
Come si risolve?
Facile, il fie config.h non fa altro che includere il file autoconf.h, quindi per ovviare al problema basta andare nella directory sopra citata:
ed eseguire il piccolo comando:
che non fa altro che sostituire, in tutti i file in cui è presente l'inclusione del file config.h, tale inclusione con quella del file autoconf.h.
Fatto questo il comando make.sh finirà con successo la creazione del modulo fglrx-versione.ko.
Spero che questo piccolo post possa essere utile a tutti quelli che usano il driver proprietario ATI.
Saluti e buon lavoro
Spina
P.S. In realtà il file config.h esegue anche la definizione di una variabile, più precisamente esegue:Ma non sono sicuro che tutto questo vada più fatto ora. Ho scritto a quelli della ATI per segnalare il problema, se la vedranno loro 
scrivo questo thread in risposta a pino.giaquinto nel thread:
Codice: Seleziona tutto
2.6.19...un panic ogni 2 minuti!!!!Io parlo dell'rpm che scarichi dal sito della ATI.
Non so se con l'installer si riesce a capire bene ma per chi ha provato a estrarre tutti i file del pacchetto rpm avrà senza dubbio capito che ci sono due driver, il primo viene compilato ad hoc per la macchina (il driver per il direct rendering fglrx-versione.ko), e un altro invece, quello per X proprietario già compilato per xorg (nel mio caso xorg 6.8 ).
Il problema si ha con il driver che viene compilato ad hoc.
Di solito estraendo i file si ottiene una directory:
Codice: Seleziona tutto
lib/modules/fglrx/build_modL'esecuzione di questo script con la nuova versione del kernel (2.6.19) non và a buon fine, di solito esce qualcosa tipo:
Codice: Seleziona tutto
.....linux/config.h: File not foundBene, questo accade perchè (dal ChangeLog del kernel) nella nuova versione hanno completamente eliminato l'uso del file config.h nell'albero dei sorgenti, indi per cui quando si cerca di compilare un modulo che include questo file, non viene trovato.
Come si risolve?
Facile, il fie config.h non fa altro che includere il file autoconf.h, quindi per ovviare al problema basta andare nella directory sopra citata:
Codice: Seleziona tutto
lib/modules/fglrx/build_modCodice: Seleziona tutto
sed -i '/linux\/config.h/s;linux\/config.h;linux\/autoconf.h;' *.{h,c};Fatto questo il comando make.sh finirà con successo la creazione del modulo fglrx-versione.ko.
Spero che questo piccolo post possa essere utile a tutti quelli che usano il driver proprietario ATI.
Saluti e buon lavoro
Spina
P.S. In realtà il file config.h esegue anche la definizione di una variabile, più precisamente esegue:
Codice: Seleziona tutto
#ifndef _LINUX_CONFIG_H
#define _LINUX_CONFIG_H
/* This file is no longer in use and kept only for backward compatibility.
* autoconf.h is now included via -imacros on the commandline
*/
#include <linux/autoconf.h>
#endif