Scheda grafica ATI RADEON su Slackware 9.1
Indice
Introduzione
In questo piccolo tutorial cercherò di spiegare come installare i drivers ATI radeon su linux slackware 9.1 (naturalmente con il completo supporto per l'accelerazione 3d) per aiutare tutte quelle persone (come me poco tempo fa...:) che stanno ancora cercando il modo x far funzionare questa scheda sulla loro linux box.
Disclamer
Le informazioni e le cose qui riportate derivano da documenti sparsi qua e la nella rete e dall'esperienza personale, possono quindi essere parzialmente errate, incomplete, incoerenti stupide o inutili.. sta a voi trarne qualcosa di buono. Posso solo spiegarvi come ho fatto io, poi si sa, ogni linux box ha il suo carattere.. è questo il bello :D
Note riguardo la porta AGP
Come ho potuto notare cercando di installare i drivers, la maggior parte dei problemi derivano da drivers non correttamente funzionanti per la porta AGP, quindi penso che prima di iniziare sia meglio cercare di capire cosa sia e a cosa serva questa interfaccia. AGP (Advanced Graphics Port) è un bus, inventato dalla intel, con accesso alla memoria ram molto più veloce rispetto al normale bus pci, e collega direttamente la scheda grafica alla memoria del sistema attraverso un chipset apposito. AGP può avere diverse "modalità" basate sul moltiplicatore rispetto alla velocità del bus pci. C'è da precisare che la porta lavora comunque alla frequenza di 66mhz (rispetto ai 33 della pci), ma i dati sono trasferiti varie volte ogni ciclo di clock. Per esempio un bus AGP 2x trasferisce il doppio dei dati rispetto ogni clock, quello 4x quattro volte di più e così via. I problemi nel nostro caso sono dovuti al fatto che l'agp8x non è supportato dal kernel della serie 2.4 e quindi dobbiamo compilare dei drivers apposta per poter sfruttare al massimo la sua velocità.
Drivers non ufficiali
Penso che i drivers ufficiali dell'ati compiano senza problemi il loro dovere, ma io non li ho mai provati, quindi per il momento se volete seguire questo how-to, vi suggerisco quelli non ufficiali scaricabili gratuitamente da:
http://www.schneider-digital.de/html/download_ati.html
Nel mio caso (una RADEON9500) ho scaricato "glx1_linux_X4.3.zip", se si sta usando una versione diversa di XFREE86 è necessario ovviamente scegliere il pacchetto opportuno. Ricordo che la slackware 9.1 contiene XFREE86 versione 4.3
Settare il kernel slackware
Come ho detto prima, dato che l'agp8x non è supportato dal kernel serie 2.4, dobbiamo prima disabilitare il supporto AGPGART dal nostro kernel per evitare conflitti con quello nuovo che andremo ad installare in seguito. Vediamo come fare passo passo: Per iniziare, i sorgenti del kernel dovrebbero trovarsi in /usr/src/linux-2.4.xx, nella slackware 9.1 è presente di default il 2.4.22. Occorre controllare per prima cosa che in /usr/src vi sia un link simbolico che punta alla dir dei sorgenti del kernel. Se così non fosse, basta un:
# ln -s /usr/src/linux-2.4.22 /usr/src/linux
ora /usr/src/linux punterà a /usr/src/linux-2.4.22. A questo punto assicuriamoci che il supporto per l'agp non sia compilato nel nostro kernel:
# cd /usr/src/linux # make menuconfig
Nella sezione "CHARACTER DEVICES", assicurarsi che "/dev/agpgart (AGP SUPPORT)" sia disabilitata. Se così non fosse occorre ricompilare il kernel, apportando la modifica. (non è nello scopo di questo how-to spiegare come si ricompila il kenel, se non si è in grado di farlo, continuare la lettura dopo aver consultato relative documentazioni.)
Compilare i drivers
Ora che la nostra slackware è pronta, possiamo iniziare ad installare i drivers, prima di tutto occorre unzippare il pacchetto che abbiamo scaricato in una dir temporanea:
# unzip glx1_linux_x4.3.zip # cd X4.3.0-3.2.8
A questo punto dobbiamo convertire il pacchetto rpm contentente i drivers in un pacchetto standard slackware tgz, per fare ciò ci viene in aiuto un potente tool (rpm2tgz) che compie il suo lavoro fin troppo bene :) vediamo come:
# rpm2tgz fireglrx-4.3.0_3.2.8-6.i586.rpm [ NON CERCARE DI INSTALLARE DIRETTAMENTE IL PACCHETTO RPM, OCCORRE CONVERTIRLO PRIMA IN TGZ!! ]
A questo punto dovremmo avere nella nostra dir un file chiamato fireglrx-4.3.0_3.2.8-6.i586.tgz, installabile con un semplice:
# installpkg fireglrx-4.3.0_3.2.8-6.i586.tgz
La prima parte del nostro lavoro è compiuta! ora non ci resta che compilare. Per fare ciò andiamo nella directory dove sono stati installati i sorgenti:
# cd /lib/modules/fglrx/build_mod
E runniamo lo script di compilazione:
# ./make.sh
Se tutto, come dovrebbe, è andato bene, torniamo indietro su /lib/modules/fglrx/:
# cd ..
E installiamo definitivamente il modulo appena compilato:
# ./make_install.sh
BENE! ora abbuamo fglrx.o (il nostro driver) installato e pronto all'uso, ma non abbiamo ancora finito..
Configurare X
Ora dobbiamo settare il config di XFREE86 (XF86Config-4) per dire a X di caricare fglrx come display driver e attivare i moduli glx e dri. Per fare questo possiamo servirci di uno script chiamato fglrxconfig che ci aiuta nel nostro compito:
# fglrxconfig
Dopo aver eseguito e seguito le indicazioni proposte, siamo pronti per far partire X con il nostro nuovo driver e con l'accelerazione attivata. Prima di tutto dobbiamo caricare il modulo:
# insmod /lib/modules/fglrx/fglrx.o
Tutto dovrebbe essere andato bene, se così non fosse è possibile un more /var/log/syslog per vedere gli eventuali errori riportati. A questo punto si può startare X:
# xinit
Test del modulo
Se X sta funzionando, probabilmente le cose sono andate bene e fglrx sta facendo il suo dovere, è comunque buona idea fare un paio di tests per vedere se effettivamente tutto gira come dovrebbe. Intanto vediamo cosa rileva fglrx:
# fglrxinfo
Sulla mia linux box, ritorna una cosa del genere:
genesis@psy:/etc/rc.d$ fglrxinfo display: :0.0 screen: 0 OpenGL vendor string: ATI Technologies Inc. OpenGL renderer string: Radeon 9500 (AIB) Athlon (3DNow!) OpenGL version string: 1.3 (X4.3.0-3.2.8)
Possiamo inoltre testare le performance dell'opengl con:
# glxgears
Dovrebbe dare come output un FPS medio attorno ai 1900-200 su una radeon9500. Se ritorna cose tipo 100-200, probabilmente l'accelerazione 3d non è attivata. Sarebbe bene provare a riconfigurare XF86Config-4 con lo script di prima e provare a risolvere il problema. Controllare in ogni caso che sul suddetto file di configurazone sia presente
Load "dri" Load "glx"
In ogni caso ricordarsi che in /var/log si possono avere molte informazioni su eventuali errori.
Note su schede madri basate sul chipset VIAKT400
Certe persone (come me :D ) hanno riscontrato problemi con fglrx su schede madri basate sul chipset VIAKT400. Fortunatamente la soluzione (almeno nel mio caso :) sembra essere abbastanza semplice, dato che i problemi sono originati dal codice che rileva il chipset in agpgart_be.c Per risolvere il problema, prima di compilare il modulo (il procedimento è descritto nella sezione 5), occorre apportare qualche modifica ai sorgenti:
# cd /lib/modules/fglrx/build_mod
E quindi con il vostro editor preferito, aprire agpgart_be.c e sostituire:
{ PCI_DEVICE_ID_VIA_8377_0, PCI_VENDOR_ID_VIA, VIA_APOLLO_KT400, "Via", "Apollo KT400", via_generic_setup }
con:
{ PCI_DEVICE_ID_VIA_8377_0, PCI_VENDOR_ID_VIA, VIA_APOLLO_KT400, "Via", "Apollo KT400", via_kt400_setup }
A questo punto tutto dovrebbe funzionare :D
Outro & Credits
Autore: G3N3S1S Questo doc è dedicato a Lorys e a tutto il forum di Slacky.it che mi ha aiutato in molte occasioni...grazie a tutti di cuore!!!
Se vuoi mandarmi una mail per segnalarmi qualche bug o semplicemente per chiedere qualcosa:
G3N3S1S@Softhome.net