Slackware: ATI SlackBuild (ITA): Difference between revisions
(Inserite le patch di Slacky.eu e fatte alcune correzioni) |
|||
Line 1: | Line 1: | ||
<!-- Per http://wiki.cchtml.com --> | <!-- Per http://wiki.cchtml.com --> | ||
=Introduzione= | = Introduzione = | ||
Questo wiki spiega come installare i driver propritari ATI con la distribuzione linux Slackware, creando, grazie ad uno SlackBuild, dei | Questo wiki spiega come installare i driver propritari ATI con la distribuzione linux Slackware, creando, grazie ad uno SlackBuild, dei | ||
pacchetti che possono essere installati tramite il comando '''installpkg'''. | pacchetti che possono essere installati tramite il comando '''installpkg'''. | ||
Line 9: | Line 9: | ||
più elevate la potete trovare [http://www.slacky.eu/wikislack/index.php?title=Installazione_driver_ATI_su_Slackware_GNU/Linux qui]). | più elevate la potete trovare [http://www.slacky.eu/wikislack/index.php?title=Installazione_driver_ATI_su_Slackware_GNU/Linux qui]). | ||
Tutti i comandi che iniziano con un '#' devono essere eseguiti con i diritti dell'utente root, mentre quello che iniziano con '$' possono | Tutti i comandi che iniziano con un '#>' devono essere eseguiti con i diritti dell'utente root, mentre quello che iniziano con '$>' possono | ||
essere eseguiti anche da un utente senza tali diritti. | essere eseguiti anche da un utente senza tali diritti. | ||
=ATI Proprietary Driver e ATI Catalyst= | = ATI Proprietary Driver e ATI Catalyst = | ||
A partire dal 21 Novembre 2007 i driver ATI hanno cambiato nome e numero di versione. I nuovi driver, che prima venivano | A partire dal 21 Novembre 2007 i driver ATI hanno cambiato nome e numero di versione. I nuovi driver, che prima venivano | ||
indicati solo come '''ATI Proprietary Driver''', ora si chiamano '''ATI Catalyst'''. Non solo, il numero di versione | indicati solo come '''ATI Proprietary Driver''', ora si chiamano '''ATI Catalyst'''. Non solo, il numero di versione | ||
Line 21: | Line 21: | ||
anche se, ad esempio, hanno come numero di release 7.11. | anche se, ad esempio, hanno come numero di release 7.11. | ||
=Come ottenere tutto il software necessario= | = Come ottenere tutto il software necessario = | ||
I driver proprietari ATI possono essere scaricati dal sito ufficiale: http://ati.amd.com/support/driver.html, dopo aver selezionato il | I driver proprietari ATI possono essere scaricati dal sito ufficiale: http://ati.amd.com/support/driver.html, dopo aver selezionato il | ||
sistema operativo Linux x86 (o Linux x86_64) e selezionato la propria scheda video, premendo il tasto "go" si arriva direttamente alla | sistema operativo Linux x86 (o Linux x86_64) e selezionato la propria scheda video, premendo il tasto "go" si arriva direttamente alla | ||
Line 30: | Line 30: | ||
'''NOTA:''' I driver per le architetture x86 e x86_64 sono equivalenti. L'installer infatti contiene i file per entrambe | '''NOTA:''' I driver per le architetture x86 e x86_64 sono equivalenti. L'installer infatti contiene i file per entrambe | ||
le architetture, sarà poi il processo di compilazione e creazione dei pacchetti che sceglierà i file adeguati. | le architetture, sarà poi il processo di compilazione e creazione dei pacchetti che sceglierà i file adeguati. | ||
Questo vuol dire che lo SlackBuild andrà bene sia per la Slackware sia per le varie versioni porting a 64 bit | Questo vuol dire che lo SlackBuild andrà bene sia per la Slackware sia la Slackware64, sia per le varie versioni porting a 64 bit | ||
(Slamd64, Bluewhite64, etc...). | (Slamd64, Bluewhite64, etc...). | ||
=Nota IMPORTANTE= | = Nota IMPORTANTE = | ||
Se la versione dei driver che si è scaricata è minore della 8.37.6 allora dovete sapere fin d'ora che non funzioneranno con | Se la versione dei driver che si è scaricata è minore della 8.37.6 allora dovete sapere fin d'ora che non funzioneranno con | ||
il server X.Org 7.2 (o 1.3) o successivi. | il server X.Org 7.2 (o 1.3) o successivi. | ||
=Come creare i pacchetti per la Slackware= | = Come creare i pacchetti per la Slackware = | ||
La creazione dei pacchetti segue due strade differenti a seconda che si usino i driver ufficiali '''versione < 8.37.6''' oppure | La creazione dei pacchetti segue due strade differenti a seconda che si usino i driver ufficiali '''versione < 8.37.6''' oppure | ||
'''versione >= 8.37.6 o nuovi ATI Catalyst'''. | '''versione >= 8.37.6 o nuovi ATI Catalyst'''. | ||
Line 46: | Line 46: | ||
scaricato dal sito della ATI. | scaricato dal sito della ATI. | ||
'''NOTA:''' L'uso dello ''SlackBuild esterno'' | '''NOTA:''' L'uso dello '''SlackBuild esterno''' è limitato alla versione dei '''driver < 8.37.6''' visto che dalla '''8.11''' si possono passare delle patch a quello interno. | ||
== Versione dei driver < 8.37.6 (SlackBuild esterno) == | |||
Per questi tipi di driver ho creato uno '''SlackBuild esterno''' per la Slackware di cui ho fatto [http://www.slacky.eu/~spina/fglrx/ati-slack-packager-1.1.9-noarch-1.tgz questo pacchetto]. | |||
Per creare i pacchetti Slackware basta eseguire: | |||
Per | #> installpkg ati-slack-packager-current-noarch-1.tgz | ||
#> sh installer.run --buildpkg custom-package/Slackware | |||
== Versione dei driver >= 8.37.6 o nuovi ATI Catalyst (SlackBuild interno) == | |||
==Versione dei driver >= 8.37.6 o nuovi ATI Catalyst (SlackBuild interno)== | |||
Per questi driver lo SlackBuild l'ho inviato direttamente alla ATI che ha provveduto ad inserirlo all'interno dell'installer, quindi basta | Per questi driver lo SlackBuild l'ho inviato direttamente alla ATI che ha provveduto ad inserirlo all'interno dell'installer, quindi basta | ||
eseguire: | eseguire: | ||
#> sh installer.run --buildpkg Slackware/All | |||
# sh installer.run --buildpkg Slackware/All | |||
o, se i driver sono abbastanza recenti (non ricordo la versione esatta), basta un semplice: | o, se i driver sono abbastanza recenti (non ricordo la versione esatta), basta un semplice: | ||
# sh installer.run --buildpkg | #> sh installer.run --buildpkg | ||
Oppure, per creare ed installare direttamente i pacchetti, si può usare (sempre con versioni recenti dei driver): | Oppure, per creare ed installare direttamente i pacchetti, si può usare (sempre con versioni recenti dei driver): | ||
# sh intaller.run --buildandinstallpkg | #> sh intaller.run --buildandinstallpkg | ||
=Cosa contengono i pacchetti creati?= | = Cosa contengono i pacchetti creati? = | ||
I due pacchetti creati dallo SlackBuild, che chiameremo ''fglrx-module'' e ''fglrx-x'', contengono, rispettivamente, il modulo per il | I due pacchetti creati dallo SlackBuild, che chiameremo ''fglrx-module'' e ''fglrx-x'', contengono, rispettivamente, il modulo per il | ||
kernel attualmente installato sul sistema, e i driver per la versione del server X.Org installata. | kernel attualmente installato sul sistema, e i driver per la versione del server X.Org installata. | ||
In questo modo, se si aggiorna il kernel oppure il server X.Org si può creare solo il relativo pacchetto. | In questo modo, se si aggiorna il kernel oppure il server X.Org si può creare solo il relativo pacchetto. | ||
==Creare solo il pacchetto fglrx-module== | == Creare solo il pacchetto fglrx-module == | ||
Per creare solo il pacchetto contenente il modulo per il kernel attualmente installato, basta lanciare l'installer con l'opzione | Per creare solo il pacchetto contenente il modulo per il kernel attualmente installato, basta lanciare l'installer con l'opzione | ||
''Only_Module '' | ''Only_Module ''. | ||
Quindi con lo '''SlackBuild esterno''': | Quindi, con lo '''SlackBuild esterno''': | ||
# sh installer.run --buildpkg custom-package/Only_Module | #> sh installer.run --buildpkg custom-package/Only_Module | ||
Con lo '''SlackBuild interno''': | Con lo '''SlackBuild interno''': | ||
# sh installer.run --buildpkg Slackware/Only_Module | #> sh installer.run --buildpkg Slackware/Only_Module | ||
==Creare solo il pacchetto fglrx-x== | == Creare solo il pacchetto fglrx-x == | ||
Per creare solo il pacchetto contenente i driver per il server X.Org attualmente installato sul sistema, basta lanciare l'installer con | Per creare solo il pacchetto contenente i driver per il server X.Org attualmente installato sul sistema, basta lanciare l'installer con | ||
l'opzione ''Only_X'' | l'opzione ''Only_X''. | ||
Con lo '''SlackBuild esterno''': | Con lo '''SlackBuild esterno''': | ||
# sh installer.run --buildpkg custom-package/Only_X | #> sh installer.run --buildpkg custom-package/Only_X | ||
Con lo '''SlackBuild interno''': | Con lo '''SlackBuild interno''': | ||
# sh installer.run --buildpkg Slackware/Only_X | #> sh installer.run --buildpkg Slackware/Only_X | ||
=Configurazione minimale del server X.Org= | = Configurazione minimale del server X.Org = | ||
Una volta installati i due pacchetti bisogna segnalare al server X.Org di usare i driver proprietari ATI, per fare questo bisogna | Una volta installati i due pacchetti bisogna segnalare al server X.Org di usare i driver proprietari ATI, per fare questo bisogna | ||
controllare che il file xorg.conf, che generalmente è situato nella directory /etc/X11/, contenga le seguenti voci: | controllare che il file xorg.conf, che generalmente è situato nella directory /etc/X11/, contenga le seguenti voci: | ||
Line 114: | Line 109: | ||
EndSection | EndSection | ||
=Verifica= | = Verifica = | ||
Per verificare se i driver proprietari ATI sono stati correttamente installati si può eseguire il comando: | Per verificare se i driver proprietari ATI sono stati correttamente installati si può eseguire il comando: | ||
$ fglrxinfo | $> fglrxinfo | ||
Sulla mia macchina l'output è: | Sulla mia macchina l'output è: | ||
display: :0.0 screen: 0 | display: :0.0 screen: 0 | ||
Line 123: | Line 118: | ||
OpenGL version string: 2.0.6650 (8.39.4) | OpenGL version string: 2.0.6650 (8.39.4) | ||
=Rimuovere i pacchetti installati= | = Rimuovere i pacchetti installati = | ||
Per rimuovere i pacchetti installati si può tranquillamente usare l'utiliti '''removepkg'''. Ci sono però aspetti che vanno | Per rimuovere i pacchetti installati si può tranquillamente usare l'utiliti '''removepkg'''. Ci sono però aspetti che vanno | ||
considerati: | considerati: | ||
*La rimozione dei pacchetti non elimina i file di configurazione del driver fglrx, questi file sono situati nella directory ''/etc/ati'' | * La rimozione dei pacchetti non elimina i file di configurazione del driver fglrx, questi file sono situati nella directory ''/etc/ati'' | ||
'''NOTA:''' La directory ''/etc/ati/custom-package'' se esiste, contiene lo SlackBuild esterno e quindi non va cancellata. | '''NOTA:''' La directory ''/etc/ati/custom-package'' se esiste, contiene lo '''SlackBuild esterno''' e quindi non va cancellata. | ||
*Il pacchetto ''fglrx-x'' contiene le librerie OpenGL della ATI, e queste librerie sono posizionate nella stessa directory di quelle Mesa, indi per cui quando si installa il pacchetto ''fglrx-x'' vengono sovrascritte le OpenGL Mesa. Per ripristinare la situazione si deve semplicemente reinstallare il pacchetto contenente queste librerie, ovvero il pacchetto: | *Il pacchetto ''fglrx-x'' contiene le librerie OpenGL della ATI, e queste librerie sono posizionate nella stessa directory di quelle Mesa, indi per cui quando si installa il pacchetto ''fglrx-x'' vengono sovrascritte le OpenGL Mesa. Per ripristinare la situazione si deve semplicemente reinstallare il pacchetto contenente queste librerie, ovvero il pacchetto: | ||
::x11 | ::x11 | ||
:si usa la | :si usa la Slackware 11, oppure: | ||
::mesa | ::mesa | ||
:se si usa la | :se si usa la Slackware 12. | ||
=Patchare i driver= | = Patchare i driver = | ||
I driver ATI sono noti per essere sempre in ritardo rispetto all'aggiornamento del kernel linux. Spesso occorre quindi patchare i driver in modo tale che la creazione del modulo per il kernel abbia successo. A partire dagli ATI Catalist > 8.11 abbiamo inserito nello '''SlackBuild interno''' la possibilità di patchare i driver ATI prima che lo SlackBuild stesso esegua la compilazione del modulo per il kernel. | I driver ATI sono noti per essere sempre in ritardo rispetto all'aggiornamento del kernel linux. Spesso occorre quindi patchare i driver in modo tale che la creazione del modulo per il kernel abbia successo. A partire dagli ATI Catalist > 8.11 abbiamo inserito nello '''SlackBuild interno''' la possibilità di patchare i driver ATI prima che lo SlackBuild stesso esegua la compilazione del modulo per il kernel. | ||
Line 144: | Line 139: | ||
ATI_DRIVER_VERSION deve essere uguale al risultato del comando: | ATI_DRIVER_VERSION deve essere uguale al risultato del comando: | ||
$ sh installer.run -i | head -n1 | cut -d'-' -f2 | $> sh installer.run -i | head -n1 | cut -d'-' -f2 | ||
KERNEL_VERSION deve essere uguale al risultato del comando: | KERNEL_VERSION deve essere uguale al risultato del comando: | ||
$ uname -r | $> uname -r | ||
se la directory ''/et/ati/patch'' non esiste, va ovviamente creata. | se la directory ''/et/ati/patch'' non esiste, va ovviamente creata. | ||
Quindi ad esempio, se si il primo dei due comandi da come risultato '''8.56''' e il secondo '''2.6.27.6''', la patch va chiamata: ''/etc/ati/patch/patch-8.56-2.6.27.6'' | Quindi, ad esempio, se si il primo dei due comandi da come risultato '''8.56''' e il secondo '''2.6.27.6''', la patch va chiamata: ''/etc/ati/patch/patch-8.56-2.6.27.6'' | ||
Lo '''SlackBuild interno''' automaticamente noterà la patch, e, se si è in possesso del programma '''patch''', eseguirà: | Lo '''SlackBuild interno''' automaticamente noterà la patch, e, se si è in possesso del programma '''patch''', eseguirà: | ||
# patch -p0 < /etc/ati/patch/patch-8.56-2.6.27.6 | #> patch -p0 < /etc/ati/patch/patch-8.56-2.6.27.6 | ||
=Problemi noti= | == Alcune patch == | ||
==FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol 'paravirt_ops'== | Di seguito alcune patch note e come usarle: | ||
=== ATI Catalyst 10.3, 10.4 e kernel == 2.6.33.x === | |||
Scaricate la [http://www.slacky.eu/~spina/fglrx/patch/fglrx_10.3-4_with_2.6.33.x.diff patch] nella directory ''/tmp'', quindi: | |||
* Per i '''Catalyst 10.3''' fate: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.3-4_with_2.6.33.x.diff /etc/ati/patch/patch-8.712-$(uname -r) | |||
#> sh ati-driver-installer-10-3-x86.x86_64.run --buildpkg | |||
* Per i '''Catalyst 10.4''' fate: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.3-4_with_2.6.33.x.diff /etc/ati/patch/patch-8.723-$(uname -r) | |||
#> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg | |||
=== ATI Catalyst 10.4, 10.5 e kernel == 2.6.34 === | |||
Scaricate la [http://www.slacky.eu/~spina/fglrx/patch/fglrx_10.4-5_with_2.6.34.diff patch] nella directory ''/tmp'', quindi: | |||
* Per i '''Catalyst 10.4''' fate: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.4-5_with_2.6.34.diff /etc/ati/patch/patch-8.723-$(uname -r) | |||
#> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg | |||
* Per i '''Catalyst 10.5''' fate: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.4-5_with_2.6.34.diff /etc/ati/patch/patch-8.732-$(uname -r) | |||
#> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg | |||
=== ATI Catalyst 10.9 e Slackware64 13.1 e current === | |||
Scaricate la [http://www.slacky.eu/~spina/fglrx/patch/fglrx_10.9_with_Slackware64-13.1.diff patch] nella directory ''/tmp'', quindi fate: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.9_with_Slackware64-13.1.diff /etc/ati/patch/patch-8.771-$(uname -r) | |||
#> sh ati-driver-installer-10-9-x86.x86_64.run --buildpkg | |||
ad un certo punto l'installazione chiede: | |||
<PRE> | |||
can't find file to patch at input line 4 | |||
Perhaps you should have used the -p or --strip option? | |||
The text leading up to this was: | |||
-------------------------- | |||
|diff -ru ./2.6.x/Makefile ../../../../../../fglrx-install.uZLF8t/common/lib/modules/fglrx/build_mod//2.6.x/Makefile | |||
|--- ./2.6.x/Makefile 2010-09-01 16:05:31.000000000 +0200 | |||
|+++ ../../../../../../fglrx-install.uZLF8t/common/lib/modules/fglrx/build_mod//2.6.x/Makefile 2010-09-23 08:47:24.000000000 +0200 | |||
-------------------------- | |||
File to patch: | |||
</PRE> | |||
quindi inserire: | |||
./2.6.x/Makefile | |||
= Problemi noti = | |||
== FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol 'paravirt_ops' == | |||
L'errore accade in fase di compilazione del modulo ed è dovuto al fatto che il kernel è stato compilato con l'opzione di | L'errore accade in fase di compilazione del modulo ed è dovuto al fatto che il kernel è stato compilato con l'opzione di | ||
paravirtualizzazione attiva. Questa opzione tra le altre cose, impedisce di caricare, e quindi di compilare, moduli che non hanno la | paravirtualizzazione attiva. Questa opzione tra le altre cose, impedisce di caricare, e quindi di compilare, moduli che non hanno la | ||
Line 162: | Line 206: | ||
Per ovviare al problema si può: | Per ovviare al problema si può: | ||
===Disabilitare la paravirtualizzazione nel kernel === | === Disabilitare la paravirtualizzazione nel kernel === | ||
L'opzione di paravirtualizzazione si chiama '''CONFIG_PARAVIRT''' e generalmente si trova nel sottomenù | L'opzione di paravirtualizzazione si chiama '''CONFIG_PARAVIRT''' e generalmente si trova nel sottomenù '''Processor type and features''' del kernel. | ||
'''Processor type and features''' del kernel. | === Patchare i driver ATI === | ||
===Patchare i driver ATI=== | Questa operazione è illegale poichè si deve modificare il tipo di licenza rilasciata dalla ATI in GPL. Ho scritto la patch: | ||
Questa operazione è illegale poichè si deve modificare il tipo di licenza rilasciata dalla ATI in GPL. | |||
Ho scritto la patch: | |||
[http://www. | [http://www.slacky.eu/~spina/fglrx/patch/ati_to_gpl.patch ati_to_gpl.patch] (md5sum: 4207f41a71035dc2eed3ea9346b881bb) | ||
di cui non mi prendo nessuna responsabilità, io non la uso e ne sconsiglio l'uso preferendo l'alternativa di disabilitare la paravirtualizzazione del kernel. | di cui non mi prendo nessuna responsabilità, io non la uso e ne sconsiglio l'uso preferendo l'alternativa di disabilitare la paravirtualizzazione del kernel. | ||
Line 182: | Line 224: | ||
Lo SlackBuild noterà la presenza della patch e la applicherà. Per disinstallare la patch basterà quindi cancellarla. | Lo SlackBuild noterà la presenza della patch e la applicherà. Per disinstallare la patch basterà quindi cancellarla. | ||
==Using GLX_SGIX_pbuffer FGLTexMgr: open of shared memory object failed (Permission denied) __FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!!== | == Using GLX_SGIX_pbuffer FGLTexMgr: open of shared memory object failed (Permission denied) __FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!! == | ||
Questo problema è dovuto alla mancanza nel sistema del filesystem SHM (oggi chiamato tmpfs), ovvero il virtual memory filesystem. | Questo problema è dovuto alla mancanza nel sistema del filesystem SHM (oggi chiamato tmpfs), ovvero il virtual memory filesystem. | ||
Per ovviare al problema si deve: | Per ovviare al problema si deve: | ||
Line 188: | Line 230: | ||
shm /dev/shm tmpfs defaults 0 0 | shm /dev/shm tmpfs defaults 0 0 | ||
* Quindi montare il filesystem tramite: | * Quindi montare il filesystem tramite: | ||
# mount /dev/shm | #> mount /dev/shm | ||
Ovviamente il kernel deve essero predisposto al "montaggio" di questo filesystem, in particolare l'opzione del kernel che deve essere | Ovviamente il kernel deve essero predisposto al "montaggio" di questo filesystem, in particolare l'opzione del kernel che deve essere | ||
abilitata è | abilitata è '''CONFIG_TMPFS''' che generalmente è sistuata nel sottomenù del kernel '''File systems --> Pseudo filesystems'''. C'è da dire però che tutti i kernel precompilati hanno generalmente questa opzione abilitata. | ||
'''CONFIG_TMPFS''' che generalmente è sistuata nel sottomenù del kernel '''File systems --> Pseudo filesystems'''. | |||
C'è da dire però che tutti i kernel precompilati hanno generalmente questa opzione abilitata. | |||
==kernel includes at /lib/modules/`uname -r`/build/include do not match current kernel== | == kernel includes at /lib/modules/`uname -r`/build/include do not match current kernel == | ||
L'errore completo è qualcosa del genere: | L'errore completo è qualcosa del genere: | ||
Line 208: | Line 248: | ||
/lib/modules/`uname -r`/source | /lib/modules/`uname -r`/source | ||
/lib/modules/`uname -r`/build | /lib/modules/`uname -r`/build | ||
non puntano alla directory in cui sono inseriti i sorgenti del kernel attuale (che generalmente è /usr/src/linux-`uname -r`). | non puntano alla directory in cui sono inseriti i sorgenti del kernel attuale (che generalmente è /usr/src/linux-`uname -r`). Accade a coloro che usano uno dei kernel contenuto nella Slackware, per cui cercherò di spiegarlo in termini di "pacchetti" Slackware. Questo può succedere: | ||
Accade a coloro che usano uno dei kernel contenuto nella Slackware, per cui cercherò di spiegarlo in termini di "pacchetti" | |||
Slackware. | |||
Questo può succedere: | |||
* O perchè i sorgenti del kernel effettivamente non sono stati installati. In questo caso dovrebbe bastare installare il pacchetto dei sorgenti che si trova nella directory k/ della Slackware. Non è detto però che il problema venga risolto, si veda il secondo motivo per cui sussiste l'errore. | * O perchè i sorgenti del kernel effettivamente non sono stati installati. In questo caso dovrebbe bastare installare il pacchetto dei sorgenti che si trova nella directory k/ della Slackware. Non è detto però che il problema venga risolto, si veda il secondo motivo per cui sussiste l'errore. | ||
* O perchè i sorgenti (se pur installati) non rispecchiano le impostazioni dell'attuale kernel. La nuova Slackware 12 ha al suo interno un pò di kernel precompilati (che vuol dire impostazioni differenti) mentre un solo pacchetto per i sorgenti (a meno di vedere nel ramo extra/). In particolare i sorgenti sono per un kernel SMP e quindi se si utilizza un kernel precompilato non SMP può accare che si verifichi l'errore suddetto. Per ovviare basta fare quanto segue, dopo essersi assicurati che il pacchetto dei sorgenti è stato installato: | * O perchè i sorgenti (se pur installati) non rispecchiano le impostazioni dell'attuale kernel. La nuova Slackware 12 ha al suo interno un pò di kernel precompilati (che vuol dire impostazioni differenti) mentre un solo pacchetto per i sorgenti (a meno di vedere nel ramo extra/). In particolare i sorgenti sono per un kernel SMP e quindi se si utilizza un kernel precompilato non SMP può accare che si verifichi l'errore suddetto. Per ovviare basta fare quanto segue, dopo essersi assicurati che il pacchetto dei sorgenti è stato installato: | ||
# cd /usr/src/linux | #> cd /usr/src/linux | ||
# cp /boot/config .config | #> cp /boot/config .config | ||
# make | #> make | ||
:eseguendo il make, oltre a compilare il kernel e relativi moduli (che poi non useremo), si rigenerano alcuni file headers che rispecchiano la configurazione del kernel (per come impostata nel file .config). | :eseguendo il make, oltre a compilare il kernel e relativi moduli (che poi non useremo), si rigenerano alcuni file headers che rispecchiano la configurazione del kernel (per come impostata nel file .config). | ||
==Logo nei driver 8.39.4== | == Logo nei driver 8.39.4 == | ||
Questo "bug" nei driver 8.39.4 deriva dal fatto che gli sviluppatori ATI non aggiornano i packager mantainer prima della release | Questo "bug" nei driver 8.39.4 deriva dal fatto che gli sviluppatori ATI non aggiornano i packager mantainer prima della release ufficiale. Sarebbe carino se facessero testare prima a noi le release ufficiali, in modo da certificare il corretto funzionamento degli script per creare i pacchetti. Per risolvere il problema si deve usare lo '''SlackBuild esterno''' come descritto [[#Versione dei driver < 8.37.6 (SlackBuild esterno) | qui]]. | ||
ufficiale. Sarebbe carino se facessero testare prima a noi le release ufficiali, in modo da certificare il corretto funzionamento degli | |||
script per creare i pacchetti. Per risolvere il problema si deve usare lo SlackBuild esterno come descritto | |||
[[#Versione dei driver < 8.37.6 (SlackBuild esterno) | qui]]. | |||
==amdcccle non parte con la | == amdcccle non parte con la Slackware 12 == | ||
Molti utenti che utilizzano la versione del server X.Org 7.2 (o 1.3) non riescono a lanciare correttamente il Catalyst. | Molti utenti che utilizzano la versione del server X.Org 7.2 (o 1.3) non riescono a lanciare correttamente il Catalyst. Il comando per eseguire il Catalyst è: | ||
Il comando per eseguire il Catalyst è: | #> amdcccle | ||
# amdcccle | |||
Per questo problema sembra non esserci ancora soluzione, ma stiamo lavorando per risolverlo. | Per questo problema sembra non esserci ancora soluzione, ma stiamo lavorando per risolverlo. | ||
=Link utili= | = Link utili = | ||
Il thread di discussione da cui è stato tratto questo articolo: | Il thread di discussione da cui è stato tratto questo articolo: | ||
http://www.slacky.eu/forum/viewtopic.php?t=18134&highlight= | http://www.slacky.eu/forum/viewtopic.php?t=18134&highlight= | ||
Un alternativa ai driver ufficiali ATI | Un alternativa ai driver ufficiali ATI: | ||
http://www.schneider-digital.de/ | http://www.schneider-digital.de/ | ||
Una guida su come installare e configurare i driver | Una guida su come installare e configurare i driver (open source e proprietary) ATI: | ||
http://www.slacky.eu/wikislack/index.php?title=Installazione_driver_ATI_su_Slackware_GNU/Linux | http://www.slacky.eu/wikislack/index.php?title=Installazione_driver_ATI_su_Slackware_GNU/Linux | ||
=Conclusione= | = Conclusione = | ||
I driver proprietari ATI per molti notebook e moderni PC fissi risultano essere quasi l'unica alternativa per l'uso dell'accelerazione | I driver proprietari ATI per molti notebook e moderni PC fissi risultano essere quasi l'unica alternativa per l'uso dell'accelerazione 3d con linux. Purtroppo gli sviluppatori ATI non effettuano il back porting e quindi gli utenti che fanno uso dei driver precedenti alla versione 8.37.6 non potranno mai passare alla versione 7.2 (o anche detto 1.3) o successive del server X.Org. Si spera quindi che ben presto i driver Mesa possano essere usati anche per queste schede video. | ||
3d con linux. | |||
Purtroppo gli sviluppatori ATI non effettuano il back porting e quindi gli utenti che fanno uso dei driver precedenti alla versione 8.37.6 | |||
non potranno mai passare alla versione 7.2 (o 1.3) o successive del server X.Org. Si spera quindi che ben presto i driver Mesa possano essere usati | |||
anche per queste schede video. | |||
Inoltre, può succedere che la compilazione del modulo non abbia successo. Se è il vostro caso, scrivetemi tranquillamente all'indirizzo '''tomasi@cliDOTdiDOTunipiDOTit''' postandomi l'output dell'installer lanciato con l'opzione ''Only_Module''. | |||
Ringrazio Ezio Ghibaudo e Federico Rota per aver iniziato questo wiki e per l'aiuto che mi hanno dato con lo SlackBuild. | |||
Revision as of 08:37, 13 October 2010
Introduzione
Questo wiki spiega come installare i driver propritari ATI con la distribuzione linux Slackware, creando, grazie ad uno SlackBuild, dei pacchetti che possono essere installati tramite il comando installpkg.
Il wiki NON spiega come migliorare le prestazioni. In particolare fornisce solo una descrizione minimale di come impostare il server X.Org con l'unico scopo di far funzionare i driver proprietari (una descrizione su come configurare il server X.Org per ottenere prestazioni più elevate la potete trovare qui).
Tutti i comandi che iniziano con un '#>' devono essere eseguiti con i diritti dell'utente root, mentre quello che iniziano con '$>' possono essere eseguiti anche da un utente senza tali diritti.
ATI Proprietary Driver e ATI Catalyst
A partire dal 21 Novembre 2007 i driver ATI hanno cambiato nome e numero di versione. I nuovi driver, che prima venivano indicati solo come ATI Proprietary Driver, ora si chiamano ATI Catalyst. Non solo, il numero di versione è passato da 8.XX.X a 7.XX.
Quando in questo articolo si parlerà dei driver versione < 8.37.6, ci si riferirà implicitamente ai vecchi driver, ovvero agli ATI Proprietary Driver, i nuovi ATI Catalyst sono da considerarsi versione >= 8.37.6, anche se, ad esempio, hanno come numero di release 7.11.
Come ottenere tutto il software necessario
I driver proprietari ATI possono essere scaricati dal sito ufficiale: http://ati.amd.com/support/driver.html, dopo aver selezionato il sistema operativo Linux x86 (o Linux x86_64) e selezionato la propria scheda video, premendo il tasto "go" si arriva direttamente alla pagina del download da cui bisognerà scaricare l'installer (che d'ora in poi chiameremo installer.run). Dato che i driver contengono anche un modulo del kernel che verrà compilato direttamente sul vostro sistema, è necessario avere anche i sorgenti del kernel attualmente installato sul sistema.
NOTA: I driver per le architetture x86 e x86_64 sono equivalenti. L'installer infatti contiene i file per entrambe le architetture, sarà poi il processo di compilazione e creazione dei pacchetti che sceglierà i file adeguati. Questo vuol dire che lo SlackBuild andrà bene sia per la Slackware sia la Slackware64, sia per le varie versioni porting a 64 bit (Slamd64, Bluewhite64, etc...).
Nota IMPORTANTE
Se la versione dei driver che si è scaricata è minore della 8.37.6 allora dovete sapere fin d'ora che non funzioneranno con il server X.Org 7.2 (o 1.3) o successivi.
Come creare i pacchetti per la Slackware
La creazione dei pacchetti segue due strade differenti a seconda che si usino i driver ufficiali versione < 8.37.6 oppure versione >= 8.37.6 o nuovi ATI Catalyst. La prima strada fa uso di quello che chiameremo SlackBuild esterno mentre la seconda di quello che chiameremo SlackBuild interno. In entrambi i casi verranno creati due pacchetti che potranno quindi essere installati tramite l'utiliti installpkg della Slackware. Quindi passiamo a vedere i due casi ricordando che il programma che qui chiamiamo installer.run è l'installer che si è scaricato dal sito della ATI.
NOTA: L'uso dello SlackBuild esterno è limitato alla versione dei driver < 8.37.6 visto che dalla 8.11 si possono passare delle patch a quello interno.
Versione dei driver < 8.37.6 (SlackBuild esterno)
Per questi tipi di driver ho creato uno SlackBuild esterno per la Slackware di cui ho fatto questo pacchetto.
Per creare i pacchetti Slackware basta eseguire:
#> installpkg ati-slack-packager-current-noarch-1.tgz #> sh installer.run --buildpkg custom-package/Slackware
Versione dei driver >= 8.37.6 o nuovi ATI Catalyst (SlackBuild interno)
Per questi driver lo SlackBuild l'ho inviato direttamente alla ATI che ha provveduto ad inserirlo all'interno dell'installer, quindi basta eseguire:
#> sh installer.run --buildpkg Slackware/All
o, se i driver sono abbastanza recenti (non ricordo la versione esatta), basta un semplice:
#> sh installer.run --buildpkg
Oppure, per creare ed installare direttamente i pacchetti, si può usare (sempre con versioni recenti dei driver):
#> sh intaller.run --buildandinstallpkg
Cosa contengono i pacchetti creati?
I due pacchetti creati dallo SlackBuild, che chiameremo fglrx-module e fglrx-x, contengono, rispettivamente, il modulo per il kernel attualmente installato sul sistema, e i driver per la versione del server X.Org installata. In questo modo, se si aggiorna il kernel oppure il server X.Org si può creare solo il relativo pacchetto.
Creare solo il pacchetto fglrx-module
Per creare solo il pacchetto contenente il modulo per il kernel attualmente installato, basta lanciare l'installer con l'opzione Only_Module .
Quindi, con lo SlackBuild esterno:
#> sh installer.run --buildpkg custom-package/Only_Module
Con lo SlackBuild interno:
#> sh installer.run --buildpkg Slackware/Only_Module
Creare solo il pacchetto fglrx-x
Per creare solo il pacchetto contenente i driver per il server X.Org attualmente installato sul sistema, basta lanciare l'installer con l'opzione Only_X.
Con lo SlackBuild esterno:
#> sh installer.run --buildpkg custom-package/Only_X
Con lo SlackBuild interno:
#> sh installer.run --buildpkg Slackware/Only_X
Configurazione minimale del server X.Org
Una volta installati i due pacchetti bisogna segnalare al server X.Org di usare i driver proprietari ATI, per fare questo bisogna controllare che il file xorg.conf, che generalmente è situato nella directory /etc/X11/, contenga le seguenti voci:
Section "Module" .... Load "dri" Load "glx" .... EndSection
Section "Device" .... Driver "fglrx" .... EndSection
Section "DRI" Group 0 Mode 0666 EndSection
Verifica
Per verificare se i driver proprietari ATI sono stati correttamente installati si può eseguire il comando:
$> fglrxinfo
Sulla mia macchina l'output è:
display: :0.0 screen: 0 OpenGL vendor string: ATI Technologies Inc. OpenGL renderer string: ATI Mobility Radeon X1400 OpenGL version string: 2.0.6650 (8.39.4)
Rimuovere i pacchetti installati
Per rimuovere i pacchetti installati si può tranquillamente usare l'utiliti removepkg. Ci sono però aspetti che vanno considerati:
- La rimozione dei pacchetti non elimina i file di configurazione del driver fglrx, questi file sono situati nella directory /etc/ati
NOTA: La directory /etc/ati/custom-package se esiste, contiene lo SlackBuild esterno e quindi non va cancellata.
- Il pacchetto fglrx-x contiene le librerie OpenGL della ATI, e queste librerie sono posizionate nella stessa directory di quelle Mesa, indi per cui quando si installa il pacchetto fglrx-x vengono sovrascritte le OpenGL Mesa. Per ripristinare la situazione si deve semplicemente reinstallare il pacchetto contenente queste librerie, ovvero il pacchetto:
- x11
- si usa la Slackware 11, oppure:
- mesa
- se si usa la Slackware 12.
Patchare i driver
I driver ATI sono noti per essere sempre in ritardo rispetto all'aggiornamento del kernel linux. Spesso occorre quindi patchare i driver in modo tale che la creazione del modulo per il kernel abbia successo. A partire dagli ATI Catalist > 8.11 abbiamo inserito nello SlackBuild interno la possibilità di patchare i driver ATI prima che lo SlackBuild stesso esegua la compilazione del modulo per il kernel.
Per fare questo basta creare (o scaricare da internet) una patch e dargli questo path:
/etc/ati/patch/patch-ATI_DRIVER_VERSION-KERNEL_VERSION
dove:
ATI_DRIVER_VERSION deve essere uguale al risultato del comando:
$> sh installer.run -i | head -n1 | cut -d'-' -f2
KERNEL_VERSION deve essere uguale al risultato del comando:
$> uname -r
se la directory /et/ati/patch non esiste, va ovviamente creata.
Quindi, ad esempio, se si il primo dei due comandi da come risultato 8.56 e il secondo 2.6.27.6, la patch va chiamata: /etc/ati/patch/patch-8.56-2.6.27.6
Lo SlackBuild interno automaticamente noterà la patch, e, se si è in possesso del programma patch, eseguirà:
#> patch -p0 < /etc/ati/patch/patch-8.56-2.6.27.6
Alcune patch
Di seguito alcune patch note e come usarle:
ATI Catalyst 10.3, 10.4 e kernel == 2.6.33.x
Scaricate la patch nella directory /tmp, quindi:
- Per i Catalyst 10.3 fate:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.3-4_with_2.6.33.x.diff /etc/ati/patch/patch-8.712-$(uname -r) #> sh ati-driver-installer-10-3-x86.x86_64.run --buildpkg
- Per i Catalyst 10.4 fate:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.3-4_with_2.6.33.x.diff /etc/ati/patch/patch-8.723-$(uname -r) #> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg
ATI Catalyst 10.4, 10.5 e kernel == 2.6.34
Scaricate la patch nella directory /tmp, quindi:
- Per i Catalyst 10.4 fate:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.4-5_with_2.6.34.diff /etc/ati/patch/patch-8.723-$(uname -r) #> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg
- Per i Catalyst 10.5 fate:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.4-5_with_2.6.34.diff /etc/ati/patch/patch-8.732-$(uname -r) #> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg
ATI Catalyst 10.9 e Slackware64 13.1 e current
Scaricate la patch nella directory /tmp, quindi fate:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.9_with_Slackware64-13.1.diff /etc/ati/patch/patch-8.771-$(uname -r) #> sh ati-driver-installer-10-9-x86.x86_64.run --buildpkg
ad un certo punto l'installazione chiede:
can't find file to patch at input line 4 Perhaps you should have used the -p or --strip option? The text leading up to this was: -------------------------- |diff -ru ./2.6.x/Makefile ../../../../../../fglrx-install.uZLF8t/common/lib/modules/fglrx/build_mod//2.6.x/Makefile |--- ./2.6.x/Makefile 2010-09-01 16:05:31.000000000 +0200 |+++ ../../../../../../fglrx-install.uZLF8t/common/lib/modules/fglrx/build_mod//2.6.x/Makefile 2010-09-23 08:47:24.000000000 +0200 -------------------------- File to patch:
quindi inserire:
./2.6.x/Makefile
Problemi noti
FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol 'paravirt_ops'
L'errore accade in fase di compilazione del modulo ed è dovuto al fatto che il kernel è stato compilato con l'opzione di paravirtualizzazione attiva. Questa opzione tra le altre cose, impedisce di caricare, e quindi di compilare, moduli che non hanno la licenza GPL. Visto che i driver ATI non hanno questo tipo di licenza, non vengono compilati.
Per ovviare al problema si può:
Disabilitare la paravirtualizzazione nel kernel
L'opzione di paravirtualizzazione si chiama CONFIG_PARAVIRT e generalmente si trova nel sottomenù Processor type and features del kernel.
Patchare i driver ATI
Questa operazione è illegale poichè si deve modificare il tipo di licenza rilasciata dalla ATI in GPL. Ho scritto la patch:
ati_to_gpl.patch (md5sum: 4207f41a71035dc2eed3ea9346b881bb)
di cui non mi prendo nessuna responsabilità, io non la uso e ne sconsiglio l'uso preferendo l'alternativa di disabilitare la paravirtualizzazione del kernel. Per usare questa patch bisogna:
SlackBuild esterno:
- Copiare la patch nella directory /etc/ati/custom-package/patch
SlackBuild interno (solo con ATI Catalist > 8.11):
- Copiare la patch nella directory /etc/ati/patch (se non esiste, va creata)
Lo SlackBuild noterà la presenza della patch e la applicherà. Per disinstallare la patch basterà quindi cancellarla.
Questo problema è dovuto alla mancanza nel sistema del filesystem SHM (oggi chiamato tmpfs), ovvero il virtual memory filesystem. Per ovviare al problema si deve:
- Aggiungere al file /etc/fstab la seguente riga:
shm /dev/shm tmpfs defaults 0 0
- Quindi montare il filesystem tramite:
#> mount /dev/shm
Ovviamente il kernel deve essero predisposto al "montaggio" di questo filesystem, in particolare l'opzione del kernel che deve essere abilitata è CONFIG_TMPFS che generalmente è sistuata nel sottomenù del kernel File systems --> Pseudo filesystems. C'è da dire però che tutti i kernel precompilati hanno generalmente questa opzione abilitata.
kernel includes at /lib/modules/`uname -r`/build/include do not match current kernel
L'errore completo è qualcosa del genere:
Error: kernel includes at /lib/modules/`uname -r`/build/include do not match current kernel. they are versioned as "" instead of "`uname -r`". you might need to adjust your symlinks: - /usr/include - /usr/src/linux
L'errore, se pur spiegato può non essere chiaro. In pratica deriva dal fatto che i link simbolici:
/lib/modules/`uname -r`/source /lib/modules/`uname -r`/build
non puntano alla directory in cui sono inseriti i sorgenti del kernel attuale (che generalmente è /usr/src/linux-`uname -r`). Accade a coloro che usano uno dei kernel contenuto nella Slackware, per cui cercherò di spiegarlo in termini di "pacchetti" Slackware. Questo può succedere:
- O perchè i sorgenti del kernel effettivamente non sono stati installati. In questo caso dovrebbe bastare installare il pacchetto dei sorgenti che si trova nella directory k/ della Slackware. Non è detto però che il problema venga risolto, si veda il secondo motivo per cui sussiste l'errore.
- O perchè i sorgenti (se pur installati) non rispecchiano le impostazioni dell'attuale kernel. La nuova Slackware 12 ha al suo interno un pò di kernel precompilati (che vuol dire impostazioni differenti) mentre un solo pacchetto per i sorgenti (a meno di vedere nel ramo extra/). In particolare i sorgenti sono per un kernel SMP e quindi se si utilizza un kernel precompilato non SMP può accare che si verifichi l'errore suddetto. Per ovviare basta fare quanto segue, dopo essersi assicurati che il pacchetto dei sorgenti è stato installato:
#> cd /usr/src/linux #> cp /boot/config .config #> make
- eseguendo il make, oltre a compilare il kernel e relativi moduli (che poi non useremo), si rigenerano alcuni file headers che rispecchiano la configurazione del kernel (per come impostata nel file .config).
Logo nei driver 8.39.4
Questo "bug" nei driver 8.39.4 deriva dal fatto che gli sviluppatori ATI non aggiornano i packager mantainer prima della release ufficiale. Sarebbe carino se facessero testare prima a noi le release ufficiali, in modo da certificare il corretto funzionamento degli script per creare i pacchetti. Per risolvere il problema si deve usare lo SlackBuild esterno come descritto qui.
amdcccle non parte con la Slackware 12
Molti utenti che utilizzano la versione del server X.Org 7.2 (o 1.3) non riescono a lanciare correttamente il Catalyst. Il comando per eseguire il Catalyst è:
#> amdcccle
Per questo problema sembra non esserci ancora soluzione, ma stiamo lavorando per risolverlo.
Link utili
Il thread di discussione da cui è stato tratto questo articolo: http://www.slacky.eu/forum/viewtopic.php?t=18134&highlight=
Un alternativa ai driver ufficiali ATI: http://www.schneider-digital.de/
Una guida su come installare e configurare i driver (open source e proprietary) ATI: http://www.slacky.eu/wikislack/index.php?title=Installazione_driver_ATI_su_Slackware_GNU/Linux
Conclusione
I driver proprietari ATI per molti notebook e moderni PC fissi risultano essere quasi l'unica alternativa per l'uso dell'accelerazione 3d con linux. Purtroppo gli sviluppatori ATI non effettuano il back porting e quindi gli utenti che fanno uso dei driver precedenti alla versione 8.37.6 non potranno mai passare alla versione 7.2 (o anche detto 1.3) o successive del server X.Org. Si spera quindi che ben presto i driver Mesa possano essere usati anche per queste schede video.
Inoltre, può succedere che la compilazione del modulo non abbia successo. Se è il vostro caso, scrivetemi tranquillamente all'indirizzo tomasi@cliDOTdiDOTunipiDOTit postandomi l'output dell'installer lanciato con l'opzione Only_Module.
Ringrazio Ezio Ghibaudo e Federico Rota per aver iniziato questo wiki e per l'aiuto che mi hanno dato con lo SlackBuild.