Difference between revisions of "Slackware: ATI SlackBuild (ITA)"

From cchtml.com
Jump to: navigation, search
(Come creare i pacchetti per la Slackware)
(WqlDZxobD)
Line 1: Line 1:
<!-- Per http://wiki.cchtml.com/index.php/Slackware:_ATI_SlackBuild_(ITA) -->
+
Wow! Great thniinkg! JK
 
+
= 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&ugrave; 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 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 &egrave; passato da '''8.XX.X''' a '''7.XX'''.
+
 
+
Quando in questo articolo si parler&agrave; dei driver ''versione < 8.37.6'', ci si riferir&agrave; 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 =
+
L'installer pu&ograve; essere scaricato direttamente dal [http://support.amd.com/us/gpudownload/Pages/index.aspx sito ufficiale].
+
{{Warning|Attenzione|Se la versione dei driver che si &egrave; scaricata &egrave; 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.}}
+
{{Helpful Hint|Nota|I driver per le architetture x86 e x86_64 sono equivalenti. L'installer infatti contiene i file per entrambe le architetture, sar&agrave; poi il processo di compilazione e creazione dei pacchetti che sceglier&agrave; i file adeguati.
+
Questo vuol dire che lo SlackBuild andr&agrave; bene sia per la Slackware sia la Slackware64, sia per le varie versioni porting a 64 bit (Slamd64, Bluewhite64, etc...).}}
+
 
+
Dato che i driver contengono anche un modulo del kernel che verr&agrave; compilato direttamente sul vostro sistema, &egrave; necessario avere anche i sorgenti del kernel attualmente in uso.
+
 
+
Yeah, that's the tikcet, sir or ma'am
+
 
+
= 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 &egrave; 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
+
 
+
{{Useful Information|Nota|Il comando:
+
#> aticonfig --initial
+
pu&ograve; essere di aiuto. Eseguire '''aticonfig''' senza opzioni per maggiori informazioni}}
+
 
+
= Verifica =
+
Per verificare se i driver proprietari ATI sono stati correttamente installati si pu&ograve; eseguire il comando:
+
$> fglrxinfo
+
Sulla mia macchina l'output &egrave;:
+
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 =
+
== ATI Proprietary Driver o ATI Catalyst < 11.3 ==
+
Per rimuovere i pacchetti installati si pu&ograve; tranquillamente usare l'utility '''removepkg'''. Ci sono per&ograve; 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''
+
{{Be Careful|Occhio|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.
+
 
+
== ATI Catalyst >= 11.3 ==
+
Durante l'installazione del pacchetto ''fglrx-<versione>-<architettura>-<release>.tgz'' alcune librerie che sarebbero sovrascritte vengono rinominate in FGL.renamed.nome_libreria. Per disinstallare il pacchetto in maniera "pulita" si dovrebbe eseguire il comando:
+
#> aticonfig --uninstall
+
oppure direttamente lo script:
+
#> /usr/share/ati/amd-uninstall.sh
+
o, ancora, con un qualsiasi installer >= 11.3, con:
+
#> ati-driver-installer-<versione>-x86.x86_64.run --uninstall
+
Dopo di ci&ograve; rimarr&agrave; solo la directory ''/etc/ati'' con i file di configurazione dei 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 ho inserito nello '''SlackBuild interno''' la possibilit&agrave; 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 ati-driver-installer-<versione>-x86.x86_64.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&agrave; la patch, e, se si &egrave; in possesso del programma '''patch''', eseguir&agrave;:
+
#> 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 [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 o 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
+
 
+
=== ATI Catalyst 10.10, 10.11 e kernel == 2.6.36.x ===
+
Scaricate la [http://www.slacky.eu/~spina/fglrx/patch/fglrx_10.10-11_with_2.6.36.x.diff patch] nella directory ''/tmp'', quindi:
+
* Per i '''Catalyst 10.10''' fate:
+
#> mkdir -p /etc/ati/patch/
+
#> mv /tmp/fglrx_10.10-11_with_2.6.36.x.diff /etc/ati/patch/patch-8.783-$(uname -r)
+
#> sh ati-driver-installer-10-10-x86.x86_64.run --buildpkg
+
 
+
* Per i '''Catalyst 10.11''' fate:
+
#> mkdir -p /etc/ati/patch/
+
#> mv /tmp/fglrx_10.10-11_with_2.6.36.x.diff /etc/ati/patch/patch-8.791-$(uname -r)
+
#> sh ati-driver-installer-10-11-x86.x86_64.run --buildpkg
+
 
+
=== ATI Catalyst 10.10, 10.11 e 10.12 e kernel == 2.6.37.x ===
+
Scaricate la [http://www.slacky.eu/~spina/fglrx/patch/fglrx_10.10-12_with_2.6.37.x.diff patch] nella directory ''/tmp'', quindi:
+
* Per i '''Catalyst 10.10''' fate:
+
#> mkdir -p /etc/ati/patch/
+
#> mv /tmp/fglrx_10.10-12_with_2.6.37.x.diff /etc/ati/patch/patch-8.783-$(uname -r)
+
#> sh ati-driver-installer-10-10-x86.x86_64.run --buildpkg
+
 
+
* Per i '''Catalyst 10.11''' fate:
+
#> mkdir -p /etc/ati/patch/
+
#> mv /tmp/fglrx_10.10-12_with_2.6.37.x.diff /etc/ati/patch/patch-8.791-$(uname -r)
+
#> sh ati-driver-installer-10-11-x86.x86_64.run --buildpkg
+
 
+
* Per i '''Catalyst 10.12''' fate:
+
#> mkdir -p /etc/ati/patch/
+
#> mv /tmp/fglrx_10.10-12_with_2.6.37.x.diff /etc/ati/patch/patch-8.801-$(uname -r)
+
#> sh ati-driver-installer-10-12-x86.x86_64.run --buildpkg
+
 
+
= Problemi noti =
+
== error: implicit declaration of function 'lock_kernel' and error: implicit declaration of function 'unlock_kernel' ==
+
Dovete abilitare l'opzione '''Big Kernel Lock''' nella vostra configurazione del kernel. La voce si trova nel men&ugrave; '''Kernel hacking'''. Per controllare se questa opzione &egrave; abilitata potete fare:
+
$> zcat /proc/config.gz | grep BKL
+
CONFIG_BKL=y
+
 
+
== FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol 'paravirt_ops' ==
+
L'errore accade in fase di compilazione del modulo ed &egrave; dovuto al fatto che il kernel &egrave; 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&ograve;:
+
=== Disabilitare la paravirtualizzazione nel kernel ===
+
L'opzione di paravirtualizzazione si chiama '''CONFIG_PARAVIRT''' e generalmente si trova nel sottomen&ugrave; '''Processor type and features''' del kernel.
+
=== Patchare i driver ATI ===
+
Questa operazione &egrave; illegale poich&egrave; si deve modificare il tipo di licenza rilasciata dalla ATI in GPL. Ho scritto la patch:
+
 
+
[http://www.slacky.eu/~spina/fglrx/patch/ati_to_gpl.patch ati_to_gpl.patch] (md5sum: 4207f41a71035dc2eed3ea9346b881bb)
+
 
+
di cui non mi prendo nessuna responsabilit&agrave;, 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&agrave; la presenza della patch e la applicher&agrave;. Per disinstallare la patch baster&agrave; quindi cancellarla.
+
 
+
== Using GLX_SGIX_pbuffer FGLTexMgr: open of shared memory object failed (Permission denied) __FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!! ==
+
Questo problema &egrave; 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 &egrave; '''CONFIG_TMPFS''' che generalmente &egrave; sistuata nel sottomen&ugrave; del kernel '''File systems --> Pseudo filesystems'''. C'&egrave; da dire per&ograve; 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 &egrave; 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&ograve; 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 &egrave; /usr/src/linux-`uname -r`). Accade a coloro che usano uno dei kernel contenuto nella Slackware, per cui cercher&ograve; di spiegarlo in termini di "pacchetti" Slackware. Questo pu&ograve; succedere:
+
* O perch&egrave; 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 &egrave; detto per&ograve; che il problema venga risolto, si veda il secondo motivo per cui sussiste l'errore.
+
* O perch&egrave; i sorgenti (se pur installati) non rispecchiano le impostazioni dell'attuale kernel. La nuova Slackware 12 ha al suo interno un p&ograve; 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&ograve; accadere che si verifichi l'errore suddetto. Per ovviare basta fare quanto segue, dopo essersi assicurati che il pacchetto dei sorgenti &egrave; 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).
+
 
+
<<edit by 414N>>: Questo problema può presentarsi anche in caso di kernel ricompilati manualmente ai quali si è aggiunta una qualche tag in fase di configurazione.
+
Per risolvere è sufficiente un make prepare nella directory dei sorgenti del kernel in uso, in modo da avere gli header necessari allo script (make andrebbe a compilare tutto il kernel).
+
 
+
== 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 [[#Versione dei driver < 8.37.6 (SlackBuild esterno) | 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 &egrave;:
+
#> amdcccle
+
Per questo problema sembra non esserci ancora soluzione, ma stiamo lavorando per risolverlo.
+
 
+
= Link utili =
+
Il thread di discussione da cui &egrave; stato tratto questo articolo:
+
http://www.slacky.eu/forum/viewtopic.php?t=18134&highlight=
+
 
+
Un alternativa ai driver ufficiali ATI:
+
http://www.x.org/wiki/radeon
+
 
+
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
+
 
+
= Ringraziamenti =
+
Ringrazio Ezio Ghibaudo e Federico Rota per aver iniziato questo wiki e per l'aiuto che mi hanno dato con lo SlackBuild. Vorrei anche ringraziare tutti gli utenti della community [http://www.slacky.eu Slacky] per i feedback e consigli.
+
 
+
[[User:Spina|Spina]]
+

Revision as of 21:41, 6 October 2011

Wow! Great thniinkg! JK