Installazione driver proprietari Nvidia: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
mNessun oggetto della modifica
 
(100 versioni intermedie di 15 utenti non mostrate)
Riga 1: Riga 1:
=Introduzione=
{{Non-free|Valutare la possibilità di utilizzare i driver liberi "nouveau" che supportano egregiamente la maggioranza delle schede Nvidia. Potrebbe essere necessario utilizzare un kernel recente (ad esempio prelevato dai [[Il repository Backports|backports]] per chi utilizza una [[stable]]) nel caso si abbiano problemi di riconoscimento della periferica o di configurazione del driver.}}
LAMP � l'acronimo di Linux Apache Mysql Php e indica l'ambiente libero (e anche gratuito in questo caso) di programmazione di applicazioni Web che � possibile costruire dalla somma delle parti di queste eccezionali applicazioni a sorgente aperto.


Questa guida non fornisce alcun elemento per la configurazione ottimale dei server presi in esame (Apache e MySQL). Essa non � intesa ad amministrare tali servizi su macchine in produzione, ma solo a fornire all' utente domestico e allo sviluppatore web un ambiente correttamente configurato senza introdurre sensibili rischi per la sicurezza del computer usato.
{{Versioni compatibili|Squeeze|Wheezy}}
__TOC__


Per il dettaglio sulla configurazione di quanto preso in esame Vi invitiamo pertanto a visitare in primo luogo i siti [http://httpd.apache.org Httpd Apache], [http://www.php.net PHP.net] e [http://www.mysql.org MySQL.org] e, quando presenti, le guide specifiche messe a disposizione da questa Community.
== Introduzione ==
L'installazione dei driver proprietari Nvidia su Debian si può fare in tre modi, tutti abbastanza semplici da mettere in pratica.


Buona lettura!
Il primo metodo prevede l'installazione dei driver proprietari utilizzando i [[pacchetto|pacchetti]] presenti nei [[repository]] di Debian.<br/>
Il vantaggio di questo metodo consiste nella possibilità di usufruire degli aggiornamenti direttamente dai repository di Debian oltre al fatto di non dover ricompilare il modulo della scheda video all'aggiornamento del [[kernel]]. Di questo se ne occuperà il [[DKMS]].


=Il server http=
Il secondo metodo prevede di utilizzare l'installer automatico fornito da Nvidia: si tratta di uno [[script]] per la [[shell]] che tramite un menu ci guida nell'installazione, questo è però destinato agli sviluppatori pertanto ne '''è sconsigliato l'uso all'utente finale'''; se si intraprende questa strada verrà aggirato il sistema di gestione dei pacchetti (APT nel caso di Debian, ma anche qualunque altro), con il risultato che questo non saprà mai dell'esistenza del modulo e non potrà aiutarci nella gestione di eventuali dipendenze o conflitti con altri pacchetti.
==Apache==
[http://httpd.apache.org/ Apache] � il frutto del lavoro della [http://www.apache.org/ Apache Software Foundation]. Tra le caratteristiche che ne fanno il server HTTP pi� diffuso evidenziamo che:
* � software libero;
* gira sulle pi� svariate piattaforme (*nix, Windows, ec...);
* � sviluppato in accordo con le pi� recenti specifiche per i servizi http.
Secondo [http://news.netcraft.com/archives/web_server_survey.html Netcraft] Apache, con una percentuale del 68% (febbraio 2005), � il server http pi� usato in assoluto.


Apache deve il suo nome all' omonima trib� di indiani nordamericani, famosa per le straordinarie doti di resistenza e strategia. Visto per� che il software � stato inizialmente sviluppato come una serie di patches ad un altro server http, nell' uso comune Apache significa anche "A Patchy Server".
Il terzo metodo utilizza un tool specifico di Debian: ''module-assistant''. Module-assistant è un programma che permette di automatizzare la compilazione di molti moduli proprietari, e la creazione di pacchetti .deb contenenti i moduli compilati, per la successiva installazione tramite APT. Lo svantaggio di questo metodo è che non tutte le versioni dei driver sono disponibili (vedi il paragrafo successivo "Versioni del driver") e, per quelle che ci sono, gli aggiornamenti arrivano sempre con qualche giorno di ritardo rispetto all'installer, come è ovvio che sia.
{{Box|Nota:|con l'inserimento dell'infrastruttura DKMS questo terzo metodo non è più necessario e viene mantenuto per retrocompatibilità.}}


La pronuncia corretta di Apache suona grossomodo come "APACI".
{{Box|Nota|I comandi di questa guida necessitano di interfacciarsi con il sistema attraverso un [[terminale]] oppure un emulatore di terminale. Pertanto potrebbe essere necessario, in caso di errata o mancata configurazione dei driver o di mancato riconoscimento delle periferiche che portano a un server grafico non funzionante (schermo nero in avvio), premere la combinazione di tasti "Ctrl+Alt+F1" per accedere a <code>tty1</code>.}}


Il progetto Apache � suddiviso principalmente in due rami distinti (ne esiste un terzo, ma � nella fase di sviluppo alpha al momento): la versione 1.3 (la versione "vecchia" molto robusta e testata) e la versione 2.0 (dal design innovativo rispetto alla precedente).
{{Warningbox|Si raccomanda di usare <b>uno solo</b> dei tre metodi proposti.}}
===Apache 1.3===
====Installazione====
L' installazione nuda e cruda di Apache 1.3 in Debian � di una semplicit� disarmante. Tutto quello che avremo bisogno di fare consiste nel dare il comando:
<pre># apt-get install apache</pre>
al termine del download ci viene chiesto se vogliamo abilitare suExec: a meno di utilizzi professionali, possiamo tranquillamente rispondere "No".
====Verifica====
A questo punto il nostro server web � gi� attivo, ma possiamo anche verificarlo tramite il comando '''ps''':
<pre>$ ps aux |grep apache
root      7378  0.0  0.4  4592  2228 pts/1    S    12:01  0:00 /usr/sbin/apache
www-data  7379  0.0  0.4  4592  2364 pts/1    S    12:01  0:00 /usr/sbin/apache
www-data  7380  0.0  0.4  4592  2364 pts/1    S    12:01  0:00 /usr/sbin/apache
www-data  7381  0.0  0.4  4592  2204 pts/1    S    12:01  0:00 /usr/sbin/apache
www-data  7382  0.0  0.4  4592  2204 pts/1    S    12:01  0:00 /usr/sbin/apache
www-data  7383  0.0  0.4  4592  2204 pts/1    S    12:01  0:00 /usr/sbin/apache</pre>
Notiamo subito uno dei meccanismi principali di Apache: esistono svariati processi in esecuzione. Per la precisione abbiamo 1 processo propriet� dell' utente root e ben 5 processi di propriet� dell' utente www-data, come possiamo vedere con il comando '''pstree''':
<pre>$ pstree -uc |grep apache
    ??apache???apache(www-data)
    ?        ??apache(www-data)
    ?        ??apache(www-data)
    ?        ??apache(www-data)
    ?        ??apache(www-data)</pre>
Il primo processo (padre) viene lanciato da root e ed il suo unico compito consiste nel genere e controllare i restanti processi (figli). Sono questi ultimi a rispondere alle richieste http ed a fornire le pagine. In questo modo Apache gira con privilegi minimi (quelli dell' utente www-data) ed in caso di una sua eventuale compromissione gli effetti sul sistema sono in qualche misura limitati.


====Configurazione====
== Versioni del driver ==
La configurazione di Apache � un compito estremamente delicato e pu� richiedere conoscenze anche notevoli in svariati ambiti quali networking, programmazione e amministrazione di sistema. Dato che questa guida si propone fondamentalmente di illustrare i passi necessari ad installare e configurare un sistema per uso non professionale, ci limiteremo agli aspetti macroscopici della configurazione.
Attualmente esistono nei repository varie serie di driver NVIDIA:
* 71xx (old): supporta solo le schede video più datate ed è presente in [[Wheezy]].
* 96xx (old): anch'esso per schede datate (ma più recenti della serie precedente); è presente in Squeeze, Wheezy e nei [[Il repository Backports|backports]] di Wheezy.
* 173xx (legacy): altro driver per schede video datate. È presente nei backports di Wheezy.
* 304xx (legacy): driver per schede non recenti. È disponibile per Wheezy (dai backports), [[Jessie]] e [[Sid]].
* 319xx e 340xx: le versioni più recenti dei driver proprietari installate automaticamente dal pacchetto "nvidia-driver".


I files di configurazione di Apache risiedono nella directory '''/etc/apache''' al cui interno troviamo svariati files. Quello di cui ci occuperemo qui � il file di controllo principale e cio� '''httpd.conf'''. Apriamo il file con il nostro editor di fiducia (dobbiamo essere root per modificare questo file) e vediamo quali sono le direttive principali su cui agiremo.
Per capire quale versione deve essere installata, si può far ricorso al comando "nvidia-detect" disponibile dopo l'installazione del pacchetto omonimo:
<pre># apt-get install nvidia-detect</pre>
Dopo l'installazione del pacchetto è sufficiente un:
<pre>$ nvidia-detect</pre>


'''server-pool size'''
che suggerirà il [[pacchetto]] da installare per ottenere i driver proprietari necessari al funzionamento della propria scheda.
Alla riga 130 del file di configurazione originale troviamo il primo blocco da prendere in esame: si tratta della direttiva che dice ad Apache il numero minimo e massimo di processi "figlio" da mantenere in memoria. Ogni processo "figlio" risponde ad un numero prefissato di richieste, dopodich� viene ucciso (mondo crudele) e ne viene generato uno nuovo. Esaminiamo la direttiva:
<pre>MinSpareServers 5
MaxSpareServers 10</pre>
Come default Apache genera 5 processi, ma se il carico aumenta pu� arrivare fino a 10 figli simultanei. Per un sistema domestico � sicuramente eccessivo ed io consiglio di porre queste limitazioni:
<pre>MinSpareServers 1
MaxSpareServers 2</pre>


'''Number of servers to start initially'''
== Metodo 1: driver proprietari pacchettizzati ==
Questo blocco (riga 153) dice ad Apache quanti sono i figli da generare al momento dell' avvio del server. Il default �:
Utilizzando questo metodo i passi da seguire sono i seguenti, tutti abbastanza semplici se non banali.
<pre>StartServers 5</pre>
che noi cambieremo in:
<pre>StartServers 1</pre>


'''Listen'''
=== Installazione dei pacchetti ===
Questo blocco (riga 192) indica ad Apache su quale porta TCP restare in attesa di richeste http. E' anche possibile specificare una particolare accoppiata di indirizzo IP + porta TCP. Possiamo tranquillamente lasciare commentata la direttiva ed il nostro server sar� in ascolto sulla porta 80 per tutti gli indirizzi configurati sul sistema.
* Assicurarsi che sia presente la [[sezione]] <code>non-free</code> dei [[repository]] in <code>/etc/apt/sources.list</code>. Ad esempio (per [[Wheezy]]):<pre>deb http://ftp.it.debian.org/debian/ wheezy main contrib non-free</pre>
* Aggiornare la lista dei pacchetti:<pre># apt-get update</pre>
* Installare i pacchetti necessari al funzionamento della scheda, gli headers del kernel attualmente in uso e il tool di configurazione grafico:<pre># apt-get install nvidia-glx nvidia-settings linux-headers-`uname -r`</pre> come dipendenze verranno anche installati i pacchetti: <code>dkms, nvidia-kernel-common</code> e <code>nvidia-kernel-dkms</code> .<br/>L'installazione può essere ulteriormente semplificata ricorrendo ai suggerimenti di "nvidia-detect" (come spiegato in precedenza), per cui in genere è sufficiente il comando:<pre># apt-get install nomepacchetto</pre>dove ''nomepacchetto'' (tipicamente un [[metapacchetto]]) va sostituito con il nome del pacchetto suggerito da "nvidia-detect"; in questo modo verranno installati automaticamente tutti i pacchetti necessari.


'''BindAddress'''
=== Configurazione di Xorg ===
Alla riga 199 abbiamo la direttiva che specifica a quale specifico indirizzo IP associare Apache. Come per il punto precedente, lasciamo pure il valore di default.
Finita l'installazione, bisogna fare in modo che il server grafico sappia che si intende utilizzare il driver proprietario "nvidia". Si hanno diverse scelte:
* modificare la voce «Driver», specificando il driver "nvidia", nella sezione «Device» in <code>/etc/X11/xorg.conf</code> . Ad esempio una riga:<pre>...&#10;Driver "vesa"&#10;...</pre>diventerà:<pre>...&#10;Driver "nvidia"&#10;...</pre>Nel caso il file non dovesse esistere (caso comune in quanto il sistema rileva automaticamente le impostazioni della scheda video), crearlo con questo contenuto:<pre>Section "Device"&#10;Identifier  "nomescheda"&#10;Driver  "nvidia"&#10;EndSection</pre>(''nomescheda'' può essere scelto a proprio piacimento).<br/>Questo è il metodo consigliato in caso di assenza del file <code>/etc/X11/xorg.conf</code> .
* inserire la seguente sezione in un file in <code>/etc/X11/xorg.conf.d/</code> con estensione <code>.conf</code> e un nome a piacere, ad esempio <code>nvidia.conf</code> . Si noti che la directory, se mancante, deve essere preventivamente creata con il comando:<pre># mkdir /etc/X11/xorg.conf.d</pre>


'''ServerName'''
La sezione conterrà qualcosa di simile:
Con questa direttiva (alla linea 276) diciamo ad Apache quale � il suo nome. Questo � particolarmente utile nel caso abbiamo a disposizione un [[FQDN]] (a questo proposito puoi consultare la guida [[Server Web Casalingo]]).
<pre>
Section "Device"
Identifier "nVidia Corporation NV44 [GeForce 6200 TurboCache(TM)]"
Driver "nvidia"
BusID "PCI:1:0:0"
EndSection
</pre>
'''I dati qui sopra riportati, in particolare le voci «Identifier» e «BusID», sono solo di esempio ed equivalgono all'output opportunatamente adattato di'''
<pre>$ lspci | grep VGA
    01:00.0 VGA compatible controller: nVidia Corporation NV44 [GeForce 6200 TurboCache(TM)] (rev a1)</pre>
'''non vanno assolutamente presi alla lettera, se non si è sicuri usare i [[#Configuratori grafici|configuratori grafici]] appositi come illustrato più avanti.'''


'''DocumentRoot'''
In particolare:<br/>
Con questa direttiva (riga 284) indichiamo ad Apache quale directory del nostro sistema deve corrispondere alla radice del Web Server. Il default va pi� che bene: ricordatevi quindi che tutti i vostri files che volete pubblicare sul server http dovranno risiedere in '''/var/www''' o in una sua sotto-directory.
;Identifier:È la stringa che identifica la scheda video e può essere scelta a piacimento (le virgolette sono necessarie). Questa voce è obbligatoria.
;Driver:Il driver da utilizzare: lasciare la stringa "nvidia". Questa voce è obbligatoria.
;BusID:L'identificativo del bus su cui è presente la scheda video. Specificarlo solo se ci si trova nel raro caso in cui l'hardware non venga correttamente rilevato. Questa voce non è obbligatoria.


{{Warningbox|� fondamentale per il funzionamento di Apache che i files che devono essere visibili via Web siano leggibili da parte dell' utente '''www-data''' e che le sotto-directory di /var/www siano raggiunbili dallo stesso utente}}
Un esempio funzionante potrebbe essere:
Questo � il minimo indispensabile che ci occorre sapere per poter utilizzare proficuamente Apache: salviamo il file e procediamo a riavviare Apache. Per fare questo possiamo procedere in due modi distinti:
<pre>
* metodo standard <pre><nowiki># apachectl graceful
Section "Device"
/usr/sbin/apachectl graceful: httpd gracefully restarted</nowiki></pre>
Identifier "La mia scheda nvidia"
* metodo debian init.d <pre><nowiki># /etc/init.d/apache restart
Driver "nvidia"
Restarting apache.</nowiki></pre>
EndSection
Senza dubbio '''apachectl''' � il metodo da preferire. Oltre a riavviare Apache possiamo controllare altri aspetti del server web. Tra questi quello che inizialmente pu� risultare pi� comodo consiste nel controllo della sintassi del file di configurazione.<br>
</pre>
Facciamo un esempio:
Per informazioni sul file <code>/etc/X11/xorg.conf</code> si veda la [[#Creazione del file xorg.conf|sezione apposita]].
<pre># apachectl configtest
Syntax error on line 49 of /etc/apache/httpd.conf:
ServerType takes one argument, 'inetd' or 'standalone'</pre>
lo script mi avvisa che alla riga 49 di httpd.conf c'� un errore di sintassi: la direttiva ServerType supporta un solo argomento, mentre nel file ne sono specificati almeno 2. Se controllo �a riga incriminata scopro che:
<pre>ServerType is either inetd, or standalone. Inetd mode is only supported on</pre>
Noto subito che manca il commendo (#) a inizio riga, provvedo a reinserirlo e quindi controllo nuovamente la configurazione:
<pre># apachectl configtest
Syntax OK</pre>


Se non abbiamo fatto pasticci, una volta riavviato il server Apache, baster� puntare il nostro browser all' indirizzo '''http://127.0.0.1''' per vedere la pagina di default installata dal manutentore del pacchetto Debian:
=== Headers del kernel ===
[[Immagine:Apache_installazione.png|thumb|center|Pagina di Benvenuto di Apache]]
Se l'aggiornamento del kernel comporta un salto di ''minor revision'', ad esempio da 2.6.30 a 2.6.32 oppure da 2.6.32 a 2.6.34, bisogna necessariamente installare gli headers del nuovo kernel. Ciò avverrà in automatico se si è provveduto ad installare il [[metapacchetto]] <code>linux-headers-2.6-*</code> (ad esempio "linux-headers-amd64").<br/>
In mancanza degli [[headers]] per il nuovo kernel si otterrà, dopo che quest'ultimo è stato scelto al riavvio del sistema, l'impossibilità di far funzionare il server grafico con i vecchi driver "nvidia": tipicamente ci si trovera ad osservare una tetra schermata nera.<br/>
Per installare gli headers e nel caso non si abbia il metapacchetto:
<pre>
# apt-get install linux-headers-[TAB]
</pre>
se è stato installato il nuovo kernel ma non è stato ancora riavviato il sistema (premere il tasto [TAB] per attivare l'[[Come_abilitare_il_completamento_automatico_'avanzato'|autocompletamento]]).<br/>
Alternativamente:
<pre>
# apt-get install linux-headers-`uname -r`
</pre>
nel caso sia stato riavviato il sistema scegliendo il nuovo kernel dal menù di Grub.<br/>
Si noti che, nell'eventualità ci si trovasse davanti alla schermata nera, sarà necessario accedere a <code>tty1</code> tramite la combinazione di tasti "Ctrl+Alt+F1".


{{box|Nota Bene: Directory home degli utenti|Per default Apache permette anche a ciascun utente del sistema di avere una propria home. Poniamo l' esempio dell' utente '''pippo''': all' interno di /home/pippo l' utente dovr� semplicemente creare la directory '''public_html''' per poter accedere ai files in essa contenuti attraverso l' indirizzo '''http://127.0.0.1/~pippo/'''}}
Se si ha poca dimestichezza nel destreggiarsi tra pacchetti e loro versioni, si consiglia caldamente si installare il [[metapacchetto]] suggerito da "nvidia-detect" che permetterà di installare tutti gli headers necessari e di mantenerli aggiornati nel tempo. In questo modo ci si può dimenticare tutte le operazioni manuali di aggiornamento dovute al cambio di versione del [[kernel]]; a questo penserà automaticamente il sistema di gestione dei pacchetti [[APT]].


Ora non ci resta che inserire i nostri files in /var/www o nella nostra public_html per poter cominciare ad usare Apache!
=== Errori ===
Se si utilizza Debian stable e si ha una scheda grafica abbastanza recente, è facile che la versione di <code>nvidia-glx</code> presente nei repository sia troppo vecchia e il server X non parta lamentando qualcosa di simile a


====Supporto SSL====
<pre>Failed to initialize GLX extension (Compatible NVIDIA X driver not found)</pre>
Abilitando il supporto a SSL (Secure Socket Layer) � possibile instaurare un canale di comunicazione crittografato tra il nostro server web ed i browser che richiedono le pagine.


Tra i vantaggi in termini di sicurezza che l' uso di SSL comporta, segnalo:
Prima di valutare se tentare la sorte di apt-pinning selvaggi (se stai leggendo questa guida è probabilmente sconsigliato) o di passare al metodo due, è utile accertarsi che gli attuali driver supportino il modello della scheda:
* transito di informazioni sensibili (passwords, dati personali, ecc...) in internet attraverso un canale crittografato sicuro;
* accertamento dell' identit� del server e/o del client web tramite certificati digitali.


Il supporto SSL per Apache pu� essere abilitato in due modi distinti:
<pre>$ zless /usr/share/doc/nvidia-glx/README.txt.gz</pre>
* realizzazione di un nuovo server Apache con supporto SSL (vedi: '''apt-cache show apache-ssl''');
* implementazione di Apache e Apache SSL nel medesimo server grazie a mod_ssl.


In questa guida vedremo l' installazione e configurazione di '''mod_ssl'''.
una volta aperto il file premere il tasto "/" (slash), inserire a fianco il numero di serie della scheda ottenuto con:


Procediamo con l' installazione del pacchetto:
<pre>$ lspci | grep VGA
<pre>
    01:00.0 VGA compatible controller: nVidia Corporation NV44 [GeForce 6200 TurboCache(TM)] (rev a1)</pre>
# apt-get install libapache-mod-ssl
</pre>


===Apache 2.0===
quindi in questo caso sarà "GeForce 6200" e premere il tasto "Return" (invio):
====Installazione====
L'installazione di Apache2 � perfettamente uguale a quella precedentemente illustrata per Apache:
<pre>
# apt-get install apache2-mpm-prefork
</pre>


Il [[metapacchetto]] ''apache2'' � presente, ma installa '''apache2-mpm-worker''', che risulta non essere compatibile con '''libapache2-mod-php4'''.
<pre>/GeForce 6200 <invio></pre>


======I diversi pacchetti======
Si giungerà alla sezione che elenca tutte le serie supportate (è una semplice ricerca nel testo, più semplice a farsi che spiegarlo :)
La pacchettizzazione Debian, per�, � leggermente diversa, per poter gestire le nuove caratteristiche introdotte in Apache2: esistono quattro diversi pacchetti di Apache2, ognuno con delle caratteristiche diverse (relativamente alla gestione dei thread e dei child):
; apache2-mpm-perchild : la soluzione adottata in questo pacchetto fa in modo che vengano avviati un numero definito di processi, i quali possono creare dei thread in base al carico della macchina. Una peculiarit� � la possibilit� di assegnare dei permessi diversi ad ogni processo, vincolarlo ad un singono ''virtual host'', cos� da gestire facilmente la redistribuzione delle risorse e/o personalizzare il servizio offerto;
; apache2-mpm-prefork : I thread sono disabilitati, e la gestione dei '''pool di processi''' viene gestita come per Apache1 (''MinSpareServers'' e ''MaxSpareServers'');
; apache2-mpm-threadpool : pacchetto di transizione;
; apache2-mpm-worker : la soluzione � intermedia rispetto a perchild e prefork.


Quello che a noi interessa � '''apache2-mpm-prefork''', visto che � l'unico ad essere compatibile con le librerie che offrono il supporto per php4.
=== Rimozione ===
Se la vostra serie non risulta, disinstallate tutto e procedete con il metodo due:
<pre># aptitude purge ~nnvidia</pre>


====Verifica====
=== Verifica ===
Per verificare la corretta installazione di Apache2, � sufficiente aprire un browser ed inserire l'indirizzo [http://localhost/].
Da terminale eseguire
Se Apache � stato installato correttamente, apparir� una schermata simile a questa:
<pre>$ glxinfo | grep rendering
[[Immagine:Apache2_installazione.png|thumb|center|Schermata di benvenuto di Apache2]]
direct rendering: Yes
</pre>
Nel caso di risposta affermativa, i vostri driver dovrebbero essere pronti all'utilizzo.


====Configurazione====
In alternativa è possibile usare come strumento '''''glxgears''''', che si trova all'interno del pacchetto '''''mesa-utils'''''.
Le regole di configurazione viste precedentemente per Apache valgono anche per Apache2.<br />
Sono per� presenti delle sostanziali differenze a livello strutturale, per quanto riguarda la struttura della directory '''/etc/apache2''', che riguardano l'organizzazione dei file e la gestione dei ''VirtualHost'' e dei ''moduli''.


=====Organizzazione dei file=====
Glxgears è un semplicissimo programma che produce in una finestra l'animazione di tre ruote dentate che girano, e nel frattempo conta quanti frame al secondo riesce a generare il vostro sistema.
Durante il passaggio da Apache ad Apache2, sono state apportate delle modifiche ai file di configurazione, ai loro nomi e all'organizzazione delle directory contenenti le configurazione dei ''VirtualHost' e dei ''moduli'', il tutto per disporre di un sistema di gestione flessibile e facilmente gestibile:


======File di Configurazione======
Non è pensato per effettuare un vero benchmark, ma è solo un test indicativo, e i suoi risultati dipendono vistosamente dal moltissimi fattori come carico della CPU, dimensione della finestra di esecuzione e altri ancora.
Il file di configurazione di Apache2 si chiama '''apache2.conf''', ed adotta la stessa sintassi del vecchio file di configurazione '''httpd.conf''', che � ancora presente nella directory '''/etc/apache2''' e viene richiamato all'interno del file di configurazione generale, per motivi di compatibilit�... consiglio, comunque, di non utilizzarlo, in quando � un file di transizione, e in futuro potrebbe venir rimosso da apache2.


======Moduli======
=== Configuratori grafici ===
La gestione dei moduli ha subito una profonda modifica rispetto alla versione 1 di Apache: non � pi� legata ad un solo file, ma a due directory: '''/etc/apache2/mods-available''' e '''/etc/apache2/mods-enabled'''.
'''<code>nvidia-xconfig</code>''' aiuta a modificare i file di configurazione di X (quindi xorg.conf e simili) per inserire opzioni a volte difficili da comprendere o scovare.
; mods-available : contiene i file che permettono il caricamento dei moduli. I file presenti all'interno di questa directory sono divisibili, tramite le loro estensioni, in due categorie: i file con estensione ''.load'' contengono le istruzioni necessarie al caricameto dei moduli; i file con estensione ''.config'', invece, contengono le eventuali opzioni di configurazione da passare al modulo.


; mods-enables : contiene dei link ai file presenti nella directory '''mods-available'''. All'avvio di Apache verranno caricati i moduli i cui file di canfigurazione presentano un link in questa directory.
'''<code>nvidia-settings</code>''' permette di regolare alcuni parametri legati alla scheda video e al monitor quali luminosità, gamma, attributi XVideo, temperatura e configurazione OpenGL.


======Siti======
Alcune modifiche apportate, per avere effetto o per essere applicate in modo definitivo, richiedono che questi strumenti vengano eseguiti con i permessi di root attraverso '''<code>kdesu</code>''' oppure '''<code>gksu</code>'''.
In apache2, a differenza di apache1, tutti i siti vengono gestiti tramite ''siti''.
La struttura utilizzata per la gestione di questi � del tutto simile a quella dei moduli: sono presenti due directory: '''/etc/apache2/sites-available''' e '''/etc/apache2/sites-enabled''' che funzionano esattamente come illustrato precedentemente.
Il concetto � semplice: ogni file presente in '''sites-available''' rappresenta un sito, con tutti i sottodomini associati. Per abilitarli � sufficiente un link simbolico in '''sites-enabled'''.
Anche in questo caso, inoltre, apache2 mette a disposizione due comodi comandi per la gestione dei siti: '''a2ensite''' e '''a2dissite''', che hanno la funzione, rispettivamente, di attivare e disattivare un sito.


L'utilizzo di questi due tool � semplicissimo:
== Metodo 2: l'installer Nvidia ==
* se si lancia il comando senza parametri, verr� mostrata la lista di tutti i siti disponibili
=== Occorrente ===
* se si indica il sito su cui effettuare l'operazione, questa verr� eseguita.
Ecco di cosa abbiamo bisogno per l'installazione:
* Headers del kernel che stiamo utilizzando (occhio alle subversion, per controllare si può usare <code>uname -r</code>) o, in alternativa, i sorgenti dello stesso kernel (gli headers fanno parte dei sorgenti, ed esistono come pacchetto indipendente solo ed esclusivamente per poter compilare moduli fuori dal kernel senza dover scaricare tutto il kernel).
Per installarli, è sufficiente digitare:
# apt-get install linux-headers-`uname -r`


Per rendere effettive le modifiche � necessario riavviare apache2.
* Driver corretto per la nostra architettura scaricabile da [http://www.nvidia.com www.nvidia.com]


=====Supporto SSL=====
{{Box|Nota:|se avete compilato un kernel personalizzato, il pacchetto degli headers per il vostro kernel può non esistere, nel qual caso dovete usare i sorgenti del kernel configurati; se avete compilato un kernel personalizzato con kernel-package ([[Debian Kernel Howto]]), invece, potete generare e utilizzare il pacchetto kernel-headers con la stessa utility.}}
Per Apache2, a differenza di Apache1, non esiste un pacchetto '''apache-ssl''' per attivare il supporto [[Glossario:ssl | ssl]]. Per attivare il supporto ssl � necessario modificare la configurazione di apache.


Per abilitare il supporto, e creare i certificati necessari al funzionamento dell'ssl, bisogna installare openssl:
=== Cosa fare ===
<pre>
Prima di tutto occorre chiudere X. Non basta fare logout, bisogna proprio arrestare il server grafico: se avete installato un desktop manager andate in una console testuale (per es. con <code>Ctrl+Alt+F1</code>), e usate, da root:
# apt-get install openssl
</pre>


Oltre a questo, deve essere abilitato il modulo ''ssl'', con il comando prima descritto per la gestione dei moduli in Apache2:
<pre># invoke-rc.d gdm stop</pre>
<pre>
# a2enmod ssl
</pre>


Per la generazione del certificato, apache2 offre il comando:
se il vostro desktop manager è GDM, oppure:
<pre>
# apache2-ssl-certificate
</pre>
che, tramite una serie di domande, creer� nella direcotry '''/etc/apache2/ssl/''' due file: ''apache.pem'' ed il certificato.


Ora aggiungiamo un ''sito'' con supporto ssl: con il nostro editor preferito creiamo un file di testo in '''/etc/apache2/sites-available''' come nel seguente esempio (il nome del file pu� essere, ad esempio, '''default-ssl'''):
<pre># invoke-rc.d gdm3 stop</pre>
<pre>
NameVirtualHost *:443
<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile    /etc/apache2/ssl/apache.pem
    SSLCertificateKeyFile /etc/apache2/ssl/apache.pem


    ServerAdmin admin@dominio.org
se il vostro desktop manager è GDM3, oppure:
    ServerName server.dominio.org


    ErrorLog /var/log/apache2/error_ssl.log
<pre># invoke-rc.d kdm stop</pre>
    LogLevel warn
    CustomLog /var/log/apache2/access_ssl.log combined
    ServerSignature On
    DocumentRoot /var/www/apache2-default


    <Directory />
se il vostro desktop manager è KDM.
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/apache2-default>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>


    ScriptAlias /cgi-local/ /var/www/apache2-default/cgi-bin/
Ora, controllate (con <code>ls -l</code>) che il link <code>/usr/src/linux</code> punti agli headers del kernel in funzione o ai sorgenti.
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/var/www/apache2-default/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>


    <Directory "/usr/lib/cgi-bin">
In caso contrario,  
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>


    Alias /icons/ "/usr/share/apache2/icons/"
<pre># ln -s /usr/src/linux-`uname -r` linux</pre>
    Alias /manual/ "/usr/share/doc/apache2-doc/manual/"
 
    <Directory "/usr/share/apache2/icons">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
</pre>


Molte delle opzioni contenute nell'esempio sono prese pari pari dal file '''/etc/apache2/sites-available/default'''.  
Si noti che i sorgenti '''devono''' essere configurati esattamente come il nostro kernel corrente.


Mancano due modifiche, prima di avere il supporto ssl attivo: Apache non � in ascolto sulla porta 443, quella normalmente utilizzata da apache-ssl, e quindi lo dobbiamo istruire modificando il file '''/etc/apache2/ports.conf''' aggiungendo la riga:
Per fare un esempio supponiamo di aver installato il .deb dei sorgenti, e di doverli quindi configurare:
<pre>
<pre>
Listen 443
$ cd /usr/src
$ tar xvfj linux-source-xxx
$ cd linux-source-xxx
$ cp /boot/config-`uname -r` .config
$ make oldconfig
</pre>
</pre>


Come ultima cosa, importantissima, bisogna attivare il sito che abbiamo appena creato (sempre utilizzando i comodi comandi che Apache2 ci mette a disposizione). Sar� quindi sufficiente un
{{Warningbox|Potreste aver già installato un driver NVIDIA, in questo caso:
<pre>
#Se lo avete installato voi, allora questa guida non vi serve perché sapete già come fare :)
# a2ensite default-ssl
#Se ve lo ha installato un'altra persona, allora potete tranquillamente dire all'installer di sovrascriverlo se state installando una versione più aggiornata. }}
</pre>
questo se si � scelto di creare un file separato per i siti che avranno il supporto ssl... Un'altra pratica molto diffusa � quella di gestire ogni singolo sito come un file, quindi le direttive per l'abilitazione del supporto ssl vengono scritte all'interno del file ''generale'' di quel sito (in questo caso il file '''default''').


Per rendere effettive tutte le modifiche, riavviamo apache:
In una nuova installazione da Squeeze con il kernel 2.6.32-5 in poi, il driver libero nouveau è caricato in modo predefinito e interferirà con quello proprietario.
Occorre disattivare il caricamento di nouveau inserendo in <code>/etc/modprobe.d/blacklist.conf</code> le seguenti righe:
<pre>
<pre>
# /etc/init.d/apache2 restart
blacklist nouveau
</pre>
options nouveau modeset=0
</pre>  
quindi riavviare il sistema ed eseguire l'installer.


=====Far convivere Apache e Apache2=====
''The first line will prevent Nouveau’s kernel module from loading automatically at boot. It will not prevent manual loading of the module, and it will not prevent the X server from loading the kernel module.''  
Alcune volte pu� essere utile far convivere Apache1 e Apache2 sulla stessa macchina (magari durante un periodo di migrazione)...a tale proposito, � buona norma modificare il numero della porta su cui uno dei due server � in ascolto.
''The second line will prevent Nouveau from doing a kernel modeset. Without the kernel modeset, it is possible to unload Nouveau’s kernel module, in the event that it is accidentally or intentionally loaded.''
Normalmente si ''sposta'' Apache2 dalla porta '''80''' alla '''8080''' (sempre se su questa non � configurato un server proxy).


Per modificare la porta su cui Apache2 � in ascolto � sufficiente modificare il file '''/etc/apache/ports.conf''' sostituendo al numero '''80''', '''8080'''. Nel file '''ports.conf''' avremo, quindi, una riga come la seguente:
Per avviare l'installazione dobbiamo spostarci nella directory dove abbiamo salvato il driver Nvidia e dare il comando:
<pre>
Listen 8080
</pre>


=Il processore PHP=
<pre># sh NVIDIA-*</pre>
PHP � un [[acronimo ricorsivo]] per "PHP: Hypertext Preprocessor" e cio� "PHP: preprocessore ipertestuale". Questo significa che i nostri script non vengono elaborati dai client (in questo caso dai browser) come ad esempio nel caso di javascript, ma che vengono eseguiti direttamente sul server il quale fornisce ai clients semplici pagine html. Un linguiaggio di questo tipo viene chiamato anche '''server-side''' (lato server), in contrapposizione ai linguaggi '''client-side''' (lato client).


La cosa pi� interessante nell'uso di PHP � che si tratta di un linguaggio estremamente semplice per il principiante, ma che, tuttavia, offre molte prestazioni avanzate al programmatore di professione.
dove <code>NVIDIA-*</code> è il nome del driver che abbiamo scaricato.


Con PHP non siete limitati soltanto ad un output in HTML. Le possibilit� di PHP, infatti, includono l'abilit� di generare immagini, files PDF e perfino filmati Flash al volo (utilizzando libswf e Ming). Sarete in grado di generare facilmente qualsiasi testo, come XHTML e qualsiasi altro file XML. PHP pu� autogenerare questi file, e salvarli nel file system, piuttosto che eseguire un printing esterno, o creare server-side cache per contenuti dinamici.
{{Box|Aggiornamento:|con X.org 7.0 è cambiata la locazione dei driver del server grafico, ed è necessario dire all'installer dove deve mettere i driver, pena il non funzionamento dei driver stessi, e anche il probabile malfunzionamento delle applicazioni che usano OpenGL. Il comando per l'installazione diventa:


Una delle caratteristiche pi� importanti e significative di PHP � la possibilit` di supportare una completa gamma di databases. Scrivere una pagina web collegata ad un database � incredibilmente semplice.
<pre># sh NVIDIA-* --x-module-path=/usr/lib/xorg/modules/</pre>
Con le versioni più recenti dei driver la specificazione del percorso può essere omessa. }}


PHP fa anche da supporto per dialogare con altri servizi utilizzando i protocolli del tipo LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (in Windows) e innumerevoli altri. Potete anche aprire network sockets ed interagire usando qualsiasi altro protocollo. Inoltre supporta l'interscambio di dati complessi WDDX tra, virtualmente, tutti i linguaggi di programmazione web. A proposito di interconessioni, PHP supporta l'installazione dei JavaObjects e l'utilizzo di questi come oggetti PHP in modo trasparente. Si pu� anche usare la nostra estensione CORBA per accedere ad oggetti remoti.
Una volta avviato l'installer comparirà un menu interattivo che ci guiderà nell'installazione, dove dovremo rispondere alle domande dicendo che vogliamo installare il driver.
{{box|Nota Bene:|Questo elenco delle funzionalit� offerte da PHP � tratto dal manuale online di PHP e precisamente dal capitolo [http://it2.php.net/manual/it/intro-whatcando.php Che cosa pu� fare PHP?]}}


==Installazione==
Il nuovo installer permette l'aggiornamento automatico di <code>xorg.conf</code>. Potete farlo anche a mano, semplicemente modificando il file <code>/etc/X11/xorg.conf</code> come indicato nel metodo 1.
Anche installare PHP non � un compito per nulla complesso.
===PHP e Apache 1.3===
Vediamo subito come procedere a abilitare PHP per il nostro server Apache in maniera minimale:
<pre># apt-get install libapache-mod-php4</pre>
Apt scaricher� il modulo per Apache, le eventuali dipendenze e aggiorner� anche il file di configurazione dei moduli (/etc/apache/modules.conf).


Tutto quello che dovremo fare manualmente � di riavviare Apache, altrimenti non ci fornir� gli script Php elaborati, ma ci permetter� unicamente di scaricarli. Come abbiamo gi� visto nella sezione relativa all' installazione di Apache il comando �:
{{ Warningbox |
<pre># apachectl graceful
Durante l'installazione potremmo essere avvertiti del fatto che la versione di gcc non è corretta.
/usr/sbin/apachectl graceful: httpd gracefully restarted</pre>
Per verificare la corretta versione in uso usiamo il terminale:
 
<pre>
Ora, anche se a livello minimale, Apache � in grado fornire al nostro browser l' output degli script elaborati dal motore PHP. Non ci resta altro da fare che [[#Test|testarne]] il funzionamento.
$ cat /proc/version
 
Linux version 2.6.32-5-686 (Debian 2.6.32-15) (ben@decadent.org.uk)
===PHP e Apache 2.0===
(gcc version 4.3.5 (Debian 4.3.5-1) ) #1 SMP Tue Jun 1 04:59:47 UTC 2010
Per abilitare il Php in Apache2 bisogna installare il modulo apposito:
</pre>
in questo caso il comando da dare sarà:
<pre>
<pre>
# apt-get install libapache2-mod-php4
# CC=/usr/bin/gcc-4.3 sh NVIDIA*.run
</pre>
</pre>
}}
Se tutto è andato a buon fine, possiamo far ripartire il server grafico con il comando:
# invoke-rc.d gdm start


Durante l'installazione verr� aggiornata la configurazione di Apache2 per attivare il supporto a php4, inoltre verr� automaticamente riavviato il server Web.
se il vostro desktop manager è GDM, oppure:


==Test==
# invoke-rc.d gdm3 start
Il modo pi� semplice per testare la nostra installazione di PHP consiste nel preparare uno script e tentare di visualizzarlo nel nostro browser.


Possiamo procedere in due modi fondamentalmente: creare uno script nella '''DocumentRoot''' del server web, e cio� '''/var/www''' (se non l' avete modificata in ahttpd.conf) oppure nella nostra '''public_html.
se il vostro desktop manager è GDM3, oppure:


Nel caso vogliate creare o spostare files all' interno della DocumentRoot di Apache � indispensabile tenere sempre a mente che quella directory e le directory in essa contenute sono visibili anche da altri computer (nella eventuale lan o su internet): prestate estrema attenzione ai permessi di scrittura di questi files!
# invoke-rc.d kdm start


Un consiglio personale consiste nell' agire sempre come utente '''www-data''' quando operate nella DocumentRoot: vi risparmierete patemi in fatto di permessi e sicurezza. Per loggarci come utente www-data � sufficiente operare in questo modo:
se il vostro desktop manager è KDM.
<pre>$ whoami
keltik
$ su
Password:
# whoami
root
# su - www-data
$ whoami
www-data</pre>
Siamo cos� passati dal nostro utente normale all' utente root e da questo siamo diventati l' utente www-data (il passaggio tramite l' utente root ci evita di dover fornire la password per www-data). Avendo usato il comando '''su - ''' abbiamo effettuato un login vero e proprio, ereditando tutte le variabili locali per www-data.


Ora possiamo operare in tranquillit� nella DocumentRoot (che � anche la $HOME dell' utente www-data).
=== Driver Nvidia per diversi kernel ===
Molto spesso si avverte l'esigenza di dover avviare il driver Nvidia per ciascun kernel presente nel nostro sistema. L'installazione di default del driver per uno specifico kernel, infatti, rimuove una precedente installazione eseguita per un kernel differente; questo costringe ad avviare l'installer Nvidia ogni volta che si avvia un diverso kernel dal menù di Grub.


Se invece scegliamo di usare la nostra public_html, non dovremo fare altro che creare il file al suo interno usando il nostro utente normale.
Per evitare questo fastidio basta lanciare l'installer passandogli l'opzione <code>''''-K''''</code>. Specificando l' opzione <code>''''kernel --kernel-name=***''''</code> verrà installato solo il modulo Nvidia per il kernel desiderato senza disinstallare il precedente driver, il tutto si può fare da una sessione terminale senza spegnere X o uscire dal nostro DE/WM:


Usiamo il nostro editor preferito e creiamo il file prova.php che conterr� questo codice:
Dove *** è la versione del kernel per cui si vuole compilare il modulo ad esempio per ''linux-image-3.1.0-1-amd64'' sarà :
<pre><?php phpinfo(); ?></pre>
<pre>
# sh NVIDIA-* -K --kernel-name=3.1.0-1-amd64
</pre>
Questo comando presuppone che il driver Nvidia sia già stato installato almeno una volta con il metodo descritto nel precedente paragrafo e che la versione del driver sia esattamente la stessa del modulo che si va ad installare.


{{box|Nota Bene|Aldil� di quale sia il vostro editor preferito, consiglio caldamente di imparare quantomeno i rudimenti di '''vi''': questo editor testuale infatti � presente nella quasi totalit� dei sistemi operativi *nix, � molto pratico anche durante sessioni telnet o ssh e - con un minimo di allenamento - dispone di tutta la potenza necessaria ad un editor di codice}}
=== Disinstallazione ===
Per rimuovere i driver installati con questo metodo, è sufficiente arrestare il server grafico ed eseguire:
<pre># sh NVIDIA*.run --uninstall</pre>


Se tutto andato bene, puntando il browser all' indiritto http://127.0.0.1/prova.php (nel caso di aver usato la DocumentRoot) oppure http://127.0.0.1/~utente/prova.php vedremo una pagina html che riporta molte informazioni utili sul nostro nuovo ambiente di sviluppo (versione del software, moduli di apache, moduli di php, variabili di ambiente, ecc...).


=Il Database Server=
== Metodo 3: module-assistant ==
==MySQL==
=== Occorrente ===
Passiamo adesso ad installare il server di database MySQL.
Per usare questo metodo è sufficiente una connessione ad internet, oltre, ovviamente, a module-assistant: se non l'abbiamo:
<pre># apt-get install mysql-server</pre>
<pre># aptitude install module-assistant</pre>
che, oltre al server MySQL, installer� per noi anche il client, alcuni tools e le librerie indispensabili.


A questo punto il server MySQL dovrebbe essere installato ed avviato automaticamente. Possiamo controllare usando il solito comando '''ps''' oppure '''/etc/init.d/mysql status'''.
=== Cosa fare ===
{{Warningbox|MySQL inizialmente � accessibile unicamente all' utente '''root''' senza alcuna password.}}
Come per l'altro metodo, bisogna arrestare il server grafico, e poi non dobbiamo fare altro che eseguire module-assistant:
{{box|Nota Bene:|Negli esempi seguenti ho digitando i comandi mysql su righe diverse per renderli pi� leggibili, ma nulla vieta di scrivere tutto di seguito sulla medesima linea.}}
La nostra prima preoccupazione dovrebbe essere senz' altro quella di impostare una passowrd per l' utente root. Ecco come fare:
<pre>
<pre>
$ mysql -u root
<Ctrl+Alt+F1> ----> login come root
mysql> SET PASSWORD
    -> FOR root@localhost
    -> =
    -> PASSWORD('la_tua_password')
    -> ;
Query OK, 0 rows affected (0.08 sec)


mysql> exit
# invoke-rc.d kdm stop
Bye
# m-a
$
</pre>
</pre>
{{box|Nota Bene:|Se non funziona il comando '''mysql -u root''' provare con '''mysql -u root -p''' e se richiede la password lasciarla vuota e premere invio.}}
 
Se ora proviamo a loggarci nuovamente, dovremmo vederci negato l' accesso in questo modo:
module-assistant ci mostra un menu grafico (ncurses) tramite il quale dobbiamo, nell'ordine:
* aggiornare la lista dei pacchetti disponibili;
* preparare il sistema per la compilazione;
* selezionare il modulo da compilare dalla lista fornita;
* compilare;
* installare il pacchetto ottenuto;
 
il tutto senza uscire da m-a.
 
{{Box|Nota:|module-assistant si occupa automaticamente di installare un compilatore se non l'avete, e anche gli headers del kernel. Se possedete già gli headers giusti, o anche l'intero kernel (che, ricordo, deve essere configurato esattamente come il vostro kernel) è sufficiente controllare di avere impostato il link simbolico <code>/usr/src/linux</code> in modo che punti agli headers o ai sorgenti:
<pre>
<pre>
$ mysql -u root
# ln -s /usr/src/linux-headers-xxx /usr/src/linux
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
</pre>}}
</pre>
 
Riproviamo usando la password che abbiamo scelto in precedenza:
A questo punto bisogna modificare <code>/etc/X11/xorg.conf</code>, nella sezione "Device", in modo che nella riga "Driver" sia scritto <code>'''nvidia'''</code> (di solito al posto di <code>'''nv'''</code> o <code>'''vesa'''</code>), inoltre bisogna sostituire, nella sezione "Module", le righe:
<pre>
<pre>
$ mysql -u root -pla_tua_password
Load    "dri"
Welcome to the MySQL monitor.  Commands end with ; or \g.
Load    "GLcore"
</pre>
</pre>
{{box|Nota Bene:|Lo switch "-p" usato nel comando ''mysql'' prevede che la password venga digitata '''senza spazi tra il -p e la password effettiva'''. Non si tratta di un mio errore di battitura!<br> Se invece usiamo lo switch "-p" senza specificare alcuna password, questa ci verr� richiesta interattivamente.}}
con la riga:
Usare utenti con privilegi alti non � mai una buona idea, per cui provvediamo a creare un utente a cui concederemo i privilegi minimi (ma al quale potremo dare privilegi pi� alti per database specifici):
<pre>
<pre>
mysql> GRANT USAGE ON *.*
Load    "glx"
    -> TO 'utente'@'localhost'
    -> IDENTIFIED BY 'la_tua_password'
    -> ;
Query OK, 0 rows affected (0.02 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.04 sec)
</pre>
</pre>
Se ora proviamo a loggarci con il nuovo utente, dovremmo riuscire ad autenticarci usando le credenziali specificate con il comando GRANT.


Ora creiamo un database nuovo:
Se invece di una nuova installazione state facendo un aggiornamento, è probabile che sia ancora in memoria il modulo vecchio: potete controllare con:
<pre>
<pre>
mysql> CREATE DATABASE prova;
$ lsmod | grep nvidia
Query OK, 1 row affected (0.00 sec)
 
mysql> show databases;
+----------+
| Database |
+----------+
| mysql    |
| prova    |
| test    |
+----------+
3 rows in set (0.02 sec)
</pre>
</pre>
ed assegnamo all' utente che abbiamo creato in precedenza piena diritti di amministrazione al database:
se il modulo viene elencato non dovete fare altro che rimuoverlo prima di riavviare il server grafico (da root):
<pre>
<pre>
mysql> GRANT ALL PRIVILEGES
# rmmod nvidia
    -> ON prova.*
</pre>
    -> TO 'utente'@'localhost'
    -> ;
Query OK, 0 rows affected (0.02 sec)


mysql> FLUSH PRIVILEGES;
Ora non resta che installare i driver per xfree/xorg (che sono sempre proprietari, ma non sono da compilare, e in Debian sono in un pacchetto a parte) e, volendo, anche il tool grafico per configurarli, e poi si può avviare X:
Query OK, 0 rows affected (0.04 sec)
<pre>
# aptitude install nvidia-glx nvidia-settings
# invoke-rc.d kdm start
</pre>
</pre>
Se ora ci logghiamo con il nostro utente e chiediamo una lista dei database, vedremo unicamente quelli su cui abbiamo privilegi:
 
 
== Opzioni utili ==
In <code>/etc/X11/xorg.conf</code> ci sono alcune opzioni specifiche del driver Nvidia che si possono inserire nella sezione "Device", per esempio se non vogliamo vedere il logo Nvidia ad ogni avvio possiamo inserire:
<pre>
<pre>
mysql> show databases;
Option "NoLogo" "1"
+----------+
| Database |
+----------+
| prova    |
+----------+
1 row in set (0.00 sec)
</pre>
</pre>
Selezioniamo il database su cui operare col comando:
invece per usare il codice AGP del driver proprietario invece di quello libero possiamo inserire:
<pre>
<pre>
mysql> USE prova;
Option "NvAGP" "On"
</pre>
</pre>
Ora creiamo una tabella all' interno del database ''prova'', giusto per verificare che sia tutto a posto:
personalmente con questa opzione attivata riscontro con glxgears un aumento di prestazioni pari al 50%.
 
In certi casi ci possono essere dei problemi nell'uso di un monitor esterno su di un laptop:  per ovviare all'inconveniente si può provare ad aggiungere:
<pre>
<pre>
mysql> CREATE TABLE tabella (colonna1 VARCHAR(20), colonna2 VARCHAR(20));
Option "UseEDID" "0"
Query OK, 0 rows affected (0.42 sec)
</pre>


mysql> DESCRIBE tabella;
Per abilitare l'uso dell'uscita TV come monitor addizionale (ove disponibile):
+----------+-------------+------+-----+---------+-------+
<pre>
| Field    | Type        | Null | Key | Default | Extra |
Option "TwinView"
+----------+-------------+------+-----+---------+-------+
| colonna1 | varchar(20) | YES  |    | NULL    |      |
| colonna2 | varchar(20) | YES  |    | NULL    |      |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.08 sec)
</pre>
</pre>


Se non abbiamo ottenuto errori passiamo al punto successivo, altrimenti verifichiamo tutti i passaggi precedenti.
Se l'immagine sulla TV risulta essere in bianco e nero o con i colori falsati occorre impostare lo standard video utilizzato:
 
==MySQL e PHP==
Per poter usare MySQL attraverso pagine PHP dobbiamo installareil modulo '''php4-mysql''' e riavviare Apache:
<pre>
<pre>
# apt-get install php4-mysql
Option "TVStandard" "PAL-B"
# apachectl graceful
/usr/sbin/apachectl graceful: httpd gracefully restarted
</pre>
</pre>


Ora possiamo verificare se siamo effettivamente in grado di accedere a MySQL.<br>
Ci sono molte altre opzioni possibili, che trovate elencate, su Debian, in <code>/usr/share/doc/nvidia-glx/README.txt.gz</code>.
La procedura � simile a quella vista in precedenza per testare la corretta installazione di PHP:
* logghiamoci come utente root oppure spostiamoci nella nostra directory '''public_html''';
* creaimo il file mysql.php che conterr� questo codice:
<pre><nowiki>
<?php


// si collega al database, altrimenti esce e ritorna un errore
===Creazione del file xorg.conf===
<span id="xtemplate">Se il file <code>/etc/X11/xorg.conf</code> non fosse presente e si necessita averlo anche solo come template allora bisogna crearlo.</span> <br>
Prima di tutto occorre chiudere X. Non basta fare logout, bisogna proprio arrestare il server grafico: se avete installato un desktop manager andate in una console testuale (per es. con <code>Ctrl+Alt+F1</code>), e usate, da root:
<pre># invoke-rc.d gdm stop</pre>


mysql_connect('localhost','utente','la_tua_password') or die(mysql_error());
se il vostro desktop manager è GDM, oppure:


?></nowiki>
<pre># invoke-rc.d gdm3 stop</pre>
</pre>
 
* apriamo un browser e puntiamolo alla pagina appena creata ( http://localhost/mysql.php oppure http://localhost/~utente/mysql.php);
se il vostro desktop manager è GDM3, oppure:
** se quello che vediamo � una pagina bianca, significa che PHP � in grado di dialogare con MySQL;
 
** se otteniamo l' errore '''Fatal error: call to undefined function - mysql_connect()''' significa che il modulo php4-mysql non � stato installato correttamente o che non abbiamo riavviato Apache;
<pre># invoke-rc.d kdm stop</pre>
** se otteniamo l' errore '''Warning: mysql_connect(): Access denied for user: xxxxxxxx''' significa che abbiamo scritto male le credenziali da utilizzare.
 
se il vostro desktop manager è KDM.


==PhpMyAdmin==
Quindi eseguire:
Questo software � un validissimo alleato nel lavoro quotidiano di manutenere un server MySQL, anche se in locale e/o domestico: tra i suoi pregi segnalo l' ottima usabilit� e l' interfaccia web.
<pre># Xorg -configure</pre>


Questo pacchetto si installa con il comando:
Il file in questione è generato tramite un rivelamento automatico dell'hardware ma di fatto contiene parecchie voci ormai inutili come ad esempio i moduli o i path dei font che vengono già normalmente caricati. È utile per prendere spunto sulla sintassi e fare modifiche particolari ma non direttamente necessario al funzionamento dei driver.
<pre>
# apt-get install phpmyadmin php4 php4-gd
</pre>
Ci verr� quindi chiesto quale server http dovr� essere riconfigurato automaticamente. In base alla versione di Apache che abbiamo installato in precedenza possiamo scegliere '''apache''' oppure '''apache2'''.


Al termine della configurazione scegliamo di riavviare Apache e cominciamo subito ad utilizzare PhpMyAdmin puntando il browser all'indirizzo http://localhost/phpmyadmin/
Una volta creato si consiglia di dargli una bella pulita e usare solo le parti necessarie quindi spostarlo nella giusta posizione:
<pre># mv /root/xorg.conf.new /etc/X11/xorg.conf</pre>


[[Immagine:Phpmyadmin_table.png|thumb|center|Schermata di esempio di PhpMyAdmin]]
o meglio ancora utilizzare le configurazioni modulari come descritto nel metodo uno.


=Conclusioni=
Quindi possiamo far ripartire il server grafico:
Ora si ha a disposizione un sistema completo per l'utilizzo di script in php (ed anche per il loro sviluppo).
<pre># invoke-rc.d gdm start</pre>
se il vostro desktop manager è GDM, oppure:
<pre># invoke-rc.d gdm3 start</pre>
se il vostro desktop manager è GDM3, oppure:
<pre># invoke-rc.d kdm start</pre>
se il vostro desktop manager è KDM.


{{Autori
|Autore= [[Utente:Bedo|Bedo]]
|Estesa_da=
:[[Utente:tindal|tindal]] (Correzioni, metodo 2, verifica e opzioni utili)
:[[Utente:test|test]] (Opzioni TV e altre correzioni minori)
:[[Utente:die_z|die_z]] (Modifica nota per kernel personalizzati (kernel-package))
|Verificata_da=
:[[Utente:Mm-barabba|barabba]]
|Numero_revisori=1
}}


----
[[Categoria:Schede video]]
Autore: [[Utente:Keltik|Keltik]] 07:20, Giu 20, 2005 (EDT)<br/>
[[Categoria:Linux]]
[[Utente:MaXeR|MaXeR]] 07:59, Lug 18, 2005 (EDT)

Versione attuale delle 22:45, 19 giu 2016

Lock.png ATTENZIONE: questa guida tratta software a sorgente chiuso e potenzialmente non conforme alle Debian Free Software Guidelines.
Valutare la possibilità di utilizzare i driver liberi "nouveau" che supportano egregiamente la maggioranza delle schede Nvidia. Potrebbe essere necessario utilizzare un kernel recente (ad esempio prelevato dai backports per chi utilizza una stable) nel caso si abbiano problemi di riconoscimento della periferica o di configurazione del driver.


Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 6 "squeeze"
Debian 7 "wheezy"

Introduzione

L'installazione dei driver proprietari Nvidia su Debian si può fare in tre modi, tutti abbastanza semplici da mettere in pratica.

Il primo metodo prevede l'installazione dei driver proprietari utilizzando i pacchetti presenti nei repository di Debian.
Il vantaggio di questo metodo consiste nella possibilità di usufruire degli aggiornamenti direttamente dai repository di Debian oltre al fatto di non dover ricompilare il modulo della scheda video all'aggiornamento del kernel. Di questo se ne occuperà il DKMS.

Il secondo metodo prevede di utilizzare l'installer automatico fornito da Nvidia: si tratta di uno script per la shell che tramite un menu ci guida nell'installazione, questo è però destinato agli sviluppatori pertanto ne è sconsigliato l'uso all'utente finale; se si intraprende questa strada verrà aggirato il sistema di gestione dei pacchetti (APT nel caso di Debian, ma anche qualunque altro), con il risultato che questo non saprà mai dell'esistenza del modulo e non potrà aiutarci nella gestione di eventuali dipendenze o conflitti con altri pacchetti.

Il terzo metodo utilizza un tool specifico di Debian: module-assistant. Module-assistant è un programma che permette di automatizzare la compilazione di molti moduli proprietari, e la creazione di pacchetti .deb contenenti i moduli compilati, per la successiva installazione tramite APT. Lo svantaggio di questo metodo è che non tutte le versioni dei driver sono disponibili (vedi il paragrafo successivo "Versioni del driver") e, per quelle che ci sono, gli aggiornamenti arrivano sempre con qualche giorno di ritardo rispetto all'installer, come è ovvio che sia.

Info.png Nota:
con l'inserimento dell'infrastruttura DKMS questo terzo metodo non è più necessario e viene mantenuto per retrocompatibilità.


Info.png Nota
I comandi di questa guida necessitano di interfacciarsi con il sistema attraverso un terminale oppure un emulatore di terminale. Pertanto potrebbe essere necessario, in caso di errata o mancata configurazione dei driver o di mancato riconoscimento delle periferiche che portano a un server grafico non funzionante (schermo nero in avvio), premere la combinazione di tasti "Ctrl+Alt+F1" per accedere a tty1.


Warning.png ATTENZIONE
Si raccomanda di usare uno solo dei tre metodi proposti.


Versioni del driver

Attualmente esistono nei repository varie serie di driver NVIDIA:

  • 71xx (old): supporta solo le schede video più datate ed è presente in Wheezy.
  • 96xx (old): anch'esso per schede datate (ma più recenti della serie precedente); è presente in Squeeze, Wheezy e nei backports di Wheezy.
  • 173xx (legacy): altro driver per schede video datate. È presente nei backports di Wheezy.
  • 304xx (legacy): driver per schede non recenti. È disponibile per Wheezy (dai backports), Jessie e Sid.
  • 319xx e 340xx: le versioni più recenti dei driver proprietari installate automaticamente dal pacchetto "nvidia-driver".

Per capire quale versione deve essere installata, si può far ricorso al comando "nvidia-detect" disponibile dopo l'installazione del pacchetto omonimo:

# apt-get install nvidia-detect

Dopo l'installazione del pacchetto è sufficiente un:

$ nvidia-detect

che suggerirà il pacchetto da installare per ottenere i driver proprietari necessari al funzionamento della propria scheda.

Metodo 1: driver proprietari pacchettizzati

Utilizzando questo metodo i passi da seguire sono i seguenti, tutti abbastanza semplici se non banali.

Installazione dei pacchetti

  • Assicurarsi che sia presente la sezione non-free dei repository in /etc/apt/sources.list. Ad esempio (per Wheezy):
    deb http://ftp.it.debian.org/debian/ wheezy main contrib non-free
  • Aggiornare la lista dei pacchetti:
    # apt-get update
  • Installare i pacchetti necessari al funzionamento della scheda, gli headers del kernel attualmente in uso e il tool di configurazione grafico:
    # apt-get install nvidia-glx nvidia-settings linux-headers-`uname -r`
    come dipendenze verranno anche installati i pacchetti: dkms, nvidia-kernel-common e nvidia-kernel-dkms .
    L'installazione può essere ulteriormente semplificata ricorrendo ai suggerimenti di "nvidia-detect" (come spiegato in precedenza), per cui in genere è sufficiente il comando:
    # apt-get install nomepacchetto
    dove nomepacchetto (tipicamente un metapacchetto) va sostituito con il nome del pacchetto suggerito da "nvidia-detect"; in questo modo verranno installati automaticamente tutti i pacchetti necessari.

Configurazione di Xorg

Finita l'installazione, bisogna fare in modo che il server grafico sappia che si intende utilizzare il driver proprietario "nvidia". Si hanno diverse scelte:

  • modificare la voce «Driver», specificando il driver "nvidia", nella sezione «Device» in /etc/X11/xorg.conf . Ad esempio una riga:
    ...
    Driver "vesa"
    ...
    diventerà:
    ...
    Driver "nvidia"
    ...
    Nel caso il file non dovesse esistere (caso comune in quanto il sistema rileva automaticamente le impostazioni della scheda video), crearlo con questo contenuto:
    Section "Device"
    Identifier  "nomescheda"
    Driver  "nvidia"
    EndSection
    (nomescheda può essere scelto a proprio piacimento).
    Questo è il metodo consigliato in caso di assenza del file /etc/X11/xorg.conf .
  • inserire la seguente sezione in un file in /etc/X11/xorg.conf.d/ con estensione .conf e un nome a piacere, ad esempio nvidia.conf . Si noti che la directory, se mancante, deve essere preventivamente creata con il comando:
    # mkdir /etc/X11/xorg.conf.d

La sezione conterrà qualcosa di simile:

Section "Device"
	Identifier	"nVidia Corporation NV44 [GeForce 6200 TurboCache(TM)]"
	Driver		"nvidia"
	BusID		"PCI:1:0:0"
EndSection

I dati qui sopra riportati, in particolare le voci «Identifier» e «BusID», sono solo di esempio ed equivalgono all'output opportunatamente adattato di

$ lspci | grep VGA
     01:00.0 VGA compatible controller: nVidia Corporation NV44 [GeForce 6200 TurboCache(TM)] (rev a1)

non vanno assolutamente presi alla lettera, se non si è sicuri usare i configuratori grafici appositi come illustrato più avanti.

In particolare:

Identifier
È la stringa che identifica la scheda video e può essere scelta a piacimento (le virgolette sono necessarie). Questa voce è obbligatoria.
Driver
Il driver da utilizzare: lasciare la stringa "nvidia". Questa voce è obbligatoria.
BusID
L'identificativo del bus su cui è presente la scheda video. Specificarlo solo se ci si trova nel raro caso in cui l'hardware non venga correttamente rilevato. Questa voce non è obbligatoria.

Un esempio funzionante potrebbe essere:

Section "Device"
	Identifier	"La mia scheda nvidia"
	Driver		"nvidia"
EndSection

Per informazioni sul file /etc/X11/xorg.conf si veda la sezione apposita.

Headers del kernel

Se l'aggiornamento del kernel comporta un salto di minor revision, ad esempio da 2.6.30 a 2.6.32 oppure da 2.6.32 a 2.6.34, bisogna necessariamente installare gli headers del nuovo kernel. Ciò avverrà in automatico se si è provveduto ad installare il metapacchetto linux-headers-2.6-* (ad esempio "linux-headers-amd64").
In mancanza degli headers per il nuovo kernel si otterrà, dopo che quest'ultimo è stato scelto al riavvio del sistema, l'impossibilità di far funzionare il server grafico con i vecchi driver "nvidia": tipicamente ci si trovera ad osservare una tetra schermata nera.
Per installare gli headers e nel caso non si abbia il metapacchetto:

# apt-get install linux-headers-[TAB]

se è stato installato il nuovo kernel ma non è stato ancora riavviato il sistema (premere il tasto [TAB] per attivare l'autocompletamento).
Alternativamente:

# apt-get install linux-headers-`uname -r`

nel caso sia stato riavviato il sistema scegliendo il nuovo kernel dal menù di Grub.
Si noti che, nell'eventualità ci si trovasse davanti alla schermata nera, sarà necessario accedere a tty1 tramite la combinazione di tasti "Ctrl+Alt+F1".

Se si ha poca dimestichezza nel destreggiarsi tra pacchetti e loro versioni, si consiglia caldamente si installare il metapacchetto suggerito da "nvidia-detect" che permetterà di installare tutti gli headers necessari e di mantenerli aggiornati nel tempo. In questo modo ci si può dimenticare tutte le operazioni manuali di aggiornamento dovute al cambio di versione del kernel; a questo penserà automaticamente il sistema di gestione dei pacchetti APT.

Errori

Se si utilizza Debian stable e si ha una scheda grafica abbastanza recente, è facile che la versione di nvidia-glx presente nei repository sia troppo vecchia e il server X non parta lamentando qualcosa di simile a

Failed to initialize GLX extension (Compatible NVIDIA X driver not found)

Prima di valutare se tentare la sorte di apt-pinning selvaggi (se stai leggendo questa guida è probabilmente sconsigliato) o di passare al metodo due, è utile accertarsi che gli attuali driver supportino il modello della scheda:

$ zless /usr/share/doc/nvidia-glx/README.txt.gz

una volta aperto il file premere il tasto "/" (slash), inserire a fianco il numero di serie della scheda ottenuto con:

$ lspci | grep VGA
     01:00.0 VGA compatible controller: nVidia Corporation NV44 [GeForce 6200 TurboCache(TM)] (rev a1)

quindi in questo caso sarà "GeForce 6200" e premere il tasto "Return" (invio):

/GeForce 6200 <invio>

Si giungerà alla sezione che elenca tutte le serie supportate (è una semplice ricerca nel testo, più semplice a farsi che spiegarlo :)

Rimozione

Se la vostra serie non risulta, disinstallate tutto e procedete con il metodo due:

# aptitude purge ~nnvidia

Verifica

Da terminale eseguire

$ glxinfo | grep rendering
direct rendering: Yes

Nel caso di risposta affermativa, i vostri driver dovrebbero essere pronti all'utilizzo.

In alternativa è possibile usare come strumento glxgears, che si trova all'interno del pacchetto mesa-utils.

Glxgears è un semplicissimo programma che produce in una finestra l'animazione di tre ruote dentate che girano, e nel frattempo conta quanti frame al secondo riesce a generare il vostro sistema.

Non è pensato per effettuare un vero benchmark, ma è solo un test indicativo, e i suoi risultati dipendono vistosamente dal moltissimi fattori come carico della CPU, dimensione della finestra di esecuzione e altri ancora.

Configuratori grafici

nvidia-xconfig aiuta a modificare i file di configurazione di X (quindi xorg.conf e simili) per inserire opzioni a volte difficili da comprendere o scovare.

nvidia-settings permette di regolare alcuni parametri legati alla scheda video e al monitor quali luminosità, gamma, attributi XVideo, temperatura e configurazione OpenGL.

Alcune modifiche apportate, per avere effetto o per essere applicate in modo definitivo, richiedono che questi strumenti vengano eseguiti con i permessi di root attraverso kdesu oppure gksu.

Metodo 2: l'installer Nvidia

Occorrente

Ecco di cosa abbiamo bisogno per l'installazione:

  • Headers del kernel che stiamo utilizzando (occhio alle subversion, per controllare si può usare uname -r) o, in alternativa, i sorgenti dello stesso kernel (gli headers fanno parte dei sorgenti, ed esistono come pacchetto indipendente solo ed esclusivamente per poter compilare moduli fuori dal kernel senza dover scaricare tutto il kernel).

Per installarli, è sufficiente digitare:

# apt-get install linux-headers-`uname -r`
  • Driver corretto per la nostra architettura scaricabile da www.nvidia.com
Info.png Nota:
se avete compilato un kernel personalizzato, il pacchetto degli headers per il vostro kernel può non esistere, nel qual caso dovete usare i sorgenti del kernel configurati; se avete compilato un kernel personalizzato con kernel-package (Debian Kernel Howto), invece, potete generare e utilizzare il pacchetto kernel-headers con la stessa utility.


Cosa fare

Prima di tutto occorre chiudere X. Non basta fare logout, bisogna proprio arrestare il server grafico: se avete installato un desktop manager andate in una console testuale (per es. con Ctrl+Alt+F1), e usate, da root:

# invoke-rc.d gdm stop

se il vostro desktop manager è GDM, oppure:

# invoke-rc.d gdm3 stop

se il vostro desktop manager è GDM3, oppure:

# invoke-rc.d kdm stop

se il vostro desktop manager è KDM.

Ora, controllate (con ls -l) che il link /usr/src/linux punti agli headers del kernel in funzione o ai sorgenti.

In caso contrario,

# ln -s /usr/src/linux-`uname -r` linux

Si noti che i sorgenti devono essere configurati esattamente come il nostro kernel corrente.

Per fare un esempio supponiamo di aver installato il .deb dei sorgenti, e di doverli quindi configurare:

$ cd /usr/src
$ tar xvfj linux-source-xxx
$ cd linux-source-xxx
$ cp /boot/config-`uname -r` .config
$ make oldconfig
Warning.png ATTENZIONE
Potreste aver già installato un driver NVIDIA, in questo caso:
  1. Se lo avete installato voi, allora questa guida non vi serve perché sapete già come fare :)
  2. Se ve lo ha installato un'altra persona, allora potete tranquillamente dire all'installer di sovrascriverlo se state installando una versione più aggiornata.


In una nuova installazione da Squeeze con il kernel 2.6.32-5 in poi, il driver libero nouveau è caricato in modo predefinito e interferirà con quello proprietario. Occorre disattivare il caricamento di nouveau inserendo in /etc/modprobe.d/blacklist.conf le seguenti righe:

blacklist nouveau
options nouveau modeset=0

quindi riavviare il sistema ed eseguire l'installer.

The first line will prevent Nouveau’s kernel module from loading automatically at boot. It will not prevent manual loading of the module, and it will not prevent the X server from loading the kernel module. The second line will prevent Nouveau from doing a kernel modeset. Without the kernel modeset, it is possible to unload Nouveau’s kernel module, in the event that it is accidentally or intentionally loaded.

Per avviare l'installazione dobbiamo spostarci nella directory dove abbiamo salvato il driver Nvidia e dare il comando:

# sh NVIDIA-*

dove NVIDIA-* è il nome del driver che abbiamo scaricato.

Info.png Aggiornamento:
con X.org 7.0 è cambiata la locazione dei driver del server grafico, ed è necessario dire all'installer dove deve mettere i driver, pena il non funzionamento dei driver stessi, e anche il probabile malfunzionamento delle applicazioni che usano OpenGL. Il comando per l'installazione diventa:
# sh NVIDIA-* --x-module-path=/usr/lib/xorg/modules/

Con le versioni più recenti dei driver la specificazione del percorso può essere omessa.


Una volta avviato l'installer comparirà un menu interattivo che ci guiderà nell'installazione, dove dovremo rispondere alle domande dicendo che vogliamo installare il driver.

Il nuovo installer permette l'aggiornamento automatico di xorg.conf. Potete farlo anche a mano, semplicemente modificando il file /etc/X11/xorg.conf come indicato nel metodo 1.

Warning.png ATTENZIONE

Durante l'installazione potremmo essere avvertiti del fatto che la versione di gcc non è corretta. Per verificare la corretta versione in uso usiamo il terminale:

$ cat /proc/version
Linux version 2.6.32-5-686 (Debian 2.6.32-15) (ben@decadent.org.uk) 
(gcc version 4.3.5 (Debian 4.3.5-1) ) #1 SMP Tue Jun 1 04:59:47 UTC 2010

in questo caso il comando da dare sarà:

# CC=/usr/bin/gcc-4.3 sh NVIDIA*.run


Se tutto è andato a buon fine, possiamo far ripartire il server grafico con il comando:

# invoke-rc.d gdm start

se il vostro desktop manager è GDM, oppure:

# invoke-rc.d gdm3 start

se il vostro desktop manager è GDM3, oppure:

# invoke-rc.d kdm start

se il vostro desktop manager è KDM.

Driver Nvidia per diversi kernel

Molto spesso si avverte l'esigenza di dover avviare il driver Nvidia per ciascun kernel presente nel nostro sistema. L'installazione di default del driver per uno specifico kernel, infatti, rimuove una precedente installazione eseguita per un kernel differente; questo costringe ad avviare l'installer Nvidia ogni volta che si avvia un diverso kernel dal menù di Grub.

Per evitare questo fastidio basta lanciare l'installer passandogli l'opzione '-K'. Specificando l' opzione 'kernel --kernel-name=***' verrà installato solo il modulo Nvidia per il kernel desiderato senza disinstallare il precedente driver, il tutto si può fare da una sessione terminale senza spegnere X o uscire dal nostro DE/WM:

Dove *** è la versione del kernel per cui si vuole compilare il modulo ad esempio per linux-image-3.1.0-1-amd64 sarà :

# sh NVIDIA-* -K --kernel-name=3.1.0-1-amd64

Questo comando presuppone che il driver Nvidia sia già stato installato almeno una volta con il metodo descritto nel precedente paragrafo e che la versione del driver sia esattamente la stessa del modulo che si va ad installare.

Disinstallazione

Per rimuovere i driver installati con questo metodo, è sufficiente arrestare il server grafico ed eseguire:

# sh NVIDIA*.run --uninstall


Metodo 3: module-assistant

Occorrente

Per usare questo metodo è sufficiente una connessione ad internet, oltre, ovviamente, a module-assistant: se non l'abbiamo:

# aptitude install module-assistant

Cosa fare

Come per l'altro metodo, bisogna arrestare il server grafico, e poi non dobbiamo fare altro che eseguire module-assistant:

<Ctrl+Alt+F1> ----> login come root

# invoke-rc.d kdm stop
# m-a

module-assistant ci mostra un menu grafico (ncurses) tramite il quale dobbiamo, nell'ordine:

  • aggiornare la lista dei pacchetti disponibili;
  • preparare il sistema per la compilazione;
  • selezionare il modulo da compilare dalla lista fornita;
  • compilare;
  • installare il pacchetto ottenuto;

il tutto senza uscire da m-a.

Info.png Nota:
module-assistant si occupa automaticamente di installare un compilatore se non l'avete, e anche gli headers del kernel. Se possedete già gli headers giusti, o anche l'intero kernel (che, ricordo, deve essere configurato esattamente come il vostro kernel) è sufficiente controllare di avere impostato il link simbolico /usr/src/linux in modo che punti agli headers o ai sorgenti:
# ln -s /usr/src/linux-headers-xxx /usr/src/linux


A questo punto bisogna modificare /etc/X11/xorg.conf, nella sezione "Device", in modo che nella riga "Driver" sia scritto nvidia (di solito al posto di nv o vesa), inoltre bisogna sostituire, nella sezione "Module", le righe:

Load    "dri"
Load    "GLcore"

con la riga:

Load    "glx"

Se invece di una nuova installazione state facendo un aggiornamento, è probabile che sia ancora in memoria il modulo vecchio: potete controllare con:

$ lsmod | grep nvidia

se il modulo viene elencato non dovete fare altro che rimuoverlo prima di riavviare il server grafico (da root):

# rmmod nvidia

Ora non resta che installare i driver per xfree/xorg (che sono sempre proprietari, ma non sono da compilare, e in Debian sono in un pacchetto a parte) e, volendo, anche il tool grafico per configurarli, e poi si può avviare X:

# aptitude install nvidia-glx nvidia-settings
# invoke-rc.d kdm start


Opzioni utili

In /etc/X11/xorg.conf ci sono alcune opzioni specifiche del driver Nvidia che si possono inserire nella sezione "Device", per esempio se non vogliamo vedere il logo Nvidia ad ogni avvio possiamo inserire:

Option "NoLogo" "1"

invece per usare il codice AGP del driver proprietario invece di quello libero possiamo inserire:

Option "NvAGP" "On"

personalmente con questa opzione attivata riscontro con glxgears un aumento di prestazioni pari al 50%.

In certi casi ci possono essere dei problemi nell'uso di un monitor esterno su di un laptop: per ovviare all'inconveniente si può provare ad aggiungere:

Option "UseEDID" "0"

Per abilitare l'uso dell'uscita TV come monitor addizionale (ove disponibile):

Option "TwinView"

Se l'immagine sulla TV risulta essere in bianco e nero o con i colori falsati occorre impostare lo standard video utilizzato:

Option "TVStandard" "PAL-B"

Ci sono molte altre opzioni possibili, che trovate elencate, su Debian, in /usr/share/doc/nvidia-glx/README.txt.gz.

Creazione del file xorg.conf

Se il file /etc/X11/xorg.conf non fosse presente e si necessita averlo anche solo come template allora bisogna crearlo.
Prima di tutto occorre chiudere X. Non basta fare logout, bisogna proprio arrestare il server grafico: se avete installato un desktop manager andate in una console testuale (per es. con Ctrl+Alt+F1), e usate, da root:

# invoke-rc.d gdm stop

se il vostro desktop manager è GDM, oppure:

# invoke-rc.d gdm3 stop

se il vostro desktop manager è GDM3, oppure:

# invoke-rc.d kdm stop

se il vostro desktop manager è KDM.

Quindi eseguire:

# Xorg -configure

Il file in questione è generato tramite un rivelamento automatico dell'hardware ma di fatto contiene parecchie voci ormai inutili come ad esempio i moduli o i path dei font che vengono già normalmente caricati. È utile per prendere spunto sulla sintassi e fare modifiche particolari ma non direttamente necessario al funzionamento dei driver.

Una volta creato si consiglia di dargli una bella pulita e usare solo le parti necessarie quindi spostarlo nella giusta posizione:

# mv /root/xorg.conf.new /etc/X11/xorg.conf

o meglio ancora utilizzare le configurazioni modulari come descritto nel metodo uno.

Quindi possiamo far ripartire il server grafico:

# invoke-rc.d gdm start

se il vostro desktop manager è GDM, oppure:

# invoke-rc.d gdm3 start

se il vostro desktop manager è GDM3, oppure:

# invoke-rc.d kdm start

se il vostro desktop manager è KDM.




Guida scritta da: Bedo Swirl-auth40.png Debianized 40%
Estesa da:
tindal (Correzioni, metodo 2, verifica e opzioni utili)
test (Opzioni TV e altre correzioni minori)
die_z (Modifica nota per kernel personalizzati (kernel-package))
Verificata da:
barabba

Verificare ed estendere la guida | Cos'è una guida Debianized