Far funzionare il driver Nvidia proprietario nel live cd


La problematica in oggetto è una di quelle più dure, e per certi versi più interessanti che ho incontrato durante la costruzione dell'immagine iso della beta di Itis Linux. Mi ha richiesto infatti più di un pomeriggio intero di test e valutazioni.

Il problema si presentava in quanto preinstallando il driver Nvidia proprietario e lasciando che Ubuntu si preoccupasse di attivarlo, esso risultava "attivo e in uso" nel gestore di driver con restrizioni, però di fatto non era così e gli effetti desktop non si potevano attivare, oltre al fatto che alcuni programmi che richiedono le funzionalità 3d non partissero neppure. Un grosso problema!

Ho fatto ipotesi e provato soluzioni per molto tempo. Una delle prime idee, che per altro mi impegnato parecchio, è stata quella di un conflitto con il nuovo driver open source Nouveau. Le vie da percorrere sono state varie, dalla rimozione del pacchetto alla messa in blacklist di diversi moduli. Tutte azioni infruttuose: il riconoscimento automatico non carica da solo il driver Nvidia, non c'è verso.

Bene, come ultimo tentativo ho deciso di costruirmi da solo un semplice meccanismo di riconoscimento. Ho installato il pacchetto del driver proprietario e basta, non ho rimosso Nouveau, non ho messo in blacklist nulla. Ho poi modificato il file /etc/rc.local in modo da contenere questo codice:

# Controllo per l'attivazione del driver Nvidia
if lspci | grep -i nvidia | grep -i vga >/dev/null
	then
		if ! grep -i nvidia /etc/X11/xorg.conf >/dev/null
			then
				# Il driver nvidia non sta girando e va attivato
				nvidia-xconfig --no-logo
				/etc/init.d/gdm restart
		fi
	else
		if which nvidia-xconfig >/dev/null
			then
				# Il driver nvidia crea conflitti e va rimosso
				/etc/init.d/gdm stop
				apt-get -y purge nvidia*
				/etc/init.d/gdm stop
				rm -rf /usr/lib/nvidia-current
				rm -rf /home/ubuntu/.cache/compizconfig
				rm -rf /home/ubuntu/.config/compiz
				rm -rf /home/ubuntu/.gconf/apps/compiz
				/etc/init.d/gdm restart
		fi
fi

Tutto ciò va inserito prima dell'ultima riga, cioè del comando che fa uscire lo script. Come potete vedere, il codice controlla innanzitutto che il computer abbia una scheda grafica Nvidia, dopodiché cerca un eventuale configurazione già prodotta. Se non la trova ma la scheda è Nvidia, fa partire il configuratore automatico scegliendo di non mostrare il maxi-logo Nvidia ad ogni avvio, e poi resetta l'interfaccia grafica.

Inoltre lo script si occupa di eliminare dal sistema il driver Nvidia nel caso in cui si utilizzi una scheda grafica diversa. Questo deve avvenire perché il driver proprietario rompe la compatibilità con i driver aperti di altre schede, come ad esempio quelle ATI. Con la rimozione al volo, tutto funziona senza intoppi.

Tutto ciò deve avvenire ad ogni avvio del livecd e solo al primo avvio di un sistema Itis Linux installato su un pc. Oltretutto l'operazione è rapidissima e di fatto non ci si accorge neppure che essa avvenga.

Dopo aver sistemato questa faccenda, mancano veramente delle sciocchezze per aver terminato la beta. Conto infatti di finire il lavoro domani, e poi di iniziare il caricamento online, che richiederà il tempo di alcune ore come sempre.

2 comments for "Far funzionare il driver Nvidia proprietario nel live cd"

  1. (Guest) Dario
    Tue 8 Jun, 05:34

    Sono molto interessato ai dettagli della procedura (vorrei fare una disto per videogiochi, una sorta di console).

    Hai notizie su come includere anche il driver AMD senza creare problemi tra tutti?

    Che senso ha mantenere i driver neauveau se poi abiliti i driver closed?

    il resto lo hai fatto con uck o manualmente (installare il driver)

  2. Tue 8 Jun, 12:51

    Il driver AMD non serve a nulla in quanto quello open fa comunque funzionare Compiz. Ti dico comunque che non può essere installato contemporaneamente a quello Nvidia.
    Ha perfettamente senso: eliminarli è quasi impossibile, e poi non creano nessun problema. :P
    In che senso manualmente? Fa differenza? Si lavora con UCK da console, molto semplicemente con apt-get install nvidia-current. :)
    Se fai questa distro con i giochi fammi sapere, sono curioso. ;)