giovedì 26 luglio 2007

Upgrade vs. installazione: da Edgy a Feisty parte II - driver nvidia

Premesso che è stata solo COLPA MIA se i driver nvidia sono state le uniche cose che non mi hanno funzionato dopo l'upgrade da egdy a feisty, questa piccola disavventura mi ha permesso di capire meglio come funzionano i restricted modules in Ubuntu, nello specifico quelli nvidia.

Facciamo un pò d'ordine; nel mio portatile ho una GeForce4 420 Go, che, al massimo, può usare i driver NVIDIA della serie 963x, i new legacy; chi ha schede sino alla serie GeForce2 può usare i legacy (serie 71xx), mentre tutti i possessori di schede più recenti possono (ovviamente) usare l'ultima versione. Inoltre, dalla 9629 nvidia ha introdotto la GLX_EXT_texture_from_pixmap che permette l'utilizzo di compositing manager come Compiz. Nel DVD della Feisty ci sono tutti e tre i driver gia impacchettati:

Versione Driver Kernel module
7184 nvidia-glx-legacy nvidia_legacy
9631 nvidia-glx nvidia
9775 nvidia-glx-new nvidia_new

I driver, con le librerie GL ed i moduli di xorg sono sparpagliati sotto /usr; nel mio caso, avendo installato nvidia-glx, basta fare dpkg -L nvidia-glx per vedere l'elenco dei file. I moduli del kernel, invece, si trovano sotto /lib/linux-restricted-modules/<kernel-version>, e vengono installati con il pacchetto omonimo linux-restricted-modules-<kernel-version>, anche qui dpkg -L ve li fa vedere tutti. Nel mio caso, ad esempio, sotto /lib/linux-restricted-modules/2.6.20-15-386/nvidia ci sono i file oggetto del modulo che, quando il sistema parte, vengono linkati da /sbin/lrm-manager e poi vengono posizionati nel filesistem /lib/modules/<kernel-version>/volatile, nel mio caso /lib/modules/2.6.20-15-386/volatile (in pratica è in ram ed esiste solo quando il sistema è acceso con il kernel corrispondente).

Detto ciò, che mi era successo? Praticamente, ai primi avvii, il sistema riconosceva la GeForce4, sapeva di dover usare il modulo 9631 ma si caricava il 9775, nonostante le librerie fossero quelle giuste, cioè le nvidia-glx. Dovevo ogni volta lanciare a mano sudo /sbin/lrm-manager che linkava il modulo nvidia, modprobe per caricarlo e finalmente rilanciare sudo /etc/init.d/gdm start. Uffa!!!. Girando su internet, alla fine ho trovato la soluzione al problema che mi ero creato da solo: quando avevo la edgy, i moduli precompilati non mi funzionavano (e non ho mai capito il perché), e mi ero compilato il driver originale nvidia, seguendo le ottime istruzioni del buon tseliot. Tra le cose da fare, si doveva disabilitare i moduli restricted in /etc/default/linux-restricted-modules-common. Su Launchpad c'è scritto che, upgradando da edgy a feisty con il driver installato manualmente (proprio il mio caso), per un baco tale disabilitazione non viene rimossa, e quindi il modulo giusto era inibito dal caricamento al boot: rimossa la linea (o meglio, modificata, ho rimosso tutte le altri moduli che non mi giovano) tutto ha cominciato a funzionare come si deve. Finalmente!!!!

Ovviamente, per quanto abbia provato ad essere il più accurato possibile, quello che ho scritto sono tutte mie elucubrazioni; declino ogni responsabilità se qualcuno si fa del male (leggi: sconfigura tutto e perde mesi di lavoro!!!) usandole. Nonostante questo, dateci un'occhiata (non con sudo, così non fate danni) se proprio siete curiosi.

Nessun commento: