In this post I will show you how to replace the nouveau driver for the NVIDIA cards, with the official driver written by NVIDIA.

In questo post spiegherò come sostituire il driver nouveau per le schede NVIDIA, con il driver ufficiale scritto da NVIDIA.

Fedora, how to replace the nouveau driver with the official NVIDIA driver

Playing videogames is fun, isn't it? Especially in the Christmas period, maybe you're waiting for a new console, a new computer, or simply a new game.
Sometimes, when the computer is involved with games, it's not very funny, considering how much effort you do to make them work properly...
At the time I'm writing, I don't own a computer capable of running the most recent games, nevertheless, I've created a Steam account and I installed the client on both, Fedora and Windows.
I cannot play the games for now, I use the clients to just test the retail games I purchase, so that I can be sure that the disks are not defective.

I happened to buy a game recently, I tested it, but when I attempted to run it, it failed: It expected OpenGL 4.1, but the one mounted on the system is 3.3.0.
The disks were ok and I was able to run the game on Windows, and well, why on Windows but not Fedora? At the beginning I thought that a simple driver change would have solved the problem.
Fedora comes equipped with the nouveau driver, so I removed it and installed the official NVIDIA driver.
After performing what I thought was a driver removal I rebooted the system, and... well, the desktop environment could not be run, moreover, while restarting I noticed the messages (you know, the writings that appear during boot?), and according to them, the nouveau driver was still in use.
I didn't understand what was going on, because I thought I removed it, I checked its package again, and guess what? I was right! I removed it!
A little research cleared everything: in fact, the nouveau driver is also included in the initramfs file in Fedora, meaning in a component (a file system to be precise), used by the kernel at boot time to load all the proper modules.
The consequence is that you cannot disable the driver by simply removing the package, you have to disable it from the kernel too, or it won't work.
Once I performed the complete removal and I installed the official driver, I still did not solve the original problem: in fact The OpenGL version included in the NVIDIA driver was exactly the same as the one included in the nouveau driver.
So yeah, you may say I did all of that for nothing, and you're right. In the end I decided to keep the official NVIDIA driver, and today, I will show you how to remove the nouveau driver (if you intend to, for whatever reason), in favour of the NVIDIA driver, on Fedora.
As usual, please, read the content disclaimer if you haven't, before continue reading.

First off, log in Fedora, please be sure you use the latest kernel, because it seems that the NVIDIA driver can be installed on the most recent kernel only. In order to install it in an older kernel you need the kernel sources, but as far as I could see, once a new kernel is released, the previous one's source is removed.
You can disable the driver by taking two different routes.
I'll tell you right away that the one to use is the first one (the following below) because it is the safest and the simplest.
The second route exists only for information purpose.

Direct way: remove the module from the initramfs file
In order to remove the driver, we're going to recreate the initramfs file with the dracut utility, an initramfs file generator.
Before starting with the removal, you need to get the NVIDIA driver installer for your graphics card.
Open a new terminal window, and type:

lspci -v | grep VGA

This will show the model of the graphics card you're using, take note of it, then go to the NVIDIA official website, and get the needed installer.

It's time now, to change your current "virtual terminal".
All Unix-like systems provide programs like getty, a program that handles physical and virtual terminals, in practice, you can access the operating system using different terminals at the same time.
In Fedora, the first virtual terminal uses the GUI, if while in session you press Ctrl-Alt-F? where ? is a number between 2 and 6, you're going to get 5 different text-only virtual terminals.
Perform the login from one of these and move yourself in the /boot directory.
Each kernel has its own initramfs file, but you have to use the one for your latest kernel.
The following command shows you the version of the kernel you're using:

uname -r

Thanks to this, you can use this command to backup your current kernel's initramfs file:

mv initramfs-$(uname -r).img initramfs-$(uname -r)-withnouveau.img

Now use the dracut the utility, to make the new initramfs:

dracut --omit-drivers nouveau initramfs-$(uname -r).img $(uname -r)

This initramfs file does not contain the nouveau module.

Alternative way: inhibit the driver from GRUB (not recommended)
If you don't want to remove the driver from the initramfs file, you can disable it at boot time from GRUB:
GRUB uses the default file "/etc/default/grub" to add additional options to the menu entries.
Open the file, search for the variable GRUB_CMDLINE_LINUX and add the following parameters:

nouveau.modeset=0 rd.driver.blacklist=nouveau

the variable should look something similar to this:

GRUB_CMDLINE_LINUX="nouveau.modeset=0 rd.driver.blacklist=nouveau"

most probably there will be other options too.
Save the file and close it, what you have to do now is to regenerate the GRUB configuration so that the entries are updated:


This will work if the boot loader on the Master Boot Record reads the configuration from the Fedora partition, meaning that this will work for most people.
Unfortunately this was not my case for how I performed the installation during the previous video post, and that's why I don't recommend it, if you can, disable the driver by using the dracut utility.

Now that the driver has been removed, you have to log in Fedora using one of the other virtual text-only terminals.
Once you're logged, first type:

init 3

To enter runlevel 3, that is, all the standard services are available except for the graphical server (X is disabled).
Now, remove the nouveau package:

yum remove xorg-x11-drv-nouveau

install dkms:

yum install dkms

This program will automatically rebuild the NVIDIA kernel module everytime there's a new available kernel (translation: you don't have to install the driver again if a new kernel is released, dkms will take care of this automatically).
Now, go to the directory where you stored the NVIDIA installer and execute it.
Once the procedure is finished, reboot, you can use the following command to do so:

shutdown -r now

and congratulations, the NVIDIA driver will be used from now on.

Well, I hope you like this post, consider this my Christmas gift for you.
In any case, if you have any question, something to say, some suggestions, please don't be afraid and let me know in the comments section below.

Greetings from Antonio Daniele.
See you in March.

Go back to the top or Share.

Fedora, sostituire il driver nouveau con il driver ufficiale NVIDIA

Giocare ai videogiochi è divertente non è vero? Specialmente nel periodo Natalizio, magari attendete una nuova console, un nuovo computer o semplicemente un nuovo gioco.
A volte, quando il computer ha a che fare con dei giochi, non è molto divertente, vista la fatica che ci vuole per farli funzionare correttamente...
Al momento in cui scrivo, non possiedo un computer in grado di eseguire i giochi più recenti, nonostante ciò, ho creato un account Steam e ho installato il client sia su Fedora che su Windows.
Al momento non posso giocare a tali giochi, uso i client solo per verificate i giochi che compro su disco, per assicurarmi che i dischi non sono difettosi.

Mi è capitato di comprare un gioco di recente, l'ho testato, ma quando ho provato ad eseguirlo, falliva: Si aspettava la OpenGL 4.1, ma quella che montava il sistema era la 3.3.0.
I dischi stavano bene, e sono stato in grado di eseguire il gioco su Windows, e beh, perché su Windows ma non su Fedora? All'inizio pensavo che un semplice cambiamento di driver bastasse.
Fedora monta nativamente il driver nouveau, quindi l'ho rimosso e ho installato il driver ufficiale NVIDIA.
Dopo aver effettuato quel che pensavo fosse una rimozione del driver, ho riavviato il sistema e... beh, l'ambiente desktop non poteva essere eseguito, inoltre, durante il riavvio ho notato i messaggi (sapete quelle scritte che appaiono durante l'avvio?), segnalavano che il driver nouveau era ancora in uso.
Non capivo che stesse succedendo, perché pensavo di averlo rimosso, controllo di nuovo il suo pacchetto e indovinate? Avevo ragione! L'avevo rimosso!
Una piccola ricerca mi ha schiarito le idee: infatti, in Fedora, il driver nouveau è incluso anche nel file initramfs, ovvero un componente (un file system per essere precisi), usato dal kernel durante l'avvio per caricare tutti i moduli.
Conseguenza di ciò è che non è possibile disabilitare il driver soltanto rimuovendo il pacchetto, bisogna anche disabilitarlo dal kernel.
Una volta effettuata la completa rimozione e aver installato il driver ufficiale, non avevo comunque risolto il mio problema originario: infatti la versione di OpenGL inclusa nel driver NVIDIA era la stessa di quella inclusa nel driver nouveau.
Quindi sì, potreste dire che ho fatto tutto questo per niente, e avete ragione. Alla fine ho deciso di tenermi il driver ufficiale di NVIDIA, e oggi, vi mostrerò come rimuovere il driver nouveau (se intendete farlo, per una qualsivoglia ragione) in favore del driver ufficiale di NVIDIA, in Fedora.
Come al solito, per favore, leggete l'esonero di responsabilità se non l'avete già fatto, prima di continuare a leggere.

In primo luogo, entrate in Fedora, assicuratevi di usare il kernel più recente, perché pare che il driver NVIDIA possa essere installato solo sul più recente. Per installarlo su uno più vecchio è necessario il codice sorgente del kernel, ma per quanto ho potuto vedere, non appena viene rilasciato un nuovo kernel, il sorgente del precedente viene rimosso.
È possibile disabilitare il driver seguendo due strade diverse.
Vi dico subito che quella da usare è la prima (la seguente qui sotto) perché è la più sicura e la più semplice.
La seconda strada esiste solo a scopo informativo.

Modo diretto: rimuovere il modulo dal file initramfs
Per rimuovere il driver dobbiamo ricreare il file initramfs con il programma dracut, un generatore di file initramfs.
Prima di iniziare con la rimozione, dovete ottenere l'installatore del driver NVIDIA per la vostra scheda grafica.
Aprite una nuova finestra di terminale, e digitate:

lspci -v | grep VGA

Questo mostrerà il modello della scheda grafica che state usando, prendetene nota, andate al sito ufficiale di NVIDIA, e scaricate l'installatore necessario.

Ora è il momento di cambiare il vostro "terminale virtuale" corrente.
Tutti i sistemi Unix-like hanno programmi come getty, un programma che gestisce terminali fisici e virtuali, in pratica, è possibile accedere al sistema operativo usando diversi terminali nello stesso momento.
In Fedora, il primo terminale virtuale usa l'interfaccia grafica, se premete in tale sessione Ctrl-Alt-F? dove ? è un numero tra 2 e 6, otterrete 5 terminali testuali.
Entrate in Fedora da uno di questi e muovetevi nella cartella /boot.
Ogni kernel ha il proprio file initramfs, ma dovete usare quello del vostro ultimissimo kernel.
Il comando seguente vi mostra la versione del kernel che state usando:

uname -r

Grazie a ciò, potete usare questo comando per salvare il file initramfs del kernel in uso:

mv initramfs-$(uname -r).img initramfs-$(uname -r)-withnouveau.img

Ora usate il programma dracut, per creare il nuovo initramfs:

dracut --omit-drivers nouveau initramfs-$(uname -r).img $(uname -r)

Questo file initramfs non contiene il modulo nouveau.

Modo alternativo: inibire il driver da GRUB (non raccomandato)
Se non volete rimuovere il driver dal file initramfs, potete disabilitarlo tramite GRUB, cosicché non venga caricato all'avvio:
GRUB utilizza il file predefinito "/etc/default/grub" per aggiungere opzioni addizionali alle voci del menù.
Aprite il file, cercate la variabile GRUB_CMDLINE_LINUX e aggiungete i seguenti parametri:

nouveau.modeset=0 rd.driver.blacklist=nouveau

la variabile dovrebbe essere più o meno così:

GRUB_CMDLINE_LINUX="nouveau.modeset=0 rd.driver.blacklist=nouveau"

molto probabilmente ci saranno anche altre opzioni.
Salvate il file e chiudetelo, quel che dovete fare ora è rigenerare la configurazione di GRUB cosicché le voci del menù vengano aggiornate:


Questo funzionerà se il boot loader sul Master Boot Record legge la configurazione dalla partizione Fedora, il che significa che questo funzionerà per molta gente.
Sfortunatamente questo non era il mio caso, per come ho effettuato l'installazione durante il precedente post video, ed è il motivo per cui non lo raccomando, se potete, disabilitate il driver usando il programma dracut.

Ora che il driver è stato rimosso, dovete entrare in Fedora da uno degli altri terminali testuali.
Una volta entrati, dapprima digitate:

init 3

Per entrare nel runlevel 3, cioè, tutti i processi normali sono disponibili tranne il server grafico (X viene disabilitato).
Ora, rimuovete il pacchetto nouveau:

yum remove xorg-x11-drv-nouveau

installate dkms:

yum install dkms

Questo programma ricostruirà automaticamente il modulo (NVIDIA) del kernel ogni volta che un nuovo kernel è disponibile (traduzione: non dobbiamo reinstallare il driver se un nuovo kernel viene rilasciato, dkms se ne occuperà automaticamente).
Ora, andate nella cartella dove avete l'installatore ed eseguitelo:
Una volta che la procedura è finita, riavviate, potete usare il comando seguente per farlo:

shutdown -h now

e congratulazioni, d'ora in avanti verrà usato il driver NVIDIA.

Bene, spero che vi piaccia il post, consideratelo il mio regalo di Natale.
In ogni caso, se avete delle domande, qualcosa da dire, dei suggerimenti, non abbiate paura e fatemi sapere nella sezione dei commenti qui sotto.

Saluti da Antonio Daniele.
Ci si vede a Marzo.

Torna in cima o Condividi.