Pilotes NVIDIA intégrés à Ubuntu 19.10 : quels changements ?

Développeurs et joueurs en ligne de mire

Pilotes NVIDIA intégrés à Ubuntu 19.10 : quels changements ?

Pilotes NVIDIA intégrés à Ubuntu 19.10 : quels changements ?

Abonnez-vous pour tout dévorer et ne rien manquer.

Déjà abonné ? Se connecter

Abonnez-vous

Ubuntu 19.10 est disponible depuis quelques jours. Parmi les nouveautés de cette mouture de fin d'année, il en est une qui a fait réagir la communauté, mais qui va simplifier la vie de nombreux utilisateurs : l'intégration des pilotes NVIDIA. Mais dans la pratique, qu'y a-t-il de nouveau ?

La décision de Canonical et des développeurs d'Ubuntu d'intégrer nativement les pilotes NVIDIA au processus d'installation suit la tendance. Mint a renforcé sa position sur le sujet dès sa version 19.04, d'autres ayant déjà fait de même.

L'intégration des pilotes graphiques, un enjeu pour plaire aux développeurs

On pense notamment à Pop!_OS qui propose une ISO spécifique pour ceux qui disposent d'une GeForce/Quadro, allant même jusqu'à proposer un dépôt contenant une base nécessaire aux développeurs adeptes de CUDA, et des outils comme TensorMan. Car l'enjeu est là, au-delà des amateurs de jeu vidéo sous Linux.

Ces distributions sont en effet très utilisées par les chercheurs et développeurs qui peuvent vite passer un (trop) long moment à paramétrer des environnements de développement lorsqu'ils utilisent des cartes graphiques pour leurs calculs ou même des processeurs dédiés comme les NPU. L'objectif est donc de leur simplifier la vie.

Un besoin qu'Intel a déjà très bien identifié. Le géant de Santa Clara mise ainsi sur une distribution orientée performances, intégrant des mécaniques de compilation tirant parti de ses dernières fonctionnalités, un noyau optimisé, fournissant des outils récents. C'est ainsi que Clear Linux est né, avec son Store dédié et ses « Stacks ».

De son côté, NVIDIA propose une solution clé en main avec ses « Data Science Workstations » lancées en juin. Vendues par des partenaires tiers, elles sont livrées sous Ubuntu, préconfigurées pour profiter des outils de développement maison.

Ubuntu et NVIDIA, déjà une histoire d'amour (à quelques bugs près)

Ubuntu veut aller dans le même sens, mais avance à (très) petits pas. Il faut dire qu'elle est très utilisée par les développeurs, notamment ceux qui exploitent un GPU. Elle reste d'ailleurs le principal OS recommandé par NVIDIA dans ses guides, utilisée également comme base pour l'OS fourni dans les kits de développement Jetson.

La distribution est également connue pour faire des choix différents de ceux de « puristes » de l'open source. C'est même l'une de ses différences avec Debian, proposant par exemple d'intégrer d'un clic certains pilotes et codecs propriétaires pour que l'utilisateur puisse facilement profiter de sa machine dans un cadre multimédia dès l'installation.

Même chose pour les pilotes NVIDIA. Une méthode intéressante, mais dépendante de la présence d'une connexion internet, nécessitant un téléchargement pour chaque machine. L'idée a donc été de simplifier un peu plus la vie des utilisateurs en intégrant la dernière version en date de ce « blob propriétaire » à l'ISO.

Une étape logique, même si on continue de regretter que le constructeur n'ait toujours pas ouvert les sources de ses pilotes, en dépit de son utilisation croissante d'outils dont le code est libéré. Il communique depuis peu des éléments de ses architectures afin de faciliter la vie des développeurs tiers, comme ceux des pilotes « nouveau ».

Quels changements en pratique ?

Comme nous l'expliquions dans un précédent guide, l'installation et la gestion des pilotes NVIDIA avait déjà été grandement facilitée au sein d'Ubuntu dans ses versions récentes, notamment à travers la section consacrée aux pilotes additionnels de Logiciels et Mises à jour. Elle permet une mise en place en un clic de pilotes plus ou moins récents.

Cela passait par quelques lignes de commandes si vous n'aviez pas accès à une interface graphique. Un Personal Package Archive (PPA) maintenu par la fondation X.Org est également disponible avec des pilotes plus récents :

sudo add-apt-repository ppa:graphics-drivers/ppa

Mais pour savoir ce qui a changé concrètement, nous avons effectué une série d'essais avec Ubuntu 18.04.3 LTS, 19.04 et 19.10. Nous les avons installés sur une machine équipée d'une GeForce GTX 980 (sortie en 2014) puis d'une GeForce RTX 2080 (datant de fin 2018), en installant les dernières mises à jour via Internet ou non.

Nous avons systématiquement coché la case « Installer un logiciel tiers pour le matériel graphique et Wi-Fi et des formats de média supplémentaires », permettant de récupérer des pilotes NVIDIA lorsqu'ils sont disponibles. Sinon, c'est la version open source « nouveau » qui est utilisée. Nous avons à chaque fois relevé la version configurée sur le système.

Pour rappel, la commande nvidia-smi ne répond que si les pilotes NVIDIA sont en place, affichant le statut de la carte graphique et détaillant la couche logicielle en place. Sinon vous pouvez utiliser la commande suivante :

lshw -class video

Voici nos résultats :

Ubuntu NVIDIA Pilotes Intégration

Comme on pouvait s'y attendre, dans les versions précédentes d'Ubuntu, le pilote NVIDIA n'est installé que si la connexion internet est active. Avec l'intégration à l'ISO, ce n'est plus nécessaire.

C'est un avantage dans les cas où « nouveau » pose problème, comme on peut le voir avec la GeForce RTX 2080 pour Ubuntu 18.04/19.04. Sur la fenêtre de connexion, les réactions du système à la souris ou au clavier sont lentes, ce que résoud l'utilisation du pilote propriétaire (ou d'Ubuntu 19.10).

Pire dans le cas d'Ubuntu 18.04.3 LTS, on se retrouve face à une boucle de connexion, empêchant l'utilisation du système tant que le pilote NVIDIA n'est pas installé. Un phénomène qui ne se rencontre étrangement que si les éléments non open source sont installés et les mises à jour effectuées dans le processus d'installation.

On note au passage qu'Ubuntu 19.04 avait déjà changé la donne, tant pour la GTX 980 que la RTX 2080 puisque le pilote NVIDIA est téléchargé pendant la phase d'installation si on le demande. Il utilise cependant la dernière version de la branche 418, qui n'est pas de toute fraîcheur.

On regrette également quelques points dans cette façon de faire. Tout d'abord, il n'y a pas de granularité dans l'acceptation des éléments non libres. Si l'on veut les codecs multimédia, mais pas les pilotes NVIDIA, c'est impossible à préciser dans le processus d'installation actuel. Dommage.

D'autant que certaines combinaisons sont malheureuses. Par exemple, Wayland ne supporte pas la connexion automatique avec le pilote NVIDIA installé. Si vous faites ce choix, vous aurez là encore droit à une boucle infinie de connexion, avec comme seule possibilité de désactiver la connexion automatique ou de repasser sur les pilotes « nouveau ».

De même, il existe souvent différentes versions des pilotes NVIDIA : la dernière en date des dépôts et la précédente. On ne peut pas choisir laquelle installer. On apprécierait aussi de pouvoir activer plus simplement le PPA de la fondation X.Org contenant les derniers en date, que ce soit via une fenêtre ou une option dans la gestion des pilotes additionnels.

Il est possible d'aller plus loin

Si Ubuntu se présente régulièrement comme une distribution pour les développeurs, nouant des partenariats autour de cette image, notamment avec Dell (et ses XPS Developer Edition), son équipe doit veiller à ce que cela reste le cas.

Des initiatives comme Clear Linux, Pop!_OS ou les Data Science Workstations de NVIDIA montrent bien que les besoins de ce public vont au-delà de l'installation, avec la facilité à mettre en place les ensembles de logiciels et les optimisations qui leurs sont nécessaires. Or, il manque clairement des dépôts ou des fonctionnalités allant dans ce sens.

Si la volonté est également de faciliter la vie des joueurs, on peut faire des remarques similaires. Proposer la mise en place d'outils comme Steam, Lutris ou Play On Linux dès l'installation, via une meilleure intégration, ou même favoriser la création d'une variante spécifique pourrait être bénéfique. 

Commentaires (21)


Et qu’en est-il de la gestion d’optimus ?


“nouveau” ? se sont pas foulés pour le nom <img data-src=" />


Pour le coup c’est déjà un vieux nom&nbsp;<img data-src=" />


Les nouveaux drivers (à partir des 435.17 beta) introduisent une fonctionnalité prime offloading qui permet un meilleur support d’optimus: c’est encore bien expérimental de ce que j’ai compris mais c’est déjà un premier effort de la part de nvidia.


<img data-src=" /><img data-src=" />


Et il y a même un petit outil de dispo pour configurer tout ça…


Je vois “switch to intel”/“switch to NVIDIA (On-demand)” donc la bascule se fait toujours manuellement, ou la gestion est-elle devenue automatique comme sous Windows ?


Nan, “on-demand” c’est fait automatiquement quand le système fait du rendering OpenGL/Vulkan. Par contre le GPU nvidia n’est pas éteint totalement mais tu peux déjà gagner pas mal en consommation si tu as un gpu suffisamment récent qui supporte le dynamic power management.


Actuellement j’utilise (sur 18.04) le pilote “430 (libre)”. Il est indiqué comme alternatif. Ce n’est pas celui d’Nvidia alors (puisque vous dites qu’ils n’ont pas ouvert leurs sources) ?

Je me rappelle qu’à l’installation j’ai eu de gros problèmes graphiques (écran qui se fige pendant l’installation, impossible de s’identifier à l’ouverture de session) et c’est ce pilote qui qa résolu tous les problèmes.








Jarodd a écrit :



Je me rappelle qu’à l’installation j’ai eu de gros problèmes graphiques (écran qui se fige pendant l’installation, impossible de s’identifier à l’ouverture de session) et c’est ce pilote qui qa résolu tous les problèmes.







Les installeurs graphiques n’utilisent pas le driver frame buffer? Je me souviens de paramètres à passer en ce sens au noyau sur pas mal de portables.



Sur 18.04 tu devrais avoir le choix entre :





  • NVIDIA 430 (propriétaire, testé)

  • NVIDIA 390 (propriétaire)

  • X.Org nouveau (libre)




Perso j’ai un APU AMD, autant j’avais aucun problème en 19.04, autant maintenant j’ai énormément de freezes.


Ce doit être à cause de ces développeurs que Nvidia cherche à séduire, qu’entre le pilote 3.90 et le 4.18 ma GTX 970 externe (via TB3) n’affichait plus rien. <img data-src=" />

&nbsp;Ils avaient changé le comportement par défaut, pour ne pas gêner les gens qui utilisent un eGPU juste pour du calcul (pas pour l’affichage) et peuvent vouloir le retirer à chaud.

Maintenant, faut ajouter l’option&nbsp; Option “AllowExternalGpus” “true” dans la conf xorg pour que xorg puisse utiliser la carte. Ça faisait tellement longtemps que je n’avais rien touché dans xorg que je n’arrivais a rien retrouver ^^

Je ne leur dit pas merci aux développeurs et à Nvidia, c’est leur usage à eux qui devrait être optionnel&nbsp;<img data-src=" /> (même si j’imagine qu’il y a plein de bonnes-mauvaises raisons à ce choix…)


Perso je suis bien content d’avoir une CG AMD avec le pilote libre AMDGPU qui ne fait que charger qq blobs dans la carte,&nbsp; je n’ai jamais eu un seul bug à ce jour, enfin pas à ma connaissance.

Et quand je joue, je repasse sous windows


Ah je suis preneur d’infos là dessus, je n’ai jamais réussi à faire fonctionner ma carte graphique en TB3 sur Linux Mint. Je suis prêt à passer à un Ubuntu plus récent si ça peut aider.

Il y a juste cette option à ajouter dans le xorg.conf après avoir installé les drivers nvidia ?

Et après, ça bascule tout seul ?








coco74 a écrit :



Perso j’ai un APU AMD, autant j’avais aucun problème en 19.04, autant maintenant j’ai énormément de freezes&nbsp;&nbsp;



Je ne vais pas te dire de passer sous Windows quand même, mais déjà dans l’article il y a “Wayland ne supporte pas la connexion automatique avec le pilote NVIDIA installé”. Microsoft se serait fait bien bashé…Je passe le nombre de fois où on me dit que tout va toujours bien dans les mises à jour Linux…J’ai du mal avec le “tout open source”. Qu’un constructeur publie les docs, je suis pour, que le pilote soit opensource, eh bien pas forcément la totalité. Je n’ai rien contre un “blob” propriétaire s’il est fourni et toléré avec un pilote open source.Je pense que Ubuntu a fait un choix logique. Les dev n’ont pas forcément envie de passer leur temps à trouver le bon dépôt, corriger le fichier xorg ou recompiler le noyau en activant la bonne option pour que ça marche.Et effectivement, je préfère que Debian reste open source par défaut, avec la possibilité d’installer les pilotes “closed” et “firmwarisés”.



Il semble bien plus logique d’utiliser une carte Nvidia sous ubunut pour du dev qu’autre chose, les autres usages étant fortement limités sous cet OS


Je dirais même plus que je déconseille l’utilisation de carte graphique NVidia sous Linux pour autre chose que du dev. Ces cartes sont une sources de bug et de problèmes permanents sous Linux. Les 2 pilotes (Nouveau et Nvidia) déconnent trop souvent. Plus encore, Les pilotes NVidia ne supporte pas bien Wayland. Autant dire que le problème n’est pas prêt d’être résolu.



Si vraiment vous voulez jouer sous linux, évitez à tout prix NVidia.



Le seul intérêt d’utiliser une carte NVidia sous Linux, c’est pour utilisé leur puissance de calculs (via CUDA en particulier, mais OpenCL est viable aussi : une V100 n’a aucun équivalent). Si c’est pour faire autre chose, en l’état actuel, passez votre chemin.








ErGo_404 a écrit :



Ah je suis preneur d’infos là dessus, je n’ai jamais réussi à faire fonctionner ma carte graphique en TB3 sur Linux Mint. Je suis prêt à passer à un Ubuntu plus récent si ça peut aider.

Il y a juste cette option à ajouter dans le xorg.conf après avoir installé les drivers nvidia ?

Et après, ça bascule tout seul ?



La chance que j’ai eu, c’est de commencer à l’utiliser (en externe, avant elle était dans une tour classique) avec Kubuntu 18.10, et donc le pilote Nvidia par défaut était 3.90 (ou en-dessous ?) et donc pas besoin de l’option de mon précédent com’



A noter que des gens ont fait de petits scripts qui doivent rendre les actions de conf xorg et prime-select, ci-dessous, inutile. Mais je n’ai pas essayé, j’ai retrouvé celui-là

Mais, une recherche m’en avait remonté d’autres à l’époque. Pas assez besoin pour les essayer. Mais sans doute que je devrai…

&nbsp;

Donc, dans mon souvenir, pas grand chose à faire.

Le boitier est un Sonnet Breakaway 550, sur un HP Spectre 13

Il faut juste (de mémoire) autoriser le boîtier du eGPU sur le bus TB3 avec la commande boltctl (si ça n’a pas déjà été fait sous Win ou ailleurs) :

&nbsp;sudo boltctl&nbsp;&nbsp;&nbsp;&nbsp; (pour lister)

&nbsp;sudo boltctl authorize “l’uuid du boitier listé juste avant”

(Note1 : Gnome doit avoir une interface graphique depuis 1 ou 2 version d’ubuntu, et KDE en 19.10, sans doute aussi, mais pas avant)

(Note2: Les mises à jour du UEFI, nécessitent de refaire l’autorisation)



&nbsp;Peut-être un reboot, j’ai un doute ?

&nbsp;

Installer le pilote nvidia (Kubuntu me l’a proposé, il me semble, sinon via le “gestionnaire de pilote”, ou directement le gestionnaire de paquet. Pour du secure boot, il doit donner des indications, et il y a un mot de passe a saisir au reboot suivant).

Si comme moi, juste une carte Intel dans le portable, il faut juste un :

sudo prime-select nvidia (et quand on retire la carte (a froid ) : sudo prime-select intel, juste pour éviter des message d’erreur dans la log système, sinon ça fonctionne sans)

Si déjà une seconde carte dans le portable, genre Intel + Nividia, je crois que c’est plus compliqué. Je connais pas

&nbsp;

Et si le pilote Nvidia est supérieur à 3.90, ajouter l’option Option “AllowExternalGpus” “true” dans la conf xorg.

Nvidia en parle ici.

J’ai aucun souvenir de l’avoir mis là, mais ce matin je l’ai retrouvé dans :

&nbsp;/usr/share/X11/xorg.conf.d/10-nvidia.conf

&nbsp;

&nbsp;Section “OutputClass”

&nbsp;&nbsp;&nbsp; Identifier “nvidia”

&nbsp;&nbsp;&nbsp; MatchDriver “nvidia-drm”

&nbsp;&nbsp;&nbsp; Driver “nvidia”

&nbsp;&nbsp;&nbsp; Option “AllowEmptyInitialConfiguration”

&nbsp;&nbsp;&nbsp; Option “AllowExternalGpus” “true”

&nbsp;&nbsp;&nbsp; ModulePath “/usr/lib/x86_64-linux-gnu/nvidia-418/xorg”

EndSection



C’est probablement un cadeau de la migration 18.10 vers 19.04…. sinon je ne sais pas ?



Et rebooter.

&nbsp;

Souvent j’ai besoin de rebooter (avant l’ouverture de la session), pour que le splash-screen de connexion s’affiche sur la TV (en HDMI sur la GTX 970 externe)

Sous Windows, ça a bizarrement été plus compliqué. Pas utilisé récemment. Mais souvent je doit booter sur le Linux d’abord (toujours sans ouverture de session). Sinon, Windows ne bascule pas sur la carte externe… Mais un double boot Windows, n’aide pas. Il faut absolument d’abord booter sur le Linux (on entend le ventilo du boîtier qui change de rythme)

Peut-être que les script évoqué plus haut permettent d’éviter le double boot Linux ? Pour Windows, je ne sais pas ?



Et sinon, bonne perte de perf, que je n’ai pas précisément évalué. Mais, au moins, l’accélération fonctionne via les sorties de la carte externe (logique) ou directement sur l’écran interne du portable.

Que ce soit sur l’écran externe, ou l’écran interne, j’ai les mêmes perf (bien, bien meilleurs que la carte Intel HD620). Mais c’est louche !

&nbsp;L’affichage externe devrait avoir des perf légèrement meilleur. Une partie de la bande passante du lien TB3 doit être réservé pour le retour de l’image à l’écran interne, jamais réussi à l’empêcher, même quand l’écran interne est désactivé.

&nbsp;P-ê une histoire de firmware ? Mais Sonnet n’en propose pas d’autre :/





Iste a écrit :



Il semble bien plus logique d’utiliser une carte Nvidia sous ubunut pour du dev qu’autre chose, les autres usages étant fortement limités sous cet OS







tazvld a écrit :



Je dirais même plus que je déconseille l’utilisation de carte graphique NVidia sous Linux pour autre chose que du dev. Ces cartes sont une sources de bug et de problèmes permanents sous Linux.



Je suis bien d’accord, avec vous deux. Mais à l’époque où je l’ai acheté, c’était la seule accessible à mon budget et avec une sortie hdmi 2.0

(je ne suis pas dev, c’est uniquement pour du jeu, sous kubuntu/Steam, très rarement Windows, et là elle commence a avoir fait son temps. Probablement renouvelée par de l’AMD (ou Intel ?) en 2020)

Mais globalement, ça fonctionne pas mal du tout. Si on a conscience des limites, inconvénients (prix!) et heureusement quelques avantages du truc.

Une fois que le bouzin est lancé, ça tourne très bien <img data-src=" />



Les drivers Nvidia fonctionnent parfaitement sous linux. Mais il y a un problème de taille : ils ne supportent pas Wayland qui pourtant tend à remplacer Xorg.



Nvidia n’ont qu’à faire comme AMD : intégrer les drivers dans le kernel. Et là on sera à jour lors d’un changement de kernel, et ce sera plus pratique pour les utilisateurs.



Pour ceux qui ne le savent pas : les driver nouveau est un pilote libre faisant du retro-ingénierie. il est donc normal que les performances ne soient pas à la hauteur face aux drivers Nvidia.


<img data-src=" />



Je testerai ça. Chez moi sous Windows ça marche bien, la carte n’est pas toujours détectée (ou en tous cas la bascule ne se fait pas toujours) quand je la branche à chaud mais après un reboot en général c’est bon.

Sous linux j’ai jamais réussi, je testerai ton petit guide sur Mint et si ça fonctionne pas, je passerai sur Ubuntu ou Pop OS.


Fermer