Installation des Drivers Nvidia sur Kali Linux

Bonjour à tous, pour ce début d’année, nous allons voir comment installer sa carte graphique NVIDIA sur la distrib de Kali Linux.

Attention, en installant les pilotes NVIDIA, il se peut que vous n’ayez plus d’interface graphique (seul le mode sans echec), Net-Security ne sera pas tenu responsable en cas de dommage matériel.

La plupart des commandes doivent être éxécutées en root. Je n’ai pas rajouté le « sudo » pour éviter des erreurs de copier-coller si vous êtes déjà en root. &&

Avant toute chose, il est préférable de mettre à jour Kali soit par le gestionnaire de paquets « Logiciel », soit directement via le terminal :

Vérifier tout d’abord votre configuation de votre (ou vos) cartes graphiques (généralement chipset graphique du processeur + carte graphique Nvidia) :

Ici, vous pouvez voir le chispet graphique d’Intel (HD Graphics 530) et la carte graphique Nvidia (GeForce GTX 960M)

Nous allons maintenant blacklisté le module « Nouveau » afin de garder seulement les pilotes officiel NVIDIA :

On met à jour l’image système de fichier racine et on redémarre :

Après le redémarage, si nous vérifions les modules chargés par le système, nous nous appercevons que le module « Nouveau » n’y figure pas :

Vous pouvez dès à présent installer les paquets nvidia suivants :

NB : Une liste de paquets complémentaires devra être installée également (se fait automatiquement) en répondant « yes »

En lançant la commande suivante, vous devrez récupérer l’ID PCI du BUS où est branché votre GPU :

Et en version rapide :

Dans mon cas, j’obtiens PCI:1:0:0

Puis, nous allons créer un fichier qui contiendra les infos de la carte graphique à utiliser (remplacer seulement l’ID récupéré précédement) /etc/X11/xorg.conf :

Pour plus d’informations, vous pouvez visiter le manuel officiel Nvidia à cette page : http://us.download.nvidia.com/XFree86/Linux-x86/375.39/README/randr14.html

Maintenant, nous allons configurer le gestionnaire de sessions GDM (Gnome Display Manager) car c’est le gestionnaire par défaut sur la distrib Kali. Pour cela, il faut créer deux fichiers qui contiendront éxactement la même chose :

/usr/share/gdm/greeter/autostart/optimus.desktop
/etc/xdg/autostart/optimus.desktop

Et insérer le contenu suivant :

Si vous avez un autre gestionnaire de sessions, vous pouvez vous référer à ce tutorial : https://wiki.archlinux.org/index.php/NVIDIA_Optimus#Display_Managers

Enfin, il va falloir modifier une ligne du grub, afin qu’il puisse démarrer avec la carte graphique NVIDIA, pour cela ouvrez en édition le fichier /etc/default/grub par l’éditeur de votre choix :

Commentez la ligne GRUB_CMDLINE_LINUX_DEFAULT en ajoutant un dièse (#) et rajouter la ligne suivante :

Vous devez donc obtenir :

Enfin, mettez à jour votre grub :

Rédémarrer votre machine, et installer les outils « cuda » afin d’utiliser votre GPU à la place de votre CPU pour tous les calculs généraux :

Après l’installation, vous pouvez vérifier si votre carte graphique est bien reconnu :

Ou simplement en utilisant l’utilitaire hashcat avec l’argument -I :

Voilà, votre GPU Nvidia est maintenant reconnu par Kali, à bientôt pour un nouvel article.

Fabio Pace


8 Replies to “Installation des Drivers Nvidia sur Kali Linux”

  1. Bonjour,

    Serait-il possible d’avoir la démarche similaire pour Debian « Stretch » 9 (stable) actuelle :
    – linux-image 4.9 64 bit
    – nvidia-driver 384-130.1 (c’est la version qu’il faut pour ma GTX950M, d’après nvidia-detect)

    Je dispose aussi d’une carte Intel :
    $ lspci | grep -E « VGA|3D »
    00:02.0 VGA compatible controller: Intel Corporation HD Graphics 5600 (rev 0a)
    01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 950M] (rev a2)

    Mais si je veux déjà tester l’installation de nvidia-driver :
    – avec aptitude → https://pastebin.com/sfCyGArx
    – avec apt ou apt-get → https://pastebin.com/JPhWvpkR
    Il y a tellement de conflits et de paquets, que j’utilise au quotidien, que je me trouve contraint de désinstaller, que cette installation est impossible.

    Comment faire, alors ? Car en l’état actuel des choses, la carte NVIDIA n’est gérée par aucun pilote, et n’est donc pas utilisée par le système. Ce qui est bien ballot, vous comprendrez.
    # lshw-gtk
    capture 1 → https://zupimages.net/up/19/01/tp3n.png
    capture 2 → https://zupimages.net/up/19/01/tzlw.png

    Le PC portable est un MSI PG62 2QE Leopard Pro. Ça fait un peu plus de 3 ans que je l’ai, mais j’ai jamais pu l’exploiter correctement à cause de ce problème de carte graphique pas utilisée. Ce qui fait que le CPU, qui se trouve donc sollicité pour tout faire, chauffe tellement, que je suis obligé de forcer le ventilo à fond, avec le bouton dédié du portable. Et même comme ça, par moments, le PC s’éteint brusquement car le processeur part en surchauffe. Et là, c’est plus drôle du tout, d’utiliser cet ordinateur pour faire quoi que ce soit (retouche photo, edition mutimédia, etc.).

    Merci.

    1. Bonjour,

      Je comprends tout à fait ton cas, et c’est vrai que c’est dommage de ne pas pouvoir profiter à 100% de ton PC.

      Cependant, je travail seulement sur Kali, et Kali est basé sur un vieux Debian : normalement la procédure devrait rester la même.

      Peux-tu faire une désinstallation complète des packets nvidia ?
      apt-get install remove nvdia*

      Véirife ta liste des dépendances, mets au minimum la liste officiel pour la version Stretch :

      deb http://deb.debian.org/debian stretch main
      deb-src http://deb.debian.org/debian stretch main


      deb http://deb.debian.org/debian-security/ stretch/updates main
      deb-src http://deb.debian.org/debian-security/ stretch/updates main


      deb http://deb.debian.org/debian stretch-updates main
      deb-src http://deb.debian.org/debian stretch-updates main

      Après avoir fait un update :
      apt-get update

      Installe les deux packets nvidia :
      apt-get install nvidia-driver nvidia-xconfig

      Fabio PACE

  2. Bonjour,

    J’y suis enfin arrivé. Il y a maintenant un pilote NVIDIA d’installé pour ma carte (https://zupimages.net/up/19/01/c3m4.png).

    Mais j’ai du opérer comme suit :

    – désinstaller tout ce qui concernait NVIDIA (puis rebooter) — comme vous l’aviez indiqué.

    – éditer mon /etc/apt/sources.list, et remettre en commentaire (ou supprimer) toutes les lignes que j’avais ajoutées dedans — et surtout celles des backports.
    Mais contrairement à votre conseil, il a fallu que je laisse « non-free » (à la suite de « main »). Sinon, les paquets nvidia n’apparaissent pas et ne peuvent alors pas être installés. Une petite vérification et il s’avère en effet que ces paquets, pour la Debian « Stretch » 9, font partie des paquets « non-free ».
    J’ai du aussi remettre « contrib » (à la suite de « main non-free »), sinon il persiste encore quelques problèmes de dépendances non satisfaites sur certains des paquets voulus.
    Une fois l’installation finie, un reboot à nouveau. Puis, une vérification avec lshw-gtk. Le pilote est bien installé.

    Donc, en fin de compte, mon problème venait de mon sources.list qui contenait les lignes pour les paquets en backports-stretch, et ces références pointent sur des paquets trop récents et avec des dépendances non satisfaites par manque d’autres paquets pas encore ajoutés dans la distro. Ce qui empêche d’installer le pilote NVIDIA correctement. Arf 😛

    Autre chose : je n’ai pas eu à installer ni à utiliser nvidia-xconfig. Ce paquet, dans Debian 9, est déclaré deprecated et il est déconseillé de l’utiliser.

    Merci pour votre aide.

  3. Bonjour,

    Voici une suite, car malgré avoir déjà fait tout ça, je ne pouvais pas démarrer Stellarium, qui m’indiquait, comme erreur, « OpenGL2 non présent… Veuillez utiliser mesa ou une ancienne version de Stellarium ». Ah bon ? Comment ça y’a pas opengl ?!? J’ai tous les paquets, pourtant.
    J’ai remarqué aussi que nvidia-settings était « vide », sans infos, me laissant comprendre que l’installation n’était pas terminée. Il m’incitait aussi à utilise nvidia-xconfig (Ah bon !?).

    Donc, il faut passer outre le fait que cette commande est déconseillée par Debian 9.
    J’ai donc du repris vos directives à partir de nvidia-xconfig — et donc, du l’utiliser quand même, malgré les recommandations du gestionnaire de paquets (dans mon cas, Synaptic ; mais j’utilise aussi, des fois, d’autres outils,en ligne de commande, eux, comme aptitude, apt-get, apt, ou encore apt-file).

    Je vais essayer d’être assez exhaustif, et surtout de ne rien oublier de ce que j’ai fait.
    Notes :
    a) MATE étant le bureau que j’utilise, les commandes sont copiées/collées depuis mate-terminal. Mon éditeur de texte s’appelle pluma (et équivaut à Gnome/gedit).
    b) les lignes de commandes, que je vais indiquer, précédées par ‘$’ sont en mode user, celles précédées par ‘#’ en mode admin (root) ; (ça m’évite d’avoir à le repréciser à chaque fois). C’est ce que mate-terminal utilise par défaut comme fin de prompt.
    c) Je n’ai pas blacklisté le module « Nouveau ». Et il semble que ce ne soit pas indispensable pour Debian Stretch 9. Je n’ai pas vu de problème de mon côté, en tout cas.

    # nvidia-xconfig –query-gpu-info
    m’a retourné aussi

    PCI BusID : PCI:1:0:0

    Comme vous l’aviez indiqué, et aussi d’après ce lien ( https://us.download.nvidia.com/XFree86/Linux-x86/375.39/README/randr14.html ), il faut créer xorg.conf :
    # pluma /etc/X11/xorg.conf
    et j’y ai copié le même contenu que le vôtre (ou de cette URL), et bien placé mon BusID de carte graphique (PCI:1:0:0) de la section Device. Puis sauvé le tout.

    Ensuite, en place de vos fichiers
    /usr/share/gdm/greeter/autostart/optimus.desktop
    /etc/xdg/autostart/optimus.desktop
    comme, pour mon cas, mon serveur X n’est pas gdm, mais lightdm, j’ai du faire comme indiqué sur l’URL que vous aviez indiqué, pour ceux qui ont un autre serveur X que gdm
    ( https://wiki.archlinux.org/index.php/NVIDIA_Optimus#Display_Managers ) :
    # pluma /etc/lightdm/display_setup.sh
    et placer dedans :
    #!/bin/sh
    xrandr –setprovideroutputsource modesetting NVIDIA-0
    xrandr –auto

    Sauver le tout, puis rendre ce fichier executable avec :
    # chmod +x /etc/lightdm/display_setup.sh

    Ensuite, éditer ce fichier :
    # pluma /etc/lightdm/lightdm.conf
    Trouver la ligne (commentée par défaut, car précédée d’un ‘#’), dans la section « [Seat:*] » :
    #display-setup-script=
    Et la changer en (ne pas oublier de supprimer le ‘#’ au début de la ligne, pour la dé-commenter) :
    display-setup-script=/etc/lightdm/display_setup.sh
    Et sauver tout ça.

    Ensuite, ça se corse un peu. Car la gestion de grub, dans Debian 9, diffère de votre Kali.
    Il ne faut pas éditer/créer de fchier /etc/default/grub.
    Il faut éditer un fichier source qui se trouve dans /etc/grub.d. Or il se trouve qu’il y en a plusieurs :
    # ls /etc/grub.d
    00_header 10_linux 30_os-prober 40_custom README
    05_debian_theme 20_linux_xen 30_uefi-firmware 41_custom
    Une petite recherche de qui contiendrait le paramètre à modifier :
    # grep -al ‘GRUB_CMDLINE_LINUX_DEFAULT’ /etc/grub.d/*
    /etc/grub.d/10_linux
    /etc/grub.d/20_linux_xen

    Une petite lecture rapide du README :
    00_*: Reserved for 00_header.
    10_*: Native boot entries.
    20_*: Third party apps (e.g. memtest86+).
    me fait comprendre que c’est le fichier 10_… qu’il va falloir éditer :
    # pluma /etc/grub.d/10_linux
    Une recherche du terme modeset m’indique que ce terme est placé non pas dans le paramètre GRUB_CMDLINE_LINUX_DEFAULT, mais dans le paramètre GRUB_CMDLINE_LINUX_RECOVERY. Problème. Comment faire ?
    J’ai tenté une première fois en mettant « nvidia-drm.modeset=1 » à la place de « nomodeset » dans ligne
    GRUB_CMDLINE_LINUX_RECOVERY= »$GRUB_CMDLINE_LINUX_RECOVERY nomodeset »
    Puis sauvé, et exécuté un :
    # update-grub
    Mais à la vérification du fichier de config de grub, la encore, placé et nommé à un autre endroit que dans Kali :
    # grep -a ‘nvidia-drm.modeset’ /boot/grub/grub.cfg
    Ne m’a rien retourné. Donc, c’est sûrement pas là qu’il fallait faire le changement.
    J’édite à nouveau le source de grub :
    # pluma /etc/grub.d/10_linux
    Je remet la ligné précédement modifiée à son origine :
    GRUB_CMDLINE_LINUX_RECOVERY= »$GRUB_CMDLINE_LINUX_RECOVERY nomodeset »
    Puis après cette partie :
    if [ « $vt_handoff » = 1 ]; then
    for word in $GRUB_CMDLINE_LINUX_DEFAULT; do
    if [ « $word » = splash ]; then
    GRUB_CMDLINE_LINUX_DEFAULT= »$GRUB_CMDLINE_LINUX_DEFAULT \$vt_handoff »
    fi
    done
    fi
    J’ajoute, à la suite (juste avant « linux_entry ()… ») :
    GRUB_CMDLINE_LINUX_DEFAULT= »$GRUB_CMDLINE_LINUX_DEFAULT nvidia-drm.modeset=1″
    Je sauve tout ça, puis refais une mise à jour de grub :
    # update-grub
    Puis reteste mon fichier de configuration de grub, créé :
    # # grep -a ‘nvidia-drm.modeset’ /boot/grub/grub.cfg
    linux /boot/vmlinuz-4.9.0-8-amd64 root=UUID=b14a4f78-ef1b-45af-b6e4-61b8dbee887b ro quiet nvidia-drm.modeset=1
    linux /boot/vmlinuz-4.9.0-8-amd64 root=UUID=b14a4f78-ef1b-45af-b6e4-61b8dbee887b ro quiet nvidia-drm.modeset=1
    Là, j’ai bien ma modif prise en compte, sur 2 lignes distinctes.

    Installation des paquets CUDA, comme vous l’avez indiqué (ou via Synaptic… au choix de l’utilisateur, hein ? Ça change rien.)

    Et là, maintenant, c’est là où on se demande si on a bien tout fait comme il faut et qu’on a pas tout bousillé… un redémarrage :
    # systemctl reboot

    Ça redémarre bien. Une fois logué, et dans mon bureau, je vérifie nvidia-settings (via le menu, et surtout pas depuis une console en root, car mate-settings-daemon va se mettre à grignoter toute la RAM et le SWAP, jusqu’à immobilisation complet de la machine qui n’aura plus de mémoire disponible. Même si on le kill, il remet ça, encore et encore. Il faut le stopper, afin de pouvoir redémarrer le système — il semble que le démarrage, depuis une console en root, de logiciels ayant une interface graphique crée ce problème).
    Et maintenant, j’ai bien des infos dedans.
    D’ailleurs, on peut déjà en avoir une petite certitude dès qu’on arrive sur le bureau, car les écritures sont plus petites qu’avant. Et j’ai toujours remarqué ce détail, à chaque fois que j’ai installé les pilotes proprio NVIDIA. Un petit réglage dans les apparences :
    Menu « Système » → « Préférences » → « Apparence » → « Apparence »
    Régler le nombre de pixels/pouce de 75 à 92, pour récupérer une taille d’écriture comme avant l’installation du pilote proprio NVIDIA — qui, à mon avis, doit s’aligner sur le nombre de pixels/pouce de ma carte graphique GTX950M (valeur lue dans les infos de la carte, dans nvidia-settings).

    Pfiou ! Comme vous pouvez le constater, la finalisation n’a pas été aussi simple que ça. J’ai du chercher, et tenter des choses, sans être bien sûr du résultat final.
    Mais ça fonctionne. Le changement de la taille des écritures (due à la densité baissée par l’installation) peut servir de bon indicateur sur le succès de l’installation.

    Une autre preuve :
    # glxinfo | head
    name of display: :0
    display: :0 screen: 0
    direct rendering: Yes
    server glx vendor string: NVIDIA Corporation
    server glx version string: 1.4
    server glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context,
    GLX_ARB_create_context_profile, GLX_ARB_create_context_robustness,
    GLX_ARB_fbconfig_float, GLX_ARB_multisample, GLX_EXT_buffer_age,
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile,

    Voilà. Ce sont les infos qu’on retrouve aussi dans nvidia-settings.
    Si l’installation n’était pas réalisée, je n’aurais pas ces infos là, mais des messages indiquant qu’il manque ci et ça.
    J’aurais du penser à en faire une copie avant de faire tout ça. :\

    1. Bonjour Zebulon,

      Quelle description de la marche à suivre ! Bravo !
      Oui tu as raison pour le paquet « Nouveau », pas besoin de l’utiliser pour Debian (c’est différent de Kali).

      Je pense que ton dernier commentaire pourrait faire l’affiche d’un nouvel article 🙂
      Je te tiens informé pour la suite.

      Bonne journée.

  4. Bonjour,

    Oui, en effet. Il y aurait de quoi faire un tuto distinct sur l’installation des pilotes propriétaires NVIDIA sur un PC portable équipé d’un couple de contrôleurs graphiques :
    – Intel pour le contrôleur VGA ( → https://zupimages.net/up/19/01/tp3n.png )
    – NVIDIA (carte ….M) pour le contrôleur 3D ( → https://zupimages.net/up/19/01/tzlw.png )

    Dans ce cas, n’hésitez pas à me contacter ( par mail ), s’il vous faut des éclaircissements supplémentaires.

    Bonne journée. 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.