News - Logiciels Libres

Solution Gentoo / Calculate Linux : Entrée en session aléatoire et nvidia-smi à 100%

Par , le dans Logiciels Libres - 1 Commentaire
Solution Gentoo / Calculate Linux : Entrée en session aléatoire et nvidia-smi à 100%
Salut à tous,

cela faisait un moment que j'avais pas écrit ici ...

Je reprends la plume électronique (LOL) pour rédiger ce petit article à propos d'un bug que je rencontrais depuis Mai environ, mais je constate que d'autres personnes rencontrent un souci similaire.

Vous êtes sur Calculate Linux ou Gentoo et vous possédez une carte NVidia Optimus ? Après votre login la session ne s'ouvre pas ? Le problème est aléatoire ? Voici peut être la solution.

D'abord, si la session ne s'ouvre pas, basculez en console via Ctrl+Alt+F2.
Connectez-vous en root, et faites un petit
Code BASH :
htop


Si vous constatez qu'un processus /opt/bin/nvidia-smi prend 100% d'un CPU, vous rencontrez le même bug que moi.

J'ai bien essayé de Googler sans trouver la solution :(

Après quelques diagnostiques, nvidia-smi semble se lancer un peu trop tôt et plante.
En recherchant son lancement, j'arrive au script /lib/udev/nvidia-udev.sh

Il contient :
Code BASH :
#!/bin/sh
 
if [ $# -ne 1 ]; then
    echo "Invalid args" >&2
    exit 1
fi
 
case $1 in
    add|ADD)
        #hopefully this prevents infinite loops like bug #454740
        if lsmod | grep -iq nvidia; then
            /opt/bin/nvidia-smi > /dev/null
        fi
        ;;
    remove|REMOVE)
        rm -f /dev/nvidia*
        ;;
esac
 
exit 0
 


Vu que nvidia-smi se lance un peu tôt, on va le retarder avec un sleep avant, et ça fonctionne impec depuis Mai-Juin que je rencontrais le problème :

Code BASH :
    #hopefully this prevents infinite loops like bug #454740
        if lsmod | grep -iq nvidia; then
            sleep 2
            /opt/bin/nvidia-smi > /dev/null
        fi
 


On reboot et basta ça marche à tous les coups !

Ce fichier fait partie de nvidia-drivers donc il faut réappliquer la modif à chaque fois que nvidia-drivers est réémergé. Pour faire simple, un petit sed :

Code BASH :
sed -e 's@/opt/bin/nvidia-smi@sleep 2 ; /opt/bin/nvidia-smi@' -i /lib/udev/nvidia-udev.sh


En vidéo les explications :

N'hésitez pas à sélectionner la qualité HD en 720p ou 1080p !