[pkg] Kit Vostro 3700

Mise à jour / Création /debug de paquetages
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [pkg] Kit Vostro 3700

Message par FoolEcho »

Sinon, pour attendre X, tu as des exemples là: http://forums.archlinux.fr/post62989.html#p62989 ;)
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

Le démon n'a qu'une seule vraie fonction : start .

Si le fichier /etc/switch == 1 il doit exécuter le code suivant :

Code : Tout sélectionner

      echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
      echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
      echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
      echo "IGD" > /sys/kernel/debug/vgaswitcheroo/switch
      echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
      echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
      echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
Sinon, il doit attendre le démarrage de X, et exécuter :

Code : Tout sélectionner

/usr/bin/test_off.sh
Puis il doit attendre le DE et envoyer une notification spécifiant que la carte NVidia a bien été stoppé.

J'ai lu dans le wiki qu'il fallait au minimum 3 actions : start, stop et restart. Seule start sert, car il n'y a rien à arrêter ou à redémarrer (il faut reboot (ou en tout cas tuer X) pour faire un changement de carte graphique)

Voici mon daemon à l'heure actuelle :

Code : Tout sélectionner

#!/bin/bash

daemon_name=hybrid-switch

. /etc/rc.conf
. /etc/rc.d/functions

case "$1" in
start)
	stat_busy "Switching to NVidia Card"
	if [[ `cat /etc/switch` == "1" ]]
	then
	
		echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
		echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
		echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
		echo "IGD" > /sys/kernel/debug/vgaswitcheroo/switch
		echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
		echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
		echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
		
		stat_done
	else
		(export DISPLAY=":0.0"
		      while ! xset -q >& /dev/null; do
		         sleep 2
		      done
		      /etc/bin/test_off.sh
		      sleep 10
		      notify-send -i /usr/share/icons/default.kde4/48x48/apps/hwinfo.png "<b>Hybrid Switch</b>" "NVidia discrete card shutted down"
		) &
		ck_status "No"
	fi
;;
stop)
	echo "Cannot stop this daemon"
	exit 1
;;
restart)
	echo "Cannot restart this daemon"
	exit 1
;;
*)
echo "usage: $0 {start}"
esac
Il ne fonctionne pas :/

Edit :merci @FoolEcho pour l'attente de X :)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [pkg] Kit Vostro 3700

Message par benjarobin »

Code : Tout sélectionner

#!/bin/bash

daemon_name=hybrid-switch

. /etc/rc.conf
. /etc/rc.d/functions

case "$1" in
start)
	if [[ `cat /etc/switch` == "1" ]]
	then
		stat_busy "Switching to NVidia Card"
		echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
		echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
		echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
		echo "IGD" > /sys/kernel/debug/vgaswitcheroo/switch
		echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
		echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
		echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
		stat_done
	else
		stat_busy "Shutting down NVidia Card"
		(export DISPLAY=":0.0"
		export XAUTHORITY="/home/tonuser/.Xauthority"
		while ! xset -q >& /dev/null; do
			sleep 2
		done
		/usr/bin/test_off.sh
		sleep 10
		#Attendre que DE soit demarré... Il faudrait trouvé une solution
		notify-send -i /usr/share/icons/default.kde4/48x48/apps/hwinfo.png "<b>Hybrid Switch</b>" "NVidia discrete card shutted down"
		) &
		#ck_status "No" #???? C'est quoi
		stat_done
	fi
;;
stop)
   #echo "Cannot stop this daemon"
   exit 1
;;
restart)
   echo "Cannot restart this daemon"
   exit 1
;;
*)
	echo "usage: $0 {start}"
esac
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

La fonction ck_status permet de définir un message personnalisé au lieu de "done" ou "busy" ou encore "fail" . Je l'ai trouvé dans le daemon d'apache (httpd).

Y'a quand même un problème avec ton daemon, c'est que il faut spécifier le user ... Pas génial pour un package !
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

J'ai testé ton démon, il fonctionne pour le switch, par contre pour l'extinction ça ne fonctionne pas, un bel écran noir :D
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [pkg] Kit Vostro 3700

Message par benjarobin »

Ba j'ai juste automatisé ce que tu m'as dis de faire, rien de plus rien de moins :D
Je pense que tu as oublié de parler du switch des fichier de conf de Xorg
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

Le switch des fichier c'est mon script qui s'en occupe :

Code : Tout sélectionner

#!/bin/bash

if [[ `whoami` != "root" ]]
then
echo "You have to run this script as root"
exit 1
fi

if [[ `cat /etc/switch` == "0" ]] && [[ $1 == "nvidia" ]]
then
echo "Switch config to NVidia GPU..."
echo "1" > /etc/switch
mv /etc/X11/xorg.conf.d/.20-nouveau.conf /etc/X11/xorg.conf.d/20-nouveau.conf
else
	if [[ $1 == "nvidia" ]] 
	then
	echo "NVidia GPU config already enabled"
	fi
fi

if [[ `cat /etc/switch` == "1" ]] && [[ $1 == "intel" ]]
then
echo "Switch config to Intel IGP..."
echo "0" > /etc/switch
mv //etc/X11/xorg.conf.d/20-nouveau.conf /etc/X11/xorg.conf.d/.20-nouveau.conf
else
        if [[ $1 == "intel" ]]
        then
		echo "Intel IGP config already enabled"
        fi
fi
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

Bon y'avait une boulette dans mes fichiers de conf (je faisais ça manuellement avant de mettre à jour mon script, mise à jour que j'ai faites juste avant de te poster le script)

Maintenant X démarre, par contre, au chargement de KDE, ça foire. Ca freeze complètement, impossible même de passer sous une console, un bon gros freeze. J'ai pensé que ça venait des 10 secondes, alors j'ai attendu au login une bonne trentaine de secondes, et non ça ne freeze pas, c'est donc bel et bien quand KDE démarre, que ça plante.
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

En inversant le sleep 10 (que j'ai passé à 30) et le test_off, KDE se lance correctement. Cependant on ne reçoit pas de notification :/ Je pense que ça vient de cette histoire de .Xautority

Code : Tout sélectionner

#!/bin/bash

daemon_name=hybrid-graphics-switch

. /etc/rc.conf
. /etc/rc.d/functions

case "$1" in
start)
        if [[ `cat /etc/hybrid-grapgics-switch` == "1" ]]
        then
                stat_busy "Switching to NVidia Card"
                echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
                echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
                echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
                echo "IGD" > /sys/kernel/debug/vgaswitcheroo/switch
                echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
                echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
                echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
                stat_done
        else
                stat_busy "Shutting down NVidia Card"
                (export DISPLAY=":0.0"
                export XAUTHORITY="/home/feng/.Xauthority"
                while ! xset -q >& /dev/null; do
                        sleep 2
                done
                sleep 30
                /usr/bin/test_off.sh
                #Attendre que DE soit demarré... Il faudrait trouvé une solution
                notify-send -i /usr/share/icons/default.kde4/48x48/apps/hwinfo.png "<b>Hybrid Graphics Switch</b>" "NVidia discrete card shutted down"
                ) &
                #ck_status "No" #???? C'est quoi
                stat_done
        fi
;;
stop)
        #echo "Cannot stop this daemon"
        exit 1
;;
restart)
        echo "Cannot restart this daemon"
        exit 1
;;
*)
echo "usage: $0 {start}"
esac
PS : je change le nom pour "hybrid-graphics-switch", au cas où il y ai des switch d'autres chose "who knows what"
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [pkg] Kit Vostro 3700

Message par FoolEcho »

Je ne suis pas trop calé administration système, mais pour la notification, pam pourrait servir, non ? (ou alors suggèrer à l'utilisateur de rajouter le script de notification selon sa session: .bash_profile ou script de démarrage selon sa session...)
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

Yay ! J'ai googlé PAM et je suis tombé la-dessus : http://linux-attitude.fr/post/pam_exec

Je script tout ça et je up :)
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

J'ai du mal :/ mon script n'est pas appelé lors de l'ouverture de la session :'(
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

Le script en lui-même fonctionne mais pour la notification, il ne veut pas me l'afficher et m'affiche un code d'erreur 134. En exportant le display et le xautority il ne donne plus d'erreur, mais aucune notification ...

Par contre, je n'arrive pas à le faire appeler. Si j'ajoute :

Code : Tout sélectionner

session         optional        pam_exec.so seteuid log=/var/log/hybrid-graphics-switch /usr/local/bin/discrete-card-shutdown
Dans /etc/pam.d/login , ça ne fonctionne pas (le script n'est pas appelé). Par contre si je l'ajoute dans /etc/pam.d/su et que je fais un "su" dans la console, alors le script est appelé comme il se doit. What's wrong ?!!
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

Visiblement pam.d/login n'est appelé que lors de login via la console... Il y a bien un pam.d/kde mais ça nous ramène à l'inter-opérabilité ...
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [pkg] Kit Vostro 3700

Message par FoolEcho »

Feng a écrit :Visiblement pam.d/login n'est appelé que lors de login via la console
Dommage, le coup paraissait parfait... Il faudrait donc rajouter la règle dans chaque méthode de login ? Pas pratique du tout (j'ai un peu regardé la doc, mais c'est assez... succinct sur le rôle des différents fichiers). Je crains qu'il n'y ait pas vraiment de solution propre à ce problème au niveau système (mais comme je t'ai dit, l'administration système n'est pas mon rayon). :?:
A mon sens, il faut à l'issue de l'installation du paquet que tu avertisses que l'utilisateur désirant avoir la notification (ou savoir quelle carte tourne) passe par ton petit script, quitte à l'installer pour son propre environnement graphique (~/.bash_profile pour la console ou scripts au démarrage avec gnome, kde, etc.)... c'est peut-être moins beau qu'une gestion automatique et centralisée mais c'est propre et facile à mettre en oeuvre... ça reste KISS, en somme. :|
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

Il n'y a pas que la notification, il y a l'extinction de la carte dédiée pour sauver de l'énergie :/

Je pense qu'une solution serait de détecter la présence de login, xdm, gdm, kde et/ou de slim dans /etc/pam.d pour y installer la nouvelle règle. Et on affiche un message disant où la nouvelle règle a été insérée, et un message autre si aucun de ces fichier n'a été trouvé. Ce sont les Display Manager les plus utilisés du marché donc ça devrait convenir à 99% des utilisateur. Pour les 1% rien ne nous empêche de fournir la règle dans le message, ainsi que le chemin vers le script.
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [pkg] Kit Vostro 3700

Message par FoolEcho »

Feng a écrit :Je pense qu'une solution serait de détecter la présence de login, xdm, gdm, kde et/ou de slim dans /etc/pam.d pour y installer la nouvelle règle. Et on affiche un message disant où la nouvelle règle a été insérée, et un message autre si aucun de ces fichier n'a été trouvé.
kdm
Sauf que dans la philosophie d'Arch, il me semble que ce n'est pas à toi de rajouter ladite règle dans des fichiers existants (c'est pourquoi j'insiste autant sur cet aspect).
Soit il y a moyen de notifier proprement par un fichier de configuration extérieur (ce qui n'a malheureusement pas l'air d'être le cas :( ), soit tu précises à l'installation la/les manipulation(s) à faire pour l'obtenir (et le pourquoi)... y compris au niveau système.
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

non non, kde pas kdm

Rien n'empêche de proposer de faire la manipulation pour lui lors de l'installation du paquet avec un texte expliquant le pourquoi du comment. C'est juste un echo après tout hein ...

Am I wrong ?
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [pkg] Kit Vostro 3700

Message par FoolEcho »

Feng a écrit :non non, kde pas kdm
Kdm est le gestionnaire de connexion de kde... ha nan, d'accord, tu parles des fichiers au niveau pam.d. ;)
Feng a écrit :Rien n'empêche de proposer de faire la manipulation pour lui lors de l'installation du paquet avec un texte expliquant le pourquoi du comment. C'est juste un echo après tout hein ...

Am I wrong ?
Tu as tort. :copain:
Quand pacman t'installe un paquet accompagné de configuration, il t'a déjà dit: "ah tiens, au fait , j'ai bidouillé trois/quatre lignes sur tes fichiers système pour que ce que je viens de t'installer fonctionne" ? Ben moi, jamais (et j'aime Arch pour ça aussi :D ). Soit il y a des echo sur ce que j'ai à faire par moi-même, soit c'est carrément le fichier de configuration en pacnew, que je regarde ou non... mais la configuration est mon problème.
Par contre, ce qui est acceptable selon moi et que tu fournisses un jeu de fichiers dans /etc/pam.d/ en expliquant pourquoi (par contre faut tester l'impact, je ne sais pas comment pam lit ces fichiers ... au pire tu colles ça dans /etc/skel/ ... :? ). Et là l'utilisateur final te sera reconnaissant de lui fournir les outils de configuration sans pour autant lui forcer la main (comme ça tu fournis ton gdm, kde, slim, login and co pour pam en précisant qu'un autre gestionnaire de connexion nécessite de modifier soi-même le fichier approprié).
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Feng
yeomen
Messages : 273
Inscription : mer. 07 avr. 2010, 20:19

Re: [pkg] Kit Vostro 3700

Message par Feng »

Je vois pas où est le problème du moment qu'on lui PROPOSE et on lui DIT ce qu'on va faire.

Cela dit, c'est toi le guru hein, si tu dis qu'on lui donne juste les infos, ben il se débrouille avec :D

Le script d'extinction je l'installe du coup ? ou ... ou quoi ?
Répondre