Page 2 sur 3
Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 13:56
par FoolEcho
Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 15:12
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 :
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

Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 15:47
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
Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 15:53
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 !
Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 16:07
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

Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 16:10
par benjarobin
Ba j'ai juste automatisé ce que tu m'as dis de faire, rien de plus rien de moins
Je pense que tu as oublié de parler du switch des fichier de conf de Xorg
Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 16:21
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
Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 16:36
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.
Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 16:56
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"
Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 18:19
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...)
Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 18:57
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

Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 21:44
par Feng
J'ai du mal :/ mon script n'est pas appelé lors de l'ouverture de la session :'(
Re: [pkg] Kit Vostro 3700
Publié : dim. 01 mai 2011, 23:26
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 ?!!
Re: [pkg] Kit Vostro 3700
Publié : lun. 02 mai 2011, 15:15
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é ...
Re: [pkg] Kit Vostro 3700
Publié : lun. 02 mai 2011, 20:36
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.

Re: [pkg] Kit Vostro 3700
Publié : mar. 03 mai 2011, 14:47
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.
Re: [pkg] Kit Vostro 3700
Publié : mar. 03 mai 2011, 15:08
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é.
kd
m
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.
Re: [pkg] Kit Vostro 3700
Publié : mar. 03 mai 2011, 15:11
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 ?
Re: [pkg] Kit Vostro 3700
Publié : mar. 03 mai 2011, 15:26
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.
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

). 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é).
Re: [pkg] Kit Vostro 3700
Publié : mer. 04 mai 2011, 02:32
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
Le script d'extinction je l'installe du coup ? ou ... ou quoi ?