Pm-utils

Aller à : navigation, rechercher
Version : 10.3+L'information ci-dessous est pour openSUSE 10.3 et au-delà.
Acroread.png Cet article est à relire !

Cette page demande à être relue pour correction. Si vous pouvez y participer, merci de le faire en accord avec le Guide stylistique openSUSE.
Si vous cherchez quelque chose à faire, regardez les autres Pages à relire.


pm-utils – l'infrastructure de nouvelle génération pour la mise en veille / suspension

pm-utils est le nouveau cadre (framework) pour suspendre et gérer l'alimentation. Il est d'ordinaire utilisé par HAL pour exécuter les différentes corvées (hacks) nécessaires pour contourner les bogues dans les pilotes et les sous-systèmes qui ne sont pas au fait (aware) de la suspension. il est facilement extensible en mettant des 'crochets' (hooks) personnalisés dans un répertoire, ce qui peut être fait par l'administrateur, de même ces crochets peuvent provenir d'un paquetage, tout particulièrement si ce paquetage nécessite des attentions particulières pendant une suspension du système ou un changement d'état de l'alimentation

Bien que pm-utils soit un cadre qui sera commun aux différentes distributions Linux dans l'avenir, il y a encore certaines particularités et rustines propres à SUSE qui ne sont pas encore intégrées. Les variables de configuration propres à SUSE seront signalées..

Fonctionnalités de base (ou "Comment ça marche")

Le concept est très simple: le script principal (pm-action, appelé par des liens comme pm-suspend, pm-hibernate or pm-suspend-hybrid) exécute les dits "crochets" (hooks"), qui sont des scripts exécutables, par ordre alphabétique, avec le paramètre suspend (mise en veille RAM) or hibernate (mise en veille disque). Une fois que les crochets sont exécutés, il met la machine en sommeil. Quand la machine est réveillée, tous ces crochets sont exécutés dans l'ordre inverse avec le paramètre resume (reprise de RAM) ou thaw (reprise de disque). Noter que suspend-hybrid est actuellement un emplacement qui n'est pas complètement opérationnel. Les "crochets" font différentes choses, comme préparer le gestionnaire d'amorçage, arrêter le système bluetooth ou décharger des modules critiques.

Tant pm-suspend que pm-hibernate sont habituellement appelés par HAL, initiés par des appliquettes bureau telles que gnome-power-manager ou kpowersave.

Il y a aussi la possibilité de mettre la machine en mode pleine puissance ou faible puissance, la commande pm-powersave est utilisée avec un paramètre supplémentaire true ou false. Cela fonctionne de la même manière que le dispositif de mise en veille.

Les "crochets" pour suspendre sont mis dans

  • /usr/lib/pm-utils/sleep.d ("crochets" fournis par distribution/paquetage)
  • /etc/pm/sleep.d ("crochets" ajoutés par l'administrateur)

Les "crochets" pour gérer l'énergie/alimentation sont mis dans

  • /usr/lib/pm-utils/power.d ("crochets" fournis par distribution/paquetage)
  • /etc/pm/power.d ("crochets" ajoutés par l'administrateur)

Les "crochets" de /etc/pm/ sont prioritaires sur ceux de /usr/lib/pm-utils/, aussi, l'administrateur peut-il remplacer ceux fournis par défaut par la distribution.

Configuration

Le fichier principal de configuration est /usr/lib/pm-utils/defaults. On ne devrait pas modifier ce fichier, car après une mise à jour de paquetage, il sera réécrit avec les options par défaut. Mettre son fichier de configuration dans /etc/pm/config.d/ plutôt. On peut mettre un simple fichier texte avec

SUSPEND_MODULES="button uhci_hcd"

appelé "modules" ou "config" dans /etc/pm/config.d et il remplacera les options du grand fichier de configuration système.

les variables des fichiers de configuration

SUSPEND_MODULES="button" # liste des modules à décharger avant mise en veille

variables spécifiques à SUSE

HIBERNATE_METHOD={userspace,kernel} # sélectionne la méthode de  suspension sur disque. Par défaut userspace.
S2RAM_OPTS="" # options qui sont passées à s2ram. Voir aussi s2ram pour plus d'information.

Dysfonctionnements

Si la mise en veille mémoire ou l'hibernation sur disque ne fonctionnent pas correctement, on trouvera sûrement quelques infos dans le fichier /var/log/pm-suspend.log, par exemple quels "crochets" ont été exécutés et quels ont été leurs sorties.

Créer ses propres 'crochets'

Si on veut faire un traitement spécial pour la suspension/hibernation, on peut facilement mettre son propre 'crochet' dans /etc/pm/sleep.d. Les crochets sont appelés par ordre alphabétique pendant la suspension (c'est pourquoi leurs noms commencent tous par deux chiffres, pour rendre l'ordre explicite) et dans l'ordre inverse pendant la reprise.

Voici un exemple de crochet sans utilité réelle, qui va juste mettre quelques lignes dans le fichier log:

#!/bin/bash
case $1 in
    hibernate)
        echo "Euh, on suspend sur disque!!"
        ;;
    suspend)
        echo "Cette fois on suspend sur RAM. Cool!"
        ;;
    thaw)
        echo "oh, l'hibernation sur disque est terminée, on reprend..."
        ;;
    resume)
        echo "voilà, la suspension sur RAM se termine..."
        ;;
    *)  echo "quelqu'un appelle cette procédure de manière complètement erronée."
        ;;
esac

Mettre ceci dans le fichier /etc/pm/sleep.d/66dummy, faire un chmod +x /etc/pm/sleep.d/66dummy et cela va rendre quelques lignes sans intérêt pendant la suspension/reprise

Attention Tous les 'crochets' sont exécutés en tant qu'utilisateur root. Cela signifie qu'il faut faire très attention quand on crée des fichiers temporaires, s'assurer que la variable PATH est correcte etc. pour éviter les problèmes de sécurité.


Astuces et trucs divers / FAQ

Déclenchement manuel de la mise en veille

Pour déclencher manuellement la mise en veille pour tests, sans utiliser HAL et autres cadres, appeler pm-suspend ou pm-hibernate en tant que root.

Attention: ce n'est utile qu'à des fins de tests et il vaut mieux savoir ce qu'on fait quand on utilise cela.

Utilisation de la mise en veille en RAM sur des machines qui ne sont pas dans la liste blanche de s2ram

Pour forcer la suspension en RAM, il faut ajouter -f à la variable S2RAM_OPTS dans un fichier de configuration mis dans /etc/pm/config.d/, voir Configuration. Il faut aussi mettre toutes les autres options souhaitées pour la machine dans cette variable. Un exemple pourrait être:

S2RAM_OPTS="-f -a 3"

Ce serait une bonne idée de signaler la machine comme indiqué à la page s2ram, afin d'éviter de faire de même à l'avenir.

Désactivation d'un 'crochet'

Si un crochet est exécuté qu'on ne souhaite pas ou dont on pense qu'il est inutile ou même nuisible, nous apprécierions un rapport de bogue à ce sujet. On peut toutefois facilement désactiver les crochets en créant un fichier vide correspondant au crochet dans /etc/pm/sleep.d/. Si l'on veut désactiver le crochet /usr/lib/pm-utils/sleep.d/45pcmcia, on peut le faire par

touch /etc/pm/sleep.d/45pcmcia

Ne pas rendre exécutable ce crochet vide

Redémarrage de la souris

Sur certains portables, la souris reste bloquée après une reprise pourtant réussie. Un moyen de remédier à cela est de forcer la réinitialisation du pilote PS/2 (ici i8042) par un 'crochet' dans /etc/pm/hooks (voir 'crochets')

#!/bin/sh  
echo -n "i8042" > /sys/bus/platform/drivers/i8042/unbind
echo -n "i8042" > /sys/bus/platform/drivers/i8042/bind

--Esox81 20:30, 22 August 2007 (UTC)

Rien ne semble se passer / où est le fichier log

Si rien ne semble se passer quand l'appel se fait par les appliquettes du bureau, il faut essayer d'appeler pm-suspend ou pm-hibernate manuellement à partir d'un terminal de commande root. Peut-être trouvera-t'on quelque sortie qui aidera à cerner le problème. Les scripts de suspension écrivent un fichier log à /var/log/pm-suspend.log.