Forum Linux.général cherche idée pour éteindre un portable après coupure d'alimentation

Posté par .
3
5
avr.
2012

Bonjour,

je viens vous demander des idées / pistes pour résoudre le problème suivant:

Je vais utiliser un vieux portable avec une batterie fonctionnelle comme serveur mpd branché sur un ampli. Je voudrais pouvoir mettre en place un système qui fasse en sorte que:

  1. lorsque je coupe l'alimentation électrique (sur une prise multiple), le portable soit lance un shutdown ou éventuellement passe en hibernation
  2. si possible, lorsque je remet le courant il sorte d'hibernation.

En effet, j'ai l'habitude d'éteindre physiquement les appareils branchés sur cette prise lorsque je ne m'en sers pas et je voudrais éviter de devoir intervenir sur le portable (directement ou via ssh) pour ce faire.

Pour le 1, je pense que la coupure d'alimentation doit produire un évènement au niveau du noyau (ACPI ?) qu'il faudrait que j'intercepte pour lancer derrière un script de shutdown propre. Mais où faire tout ca ? est-ce seulement une bonne idée ?

Pour le 2, j'ai peur que ca soit plus compliqué, mais peut être avez vous des idées pour m'aider ?

merci d'avance.

  • # gnome-power-manager

    Posté par (page perso) . Évalué à 2.

    Je sais, c'est moche, mais si tu ne veux pas t'embêter à scripter/configurer quoi que ce soit, gnome-power-manager peut être une solution, avec les règles suivantes (et l'écran fermé bien sûr) :

    sur batterie, fermeture écran => hibernation
    sur secteur, fermeture écran => éteindre écran

  • # /etc/acpi, tout est là

    Posté par (page perso) . Évalué à 8.

    Pour le 1, je pense que la coupure d'alimentation doit produire un évènement au niveau du noyau (ACPI ?) qu'il faudrait que j'intercepte

    Oui, un évènement de type ac_adapter. Tu peux « intercepter » et réagir à cet évènement avec acpid(8).

    Par exemple, voici ce que je fais sur ma Slackware :

    – un fichier /etc/acpi/events/ac_adapter (le nom du fichier n’a pas d’importance, mais il doit être dans /etc/acpi/events) définit le script à lancer à la réception d’un évènement concernant l’alimentation secteur :

    event=ac_adapter
    action=/etc/acpi/ac_adapter_handler.sh
    
    

    – le script en question teste si l’adaptateur secteur a été branché ou débranché, et agit en conséquence :

    #!/bin/sh
    ac_status=$(cat /sys/class/power_supply/AC/online)
    
    if [ "x$ac_status" = x1 ]; then
        # AC adapter is present
        ...
    else
        # No AC adapter, we're running on battery
        ...
    fi
    
    

    si possible, lorsque je remet le courant il sorte d'hibernation […] j'ai peur que ca soit plus compliqué, mais peut être avez vous des idées pour m'aider ?

    Si par « hibernation » tu entends bien « suspend-to-disk », ça devrait être possible, il suffirait que, par défaut, le chargeur de démarrage démarre un noyau avec l’option « resume ».

    est-ce seulement une bonne idée ?

    Ce pourrait éventuellement être une mauvaise idée de se mêler de ce qui se passe dans /etc/acpi si ta distribution a déjà installé ses propres gestionnaires d’évènements ACPI : il vaut mieux alors se servir des outils de configuration que la distribution met à ta disposition (comme le gnome-power-manager évoqué ci-dessus, par exemple) plutôt que d’essayer de les court-circuiter sauvagement.

    • [^] # Re: /etc/acpi, tout est là

      Posté par . Évalué à 2.

      super, merci je vais essayer ca. La distrib est une debian, pas de X dessus, donc pas de gnome power manager … je vais regarder dans la doc acpi debian, mais ta solution devrait marcher je pense.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.