Après la mise à niveau vers Ubuntu GNOME 15.04 (à partir de 14.10), j’ai remarqué que mes hooks pm-utils
dans /etc/pm/sleep.d
ne fonctionnaient plus en suspension/reprise.
J'ai un script personnalisé qui enregistre la luminosité avant de suspendre et le restaure après la reprise. Si je lance manuellement Sudo pm-suspend
, les crochets s'exécutent, mais si je ferme le couvercle de l'ordinateur portable (ce qui suspend Ubuntu), les scripts ne sont pas exécutés. Est-ce que je manque quelque chose?
Le script de luminosité dans /etc/pm/sleep.d est (travaillé le 14.04 et le 14.10):
#!/bin/bash
case "$1" in
suspend|suspend_hybrid|hibernate)
cat /sys/class/backlight/acpi_video0/brightness > /tmp/.brightness_level
# modprobe -r nvidiabl
;;
resume|thaw)
# modprobe nvidiabl
cat /tmp/.brightness_level > /sys/class/backlight/acpi_video0/brightness
rm /tmp/.brightness_level
;;
esac
Mise à jour : Nous avons trouvé une solution plus agréable en utilisant systemd
sans script externe. Créez et activez le service suivant:
[Unit]
Description=Save brightness on suspend
DefaultDependencies=no
RequiresMountsFor=/var/lib/systemd/backlight
Before=sleep.target
StopWhenUnneeded=yes
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/lib/systemd/systemd-backlight save acpi_video0
ExecStop=/lib/systemd/systemd-backlight load acpi_video0
TimeoutSec=90s
[Install]
WantedBy=sleep.target
Ubuntu 16.04 Remarque : le nom du périphérique de rétroéclairage cible doit être précédé du préfixe "rétroéclairage:" (par exemple, backlight:acpi_video0
).
Activez-le en exécutant: systemctl enable suspend-save-backlight.service
(ou comme vous l'appelez). Notez que acpi_video0 est le nom du lien symbolique de rétroéclairage dans /sys/class/backlight
utilisé pour contrôler la luminosité de l’affichage. Il peut varier d’un système à l’autre.
Ce qui précède utilise l'exécutable systemd-backlight
de systemd pour enregistrer et charger la luminosité avant la suspension et après la reprise, respectivement (inspiré de /lib/systemd/system/[email protected]
qui enregistre/charge la luminosité au redémarrage/au démarrage).
Ancienne solution (relie un service systemd
à mon crochet pm-utils)
Trouvé le problème. Selon cet article sur ArchWiki :
systemd n'utilise pas pm-utils pour mettre la machine en veille lors de l'utilisation de systemctl suspend, systemctl hibernate ou systemctl hybrid-sleep; Les hooks pm-utils, y compris les hooks personnalisés , ne seront pas exécutés. Cependant, systemd fournit deux mécanismes similaires pour exécuter des scripts personnalisés sur ces événements.
La bonne façon de procéder avec systemd
(utilisée par défaut dans 15.04) consiste à créer les fichiers de service suivants qui exécutent mon script de contrôle de la luminosité dans /etc/pm/sleep.d/
comme suit:
/etc/systemd/system/root-suspend.service
:
[Unit]
Description=Local system suspend actions
Before=sleep.target
[Service]
Type=simple
ExecStart=-/etc/pm/sleep.d/nvidiabl_brightness suspend
[Install]
WantedBy=sleep.target
/etc/systemd/system/root-resume.service
:
[Unit]
Description=Local system resume actions
After=suspend.target
[Service]
Type=simple
ExecStart=-/etc/pm/sleep.d/nvidiabl_brightness resume
[Install]
WantedBy=suspend.target
Puis exécutez ce qui suit pour activer ces services:
systemctl enable root-suspend.service
systemctl enable root-resume.service
Reportez-vous à l'article lié pour plus de détails.