Ubuntu 15.04 Suspend не запускает «pm-suspend»

5

После обновления до Ubuntu GNOME 15.04 (с 14.10), я заметил, что мои крючки pm-utils в /etc/pm/sleep.d больше не работают при приостановке / возобновлении.

У меня есть собственный скрипт, который сохраняет яркость перед приостановкой и восстанавливает ее после возобновления. Если я вручную запустил sudo pm-suspend , то крючки выполняются, но если я закрою крышку ноутбука (который приостанавливает Ubuntu), сценарии не выполняются. Я что-то пропустил?

Сценарий яркости в файле /etc/pm/sleep.d (работает с 14.04 и 14.10):

#!/bin/bash

case "" 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
    
задан Sir_FZ 07.05.2015 в 11:10
источник

1 ответ

7

Обновление . Нашел более приятное решение, используя systemd без внешних скриптов. Создайте и включите следующую службу:

[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 Примечание . Имя устройства целевой подсветки должно иметь префикс «подсветка:» (например, backlight:acpi_video0 ).

Включить, выполнив: systemctl enable suspend-save-backlight.service (или как вы это называете). Обратите внимание, что acpi_video0 - это название символической ссылки подсветки в /sys/class/backlight , которая используется для управления яркостью дисплея, может различаться в разных системах.

В приведенном выше примере используется файл systemd's systemd-backlight для сохранения и загрузки яркости перед приостановкой и после возобновления соответственно (вдохновленный /lib/systemd/system/[email protected] , который сохраняет / загружает яркость при перезагрузке / загрузке).

Старое решение (связывает службу systemd с моей приостановкой приостановки pm-utils)

Нашел проблему. Согласно этой статье ArchWiki :

  

systemd не использует pm-utils, чтобы заставить машину спать при использовании systemctl suspend, systemctl hibernate или systemctl hybrid-sleep; крючки pm-utils, включая пользовательские перехватчики , не будут выполняться. Тем не менее, systemd предоставляет два аналогичных механизма для запуска пользовательских сценариев для этих событий.

Таким образом, правильный способ сделать это с помощью systemd (который используется по умолчанию в 15.04) - создать следующие служебные файлы, которые выполняют мой скрипт управления яркостью в /etc/pm/sleep.d/ следующим образом:

  1. /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
    
  2. /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
    

Затем выполните следующие действия, чтобы включить следующие службы:

systemctl enable root-suspend.service
systemctl enable root-resume.service

Подробнее см. связанную статью.

    
ответ дан Sir_FZ 07.05.2015 в 13:32
источник