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

После обновления до 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 "$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

1 ответ

Решение

Обновление: нашел лучшее решение, используя 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:" (например, backlight:acpi_video0).

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

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


Старое решение (ссылки 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

Обратитесь к связанной статье для более подробной информации.

Другие вопросы по тегам