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/
следующее:
/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
Затем выполните следующие действия, чтобы включить эти службы:
systemctl enable root-suspend.service
systemctl enable root-resume.service
Обратитесь к связанной статье для более подробной информации.