LINUX.ORG.RU

systemd-hibernate.service не запускается

 ,


0

1

С каких-то пор перестала работать гибернация при закрытии крышки ноутбука. При этом s2disk работает успешно. Методом научного тыка я понял, что для гибернации используется команда systemctl hibernate. Вот именно она и не работает. Происходит блокировка экрана и на этом всё. А хотя нет, ещё эта команда может вырубить wifi. Такое впечатление что гибернация начинается, но на каком-то неведомом этапе происходит непонятный сбой.

Debian stretch (testing), LXDE

$ systemctl start systemd-hibernate
Job for systemd-hibernate.service failed because the control process exited with error code. See "systemctl status systemd-hibernate.service" and "journalctl -xe" for details.

$ systemctl status systemd-hibernate
● systemd-hibernate.service - Hibernate
   Loaded: loaded (/lib/systemd/system/systemd-hibernate.service; static; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2016-01-15 21:04:47 EET; 3min 47s ago
     Docs: man:systemd-suspend.service(8)
  Process: 7347 ExecStart=/lib/systemd/systemd-sleep hibernate (code=exited, status=1/FAILURE)
 Main PID: 7347 (code=exited, status=1/FAILURE)

journalctl -xe ничего полезного не дал, всего 2 ошибки да и то не те:

Jan 15 21:05:05 mycomp root[7686]: /etc/dhcp/dhclient-enter-hooks.d/avahi-autoipd returned non-zero exit status 1
Jan 15 21:05:05 mycomp root[7689]: /etc/dhcp/dhclient-enter-hooks.d/samba returned non-zero exit status 1

Куда дальше копать? Какие условия должны соблюдатся для нормальной работы этого сервиса?


s2disk и systemd'шная гибернация используют два качественно разных механизма: первый — юзерспейсный (uswsusp), второй — нативный внутриядерный.

Проверь, что ядру передан параметр resume= (путь к твоему swap-разделу). Также проверь, что работает сам механизм: echo disk > /sys/power/state.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx
echo disk > /sys/power/state
bash: echo: write error: No such device

Just FYI: echo freeze и echo mem работают нормально

cat /sys/power/state
freeze mem disk
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sda5 quiet"
sda5 это раздел на котором swap файл находится
fdisk -l | grep sda5
/dev/sda5  210440192 976771071 766330880 365.4G Linux filesystem
cat /etc/uswsusp.conf
# /etc/uswsusp.conf(5) -- Configuration file for s2disk/s2both 
resume device = /dev/disk/by-uuid/2faf9e55-476e-4107-8717-094dcc21803a
compress = y
early writeout = y
image size = 3690562600
RSA key file = /etc/uswsusp.key
shutdown method = platform
resume offset = 70916096


Не уверен правильно-ли что в uswsusp.conf disk/by-uuid а в GRUB_CMDLINE_LINUX_DEFAULT /dev/sda5

Хотя по идее это должно означать одно и то же
Lexis ()
Ответ на: комментарий от Lexis

swap-файлы вроде как нельзя. Нужен swap-раздел.

(На всякий случай, это ограничение ядерного механизма гибернации, а не самого systemd. Если нужно именно со своп-файлом — могу написать, как подружить systemd и uswsusp.)

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)

Большинство тем с проблемами systemd почему-то связаны с Debian. Они специально его так собирают?

Deleted ()
Ответ на: комментарий от intelfx

swap-файлы вроде как нельзя.

Неделю назад swap-файл прекрасно работал. Настраивал по инструкции: https://wiki.debian.org/Hibernation/Hibernate_Without_Swap_Partition

Если нужно именно со своп-файлом

Да, мне таки нужно именно со swap-файлом.

подружить systemd и uswsusp

идея неплохая, но я не сдаюсь так быстро, буду копать дальше :) Оно работало без проблем долгое время. Узнать где зарыта собака - это уже дело принципа.

Lexis ()
Ответ на: комментарий от Lexis

Ты не совсем меня понял. uswsusp поддерживает swap-файлы. Но systemd использует встроенный в ядро swsusp2, который их не поддерживает.

Решений ровно два: или перейти на swap-разделы, или подружить systemd с uswsusp, заменив один из его компонентов самописным скриптом.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

То есть я обновился на новую версию ядра и всё пропало? Я правильно понял?

Однако мне таки удалось решить эту проблему следующим образом:

# cp /lib/systemd/system/systemd-hibernate.service /etc/systemd/system/
# cd /etc/systemd/system/
Дальше открываю файлик /etc/systemd/system/systemd-hibernate.service и меняю строку ExecStart на:
ExecStart=/bin/sh -c 's2disk && run-parts --regex .\* -a post /lib/systemd/system-sleep'
Теперь systemctl hibernate прекрасно работает.

Единественный вопрос - как сделать так чтобы при этом блокировался экран с помощью xscreensaver?

Lexis ()
Ответ на: комментарий от Lexis

systemctl status systemd-hibernate продолжает показывать failed, хотя это не мешает запускать systemctl hibernate

ну хоть работает, и то ладно

Lexis ()
Ответ на: комментарий от Lexis

Проблема решена

Блокировка при засыпании: https://wiki.debian.org/ScreenLockingOnSleep

Блокировка при ожидании:

~/.config/lxsession/LXDE/autostart
@xautolock -locker 'i3lock' -time 5

Блокировка по хоткею:

~/.config/openbox/lxde-rc.xml
xautolock -locknow
Всем спасибо.

Lexis ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.