Есть ли в Linux гибридный режим «глубокого сна», такой как Mac?
В Mac OS ноутбук зависает в ОЗУ, когда вы закрываете крышку, когда он спит в течение определенного (настраиваемого) периода времени, когда он будет находиться в спящем режиме. Как правило, это хорошо, так как вы получаете преимущества режима сна / бодрствования в режиме ожидания и экономию энергии в спящем режиме.
Есть ли что-то подобное для Ubuntu?
[В настоящее время я использую Kubuntu 18.04 и мне это нравится, хотя даже suspend, кажется, не работает должным образом на моем XPS 9560, но я думаю, это другой вопрос]
1 ответ
В Ubuntu 18.04 LTS и выше suspend-then-hibernate работает аналогично
В этом режиме ноутбук спит или приостанавливается в ОЗУ, когда крышка закрыта нажатием кнопки. После определенного времени, установленного на ноутбуке, ноутбук проснется и запишет данные в оперативную память на диск и перейдет в режим гибернации.
Преимущество заключается в том, что ноутбук закрывается (спит) быстрее, когда закрывает крышку. Если вы разбудите его раньше установленного времени, оно также быстро возобновится. Если вы не разбудите его раньше установленного времени, он автоматически экономит заряд аккумулятора в режиме гибернации.
В Ubuntu 17.10 и ниже hybrid-sleep был самым близким
В этом режиме данные в ОЗУ записываются на диск для перехода в спящий режим до того, как ноутбук перейдет в спящий режим (также известный как режим ожидания). Если во время сна уровень заряда батареи становится критически низким, ноутбук переходит в режим гибернации, а затем отключается, поэтому данные в ОЗУ не теряются.
Если батарея разряжена, когда ноутбук находится в гибридном спящем режиме, подключив его к розетке и включив его, вы вернете его в состояние, когда крышка была закрыта, чтобы перевести ноутбук в спящий режим.
Посмотрите, что является гибридной приостановкой для некоторых дополнительных объяснений.
systemd поддерживает четыре основных режима энергосбережения:
suspend a low-power state where execution of the OS is paused, and complete power loss might result in lost data, and which is fast to enter and exit. This corresponds to suspend, standby, or freeze states as understood by the kernel. hibernate a low-power state where execution of the OS is paused, and complete power loss does not result in lost data, and which might be slow to enter and exit. This corresponds to the hibernation as understood by the kernel. hybrid-sleep a low-power state where execution of the OS is paused, which might be slow to enter, and on complete power loss does not result in lost data but might be slower to exit in that case. This mode is called suspend-to-both by the kernel. suspend-then-hibernate A low power state where the system is initially suspended (the state is stored in RAM). If not interrupted within the delay specified by HibernateDelaySec=, the system will be woken using an RTC alarm and hibernated (the state is then stored on disk). Settings in these files determine what strings will be written to /sys/power/disk and /sys/power/state by systemd-sleep(8) when systemd(1) attempts to suspend or hibernate the machine.
Посмотрите этот ответ, если хотите включить suspend-then-hibernate или же hybrid-sleep в вашем ноутбуке Ubuntu.
Гибридный сон/гибернация в Linux: два варианта
Гибридный режим сна/гибернации заключается в том, что если в режиме сна содержимое оперативки «замораживается» и подпитывается от сети, а при гибернации оно записывается на хард и подпитки от сети не требует, то в гибридном режиме оба процесса происходят одновременно. Таким образом гибридный режим обеспечивает моментальное восстановление работы при выходе из сна, но также страхует от сброса состояния при неожиданном отключении электроэнергии.
В линуксе есть как минимум два варианта использовать сон и гибернацию, скажем так, в смешанном режиме. Я решал эту задачу на ноутбуке c Debian (без какого-либо окружения рабочего стола, так что готовых кнопочек не нашлось).
Гибридный режим
Сам по себе вызывается командой
На ноутбуке как правило хочется вызывать этот режим при закрытии крышки, для этого нужно отредактировать файл «/etc/systemd/logind.conf», изменив в секции «Login» параметр «HandleLidSwitch» с дефолтного «suspend» на «hybrid-sleep»
после этого нужно перезагрузить систему, или сервис systemd-logind (это перезапустит текущий сеанс пользователя, так что не забудьте сохранить все важное). Теперь при закрытии крышки будет активироваться гибридный режим.
Далее более сложный, но небезынтересный вариант.
Сон с отложенным переходом в гибернацию
Второй вариант смешанного режима заключается в том, что сначала система уходит в простой сон, но если сон подзатянулся, то происходит кратковременное пробуждение и переход в полноценную гибернацию. Это может иметь смысл для ноутбука, если есть потребность экономить энергию батареи во время продолжительной неактивности.
Для этого создаем файл /etc/systemd/system/suspend-sedation.service
- [Unit]
- Description=Hibernate after suspend
- Documentation=https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279
- Documentation=https://bbs.archlinux.org/viewtopic.php?pid=1574125#p1574125
- Documentation=https://wiki.archlinux.org/index.php/Power_management
- Documentation=http://forums.debian.net/viewtopic.php?f=5&t=129088
- Documentation=https://wiki.debian.org/SystemdSuspendSedation
- Conflicts=hibernate.target hybrid-sleep.target
- Before=sleep.target
- StopWhenUnneeded=true
- [Service]
- Type=oneshot
- RemainAfterExit=yes
- Environment=»ALARM_SEC=10800″
- Environment=»WAKEALARM=/sys/class/rtc/rtc0/wakealarm»
- ExecStart=/usr/sbin/rtcwake —seconds $ALARM_SEC —auto —mode no
- ExecStop=/bin/sh -c ‘\
- ALARM=$(cat $WAKEALARM); \
- NOW=$(date +%%s); \
- if [ -z «$ALARM» ] || [ «$NOW» -ge «$ALARM» ]; then \
- echo «suspend-sedation: Woke up — no alarm set. Hibernating. «; \
- sleep 10; \
- systemctl hibernate; \
- else \
- echo «suspend-sedation: Woke up before alarm — normal wakeup.»; \
- /usr/sbin/rtcwake —auto —mode disable; \
- fi \
- ‘
- [Install]
- WantedBy=sleep.target