Как использовать pm-suspend-hybrid по умолчанию вместо pm-suspend?

Да. Это возможно, но вы должны прочитать учебник

См. Это из ручного столбца

, а также этого [d3 ] Столбцы

Полное руководство - это ЗДЕСЬ вместе с учебниками

Поскольку KDE 4.1 можно отобразить папки как дерево. В этом режиме рядом с папкой отображается знак плюса. Нажимая на этот знак, папка расширяется, и все содержащиеся в ней подпапки и файлы также отображаются в таблице, но они ослаблены. Нажимая знак, отображающий минус, снова разворот снова закрывается. Конечно, древовидная структура может использоваться для как можно большего количества папок. Древовидное представление отключено по умолчанию, но может быть активировано с помощью настроек -> Настройка Dolphin -> Режимы просмотра -> Детали с опцией Расширяемые папки.

41
задан 2 June 2012 в 15:38

55 ответов

Непрямой гибридный сон

Это более старый метод: сначала приостановить, а затем просыпаться до спящего режима после задержки (по умолчанию 15 минут). Используйте это с ядром Linux до 3.6, или если вам это нравится, он больше не использует мощность через 15 минут.

Добавьте файл /etc/pm/config.d/00-use-suspend-hybrid:

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900
Возможно, вы захотите убедиться, что гибридный метод поддерживается в вашей системе с помощью следующего кода. Если он говорит «0», он должен работать:
sudo pm-is-supported --suspend-hybrid && echo $?

Реальная гибридная приостановка с Linux 3.6 +

Если у вас есть ядро ​​Linux 3.6, вы можете использовать следующее, которое будет приостановите работу с диском и оперативной памятью с самого начала.

Добавьте файл /etc/pm/config.d/00-use-suspend-hybrid:

# WORKAROUND: always set the default hibernate mode first (normal mode)
# (not required if you have the patch mentioned by Rohan below (http://askubuntu.com/a/344879/169))
HIBERNATE_MODE=platform

# Always use hibernate instead of suspend, but with "suspend to both"
if [ "$METHOD" = "suspend" ]; then
  METHOD=hibernate
  HIBERNATE_MODE=suspend
fi

# Make sure to use the kernel's method, in case uswsusp is installed etc.
SLEEP_MODULE=kernel

Это всегда будет записывать изображение на диск, а затем приостанавливать его в ОЗУ, преимущества, которые возобновляются, всегда будут быстрыми (до тех пор, пока батарея не закончится), и что машина не проснется в течение короткого времени (после PM_HIBERNATE_DELAY), чтобы спящий режим был реальным.

Недостатком является то, что этот процесс занимает больше времени (потому что он всегда находится в спящем режиме на диске), и что ваш аккумулятор может закончиться в конечном итоге (например, через 12 часов).

Соответствующая запись в блоге (не обновлена)
44
ответ дан 25 May 2018 в 10:42
  • 1
    одна небольшая заметка, вместо «sudo pm-is-support --suspend-hybrid & amp; & amp; & amp; echo $? ', используйте' sudo pm-is-support -suspend-hybrid; echo $? ' поскольку возвращаемое значение pm-поддерживается 0 поддерживается и 1 для нет. – James Caccese 3 August 2012 в 22:50
  • 2
    @JamesCaccese: В мире shellscript 0 означает "true" и все остальное означает «ложь». Ваш скриптлет будет работать, но скрипт оригинального плаката будет работать так же, как и планировалось, распечатывая «0» при поддержке и ничего не поддерживая. Если вы хотите что-то, что всегда будет поддерживать или не поддерживается, попробуйте 'sudo pm-is-support -suspend-hybrid & amp; & amp; & amp; «эхо» поддерживается ». || эхо "неподдерживаемый" – zanfur 28 October 2012 в 10:01
  • 3
    @zanfur. Хотя мне нравится ваше последующее поставляемое решение для печати обоих состояний (и ничто по какой-либо неожиданной причине поддержка pm-a не выполняется так, как ожидалось, что будет делать неизвестные вещи в состоянии ошибки ) , Я ценю упоминание Джеймса Какезе об этом предостережении по причине вышеупомянутой причины . – user66001 8 June 2013 в 18:16
  • 4
    Если вы используете 16.04, см. этот ответ ниже. – kapad 12 June 2016 в 00:52
  • 5
    Единственным недостающим элементом для меня был аргумент resume в /etc/default/grub.conf. Также как пользователь nvidia мне пришлось установить nomodeset. Таким образом, итоговая запись grub в моем случае: GRUB_CMDLINE_LINUX_DEFAULT="nomodeset resume=UUID=uuidofswappartition". Не забудьте grub-update. А также некоторые модули должны быть выгружены так созданным файлом /etc/pm/config.d/00-unload_modules с помощью строки SUSPEND_MODULES="ath5k r8169" и просто для того, чтобы я также переименовал 00-use-suspend-hybrid в 10-use-suspend-hybrid – mauron85 7 October 2016 в 14:16

Непрямой гибридный сон

Это более старый метод: сначала приостановить, а затем просыпаться до спящего режима после задержки (по умолчанию 15 минут). Используйте это с ядром Linux до 3.6, или если вам это нравится, он больше не использует мощность через 15 минут.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900

Возможно, вы захотите убедиться, что гибридный метод поддерживается в вашей системе с помощью следующего кода. Если он говорит «0», он должен работать:

sudo pm-is-supported --suspend-hybrid && echo $?

Реальная гибридная приостановка с Linux 3.6 +

Если у вас есть ядро ​​Linux 3.6, вы можете использовать следующий, который будет с самого начала приостанавливаться как на диск, так и на RAM.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# WORKAROUND: always set the default hibernate mode first (normal mode)
# (not required if you have the patch mentioned by Rohan below (http://askubuntu.com/a/344879/169))
HIBERNATE_MODE=platform

# Always use hibernate instead of suspend, but with "suspend to both"
if [ "$METHOD" = "suspend" ]; then
  METHOD=hibernate
  HIBERNATE_MODE=suspend
fi

# Make sure to use the kernel's method, in case uswsusp is installed etc.
SLEEP_MODULE=kernel

Это всегда будет записывать изображение на диск, а затем приостановить RAM, с преимуществами, которые возобновление будет всегда быстро (до тех пор, пока батарея не закончится) и что машина не проснется в течение короткого времени (после PM_HIBERNATE_DELAY), чтобы спящий режим был реальным.

Недостатком является то, что процесс занимает больше времени (потому что он всегда находится в режиме гибернации на диске) и что ваша батарея может разрядиться в конечном итоге (например, через 12 часов).

44
ответ дан 25 July 2018 в 18:40

Непрямой гибридный сон

Это более старый метод: сначала приостановить, а затем просыпаться до спящего режима после задержки (по умолчанию 15 минут). Используйте это с ядром Linux до 3.6, или если вам это нравится, он больше не использует мощность через 15 минут.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900

Возможно, вы захотите убедиться, что гибридный метод поддерживается в вашей системе с помощью следующего кода. Если он говорит «0», он должен работать:

sudo pm-is-supported --suspend-hybrid && echo $?

Реальная гибридная приостановка с Linux 3.6 +

Если у вас есть ядро ​​Linux 3.6, вы можете использовать следующий, который будет с самого начала приостанавливаться как на диск, так и на RAM.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# WORKAROUND: always set the default hibernate mode first (normal mode)
# (not required if you have the patch mentioned by Rohan below (http://askubuntu.com/a/344879/169))
HIBERNATE_MODE=platform

# Always use hibernate instead of suspend, but with "suspend to both"
if [ "$METHOD" = "suspend" ]; then
  METHOD=hibernate
  HIBERNATE_MODE=suspend
fi

# Make sure to use the kernel's method, in case uswsusp is installed etc.
SLEEP_MODULE=kernel

Это всегда будет записывать изображение на диск, а затем приостановить RAM, с преимуществами, которые возобновление будет всегда быстро (до тех пор, пока батарея не закончится) и что машина не проснется в течение короткого времени (после PM_HIBERNATE_DELAY), чтобы спящий режим был реальным.

Недостатком является то, что процесс занимает больше времени (потому что он всегда находится в режиме гибернации на диске) и что ваша батарея может разрядиться в конечном итоге (например, через 12 часов).

44
ответ дан 31 July 2018 в 10:30

Непрямой гибридный сон

Это более старый метод: сначала приостановить, а затем просыпаться до спящего режима после задержки (по умолчанию 15 минут). Используйте это с ядром Linux до 3.6, или если вам это нравится, он больше не использует мощность через 15 минут.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900

Возможно, вы захотите убедиться, что гибридный метод поддерживается в вашей системе с помощью следующего кода. Если он говорит «0», он должен работать:

sudo pm-is-supported --suspend-hybrid && echo $?

Реальная гибридная приостановка с Linux 3.6 +

Если у вас есть ядро ​​Linux 3.6, вы можете использовать следующий, который будет с самого начала приостанавливаться как на диск, так и на RAM.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# WORKAROUND: always set the default hibernate mode first (normal mode)
# (not required if you have the patch mentioned by Rohan below (http://askubuntu.com/a/344879/169))
HIBERNATE_MODE=platform

# Always use hibernate instead of suspend, but with "suspend to both"
if [ "$METHOD" = "suspend" ]; then
  METHOD=hibernate
  HIBERNATE_MODE=suspend
fi

# Make sure to use the kernel's method, in case uswsusp is installed etc.
SLEEP_MODULE=kernel

Это всегда будет записывать изображение на диск, а затем приостановить RAM, с преимуществами, которые возобновление будет всегда быстро (до тех пор, пока батарея не закончится) и что машина не проснется в течение короткого времени (после PM_HIBERNATE_DELAY), чтобы спящий режим был реальным.

Недостатком является то, что процесс занимает больше времени (потому что он всегда находится в режиме гибернации на диске) и что ваша батарея может разрядиться в конечном итоге (например, через 12 часов).

44
ответ дан 2 August 2018 в 00:50

Непрямой гибридный сон

Это более старый метод: сначала приостановить, а затем просыпаться до спящего режима после задержки (по умолчанию 15 минут). Используйте это с ядром Linux до 3.6, или если вам это нравится, он больше не использует мощность через 15 минут.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900

Возможно, вы захотите убедиться, что гибридный метод поддерживается в вашей системе с помощью следующего кода. Если он говорит «0», он должен работать:

sudo pm-is-supported --suspend-hybrid && echo $?

Реальная гибридная приостановка с Linux 3.6 +

Если у вас есть ядро ​​Linux 3.6, вы можете использовать следующий, который будет с самого начала приостанавливаться как на диск, так и на RAM.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# WORKAROUND: always set the default hibernate mode first (normal mode)
# (not required if you have the patch mentioned by Rohan below (http://askubuntu.com/a/344879/169))
HIBERNATE_MODE=platform

# Always use hibernate instead of suspend, but with "suspend to both"
if [ "$METHOD" = "suspend" ]; then
  METHOD=hibernate
  HIBERNATE_MODE=suspend
fi

# Make sure to use the kernel's method, in case uswsusp is installed etc.
SLEEP_MODULE=kernel

Это всегда будет записывать изображение на диск, а затем приостановить RAM, с преимуществами, которые возобновление будет всегда быстро (до тех пор, пока батарея не закончится) и что машина не проснется в течение короткого времени (после PM_HIBERNATE_DELAY), чтобы спящий режим был реальным.

Недостатком является то, что процесс занимает больше времени (потому что он всегда находится в режиме гибернации на диске) и что ваша батарея может разрядиться в конечном итоге (например, через 12 часов).

44
ответ дан 4 August 2018 в 16:20

Непрямой гибридный сон

Это более старый метод: сначала приостановить, а затем просыпаться до спящего режима после задержки (по умолчанию 15 минут). Используйте это с ядром Linux до 3.6, или если вам это нравится, он больше не использует мощность через 15 минут.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900

Возможно, вы захотите убедиться, что гибридный метод поддерживается в вашей системе с помощью следующего кода. Если он говорит «0», он должен работать:

sudo pm-is-supported --suspend-hybrid && echo $?

Реальная гибридная приостановка с Linux 3.6 +

Если у вас есть ядро ​​Linux 3.6, вы можете использовать следующий, который будет с самого начала приостанавливаться как на диск, так и на RAM.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# WORKAROUND: always set the default hibernate mode first (normal mode)
# (not required if you have the patch mentioned by Rohan below (http://askubuntu.com/a/344879/169))
HIBERNATE_MODE=platform

# Always use hibernate instead of suspend, but with "suspend to both"
if [ "$METHOD" = "suspend" ]; then
  METHOD=hibernate
  HIBERNATE_MODE=suspend
fi

# Make sure to use the kernel's method, in case uswsusp is installed etc.
SLEEP_MODULE=kernel

Это всегда будет записывать изображение на диск, а затем приостановить RAM, с преимуществами, которые возобновление будет всегда быстро (до тех пор, пока батарея не закончится) и что машина не проснется в течение короткого времени (после PM_HIBERNATE_DELAY), чтобы спящий режим был реальным.

Недостатком является то, что процесс занимает больше времени (потому что он всегда находится в режиме гибернации на диске) и что ваша батарея может разрядиться в конечном итоге (например, через 12 часов).

44
ответ дан 6 August 2018 в 00:58

Непрямой гибридный сон

Это более старый метод: сначала приостановить, а затем просыпаться до спящего режима после задержки (по умолчанию 15 минут). Используйте это с ядром Linux до 3.6, или если вам это нравится, он больше не использует мощность через 15 минут.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900

Возможно, вы захотите убедиться, что гибридный метод поддерживается в вашей системе с помощью следующего кода. Если он говорит «0», он должен работать:

sudo pm-is-supported --suspend-hybrid && echo $?

Реальная гибридная приостановка с Linux 3.6 +

Если у вас есть ядро ​​Linux 3.6, вы можете использовать следующий, который будет с самого начала приостанавливаться как на диск, так и на RAM.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# WORKAROUND: always set the default hibernate mode first (normal mode)
# (not required if you have the patch mentioned by Rohan below (http://askubuntu.com/a/344879/169))
HIBERNATE_MODE=platform

# Always use hibernate instead of suspend, but with "suspend to both"
if [ "$METHOD" = "suspend" ]; then
  METHOD=hibernate
  HIBERNATE_MODE=suspend
fi

# Make sure to use the kernel's method, in case uswsusp is installed etc.
SLEEP_MODULE=kernel

Это всегда будет записывать изображение на диск, а затем приостановить RAM, с преимуществами, которые возобновление будет всегда быстро (до тех пор, пока батарея не закончится) и что машина не проснется в течение короткого времени (после PM_HIBERNATE_DELAY), чтобы спящий режим был реальным.

Недостатком является то, что процесс занимает больше времени (потому что он всегда находится в режиме гибернации на диске) и что ваша батарея может разрядиться в конечном итоге (например, через 12 часов).

44
ответ дан 7 August 2018 в 18:25

Непрямой гибридный сон

Это более старый метод: сначала приостановить, а затем просыпаться до спящего режима после задержки (по умолчанию 15 минут). Используйте это с ядром Linux до 3.6, или если вам это нравится, он больше не использует мощность через 15 минут.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900

Возможно, вы захотите убедиться, что гибридный метод поддерживается в вашей системе с помощью следующего кода. Если он говорит «0», он должен работать:

sudo pm-is-supported --suspend-hybrid && echo $?

Реальная гибридная приостановка с Linux 3.6 +

Если у вас есть ядро ​​Linux 3.6, вы можете использовать следующий, который будет с самого начала приостанавливаться как на диск, так и на RAM.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# WORKAROUND: always set the default hibernate mode first (normal mode)
# (not required if you have the patch mentioned by Rohan below (http://askubuntu.com/a/344879/169))
HIBERNATE_MODE=platform

# Always use hibernate instead of suspend, but with "suspend to both"
if [ "$METHOD" = "suspend" ]; then
  METHOD=hibernate
  HIBERNATE_MODE=suspend
fi

# Make sure to use the kernel's method, in case uswsusp is installed etc.
SLEEP_MODULE=kernel

Это всегда будет записывать изображение на диск, а затем приостановить RAM, с преимуществами, которые возобновление будет всегда быстро (до тех пор, пока батарея не закончится) и что машина не проснется в течение короткого времени (после PM_HIBERNATE_DELAY), чтобы спящий режим был реальным.

Недостатком является то, что процесс занимает больше времени (потому что он всегда находится в режиме гибернации на диске) и что ваша батарея может разрядиться в конечном итоге (например, через 12 часов).

44
ответ дан 10 August 2018 в 07:07

Непрямой гибридный сон

Это более старый метод: сначала приостановить, а затем просыпаться до спящего режима после задержки (по умолчанию 15 минут). Используйте это с ядром Linux до 3.6, или если вам это нравится, он больше не использует мощность через 15 минут.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# Always use suspend_hybrid instead of suspend
if [ "$METHOD" = "suspend" ]; then
  METHOD=suspend_hybrid
fi
# The delay after which hibernation gets triggered (default: 900 seconds, 15 minutes):
PM_HIBERNATE_DELAY=900

Возможно, вы захотите убедиться, что гибридный метод поддерживается в вашей системе с помощью следующего кода. Если он говорит «0», он должен работать:

sudo pm-is-supported --suspend-hybrid && echo $?

Реальная гибридная приостановка с Linux 3.6 +

Если у вас есть ядро ​​Linux 3.6, вы можете использовать следующий, который будет с самого начала приостанавливаться как на диск, так и на RAM.

Добавить файл /etc/pm/config.d/00-use-suspend-hybrid:

# WORKAROUND: always set the default hibernate mode first (normal mode)
# (not required if you have the patch mentioned by Rohan below (http://askubuntu.com/a/344879/169))
HIBERNATE_MODE=platform

# Always use hibernate instead of suspend, but with "suspend to both"
if [ "$METHOD" = "suspend" ]; then
  METHOD=hibernate
  HIBERNATE_MODE=suspend
fi

# Make sure to use the kernel's method, in case uswsusp is installed etc.
SLEEP_MODULE=kernel

Это всегда будет записывать изображение на диск, а затем приостановить RAM, с преимуществами, которые возобновление будет всегда быстро (до тех пор, пока батарея не закончится) и что машина не проснется в течение короткого времени (после PM_HIBERNATE_DELAY), чтобы спящий режим был реальным.

Недостатком является то, что процесс занимает больше времени (потому что он всегда находится в режиме гибернации на диске) и что ваша батарея может разрядиться в конечном итоге (например, через 12 часов).

44
ответ дан 15 August 2018 в 19:06
  • 1
    одна небольшая заметка, вместо «sudo pm-is-support --suspend-hybrid & amp; & amp; & amp; echo $? ', используйте' sudo pm-is-support -suspend-hybrid; echo $? ' поскольку возвращаемое значение pm-поддерживается 0 поддерживается и 1 для нет. – James Caccese 3 August 2012 в 22:50
  • 2
    @JamesCaccese: В мире shellscript 0 означает "true" и все остальное означает «ложь». Ваш скриптлет будет работать, но скрипт оригинального плаката будет работать так же, как и планировалось, распечатывая «0» при поддержке и ничего не поддерживая. Если вы хотите что-то, что всегда будет поддерживать или не поддерживается, попробуйте 'sudo pm-is-support -suspend-hybrid & amp; & amp; & amp; «эхо» поддерживается ». || эхо "неподдерживаемый" – zanfur 28 October 2012 в 10:01
  • 3
    @zanfur - Хотя мне нравится ваше последующее поставляемое решение для печати обоих состояний (и ничто по какой-либо неожиданной причине pm-is-support не выполняется так, как ожидалось, что должно было бы сделать неизвестные вещи в состоянии ошибки ) , Я ценю упоминание Джеймса Какезе об этом предостережении по причине вышеупомянутой . – user66001 8 June 2013 в 18:16
  • 4
    Если вы используете 16.04, см. этот ответ ниже. – kapad 12 June 2016 в 00:52
  • 5
    Единственным недостающим элементом для меня был аргумент resume в /etc/default/grub.conf. Также как пользователь nvidia мне пришлось установить nomodeset. Таким образом, итоговая запись grub в моем случае: GRUB_CMDLINE_LINUX_DEFAULT="nomodeset resume=UUID=uuidofswappartition". Не забудьте grub-update. А также некоторые модули должны быть выгружены так созданным файлом /etc/pm/config.d/00-unload_modules с помощью строки SUSPEND_MODULES="ath5k r8169" и просто для того, чтобы я также переименовал 00-use-suspend-hybrid в 10-use-suspend-hybrid – mauron85 7 October 2016 в 14:16

Ubuntu 16.04 и выше

Решение blueyed для гибридного Hybrid с Linux 3.6+ не работает для меня. Я подозреваю, что это связано с тем, что Ubuntu 16.04 использует systemd и не использует файл /etc/pm/config.d/00-use-suspend-hybrid.

для гибридного гибрида с Linux 3.6 +

Откройте терминал, нажав Ctrl + Alt + T и введите:

sudo systemctl hibernate

Это должно привести к спячке вашего компьютера. Чтобы попробовать гибридный сон, введите:

sudo systemctl hybrid-sleep

Если он работает, сделайте его постоянным.

При закрытии крышки работает следующее.

Откройте файл /etc/systemd/logind.conf, используя ваш предпочтительный редактор. Для редактирования этого файла вам потребуется вызвать административную власть с помощью sudo, gksudo или solution .

Найти две строки:

#HandleSuspendKey=suspend
#HandleLidSwitch=suspend

Примечание. Эти строки закомментированы с помощью . Если это работает, сделайте его постоянным. перед ними. [F12] является действием по умолчанию. Удалите # и измените suspend на hybrid-sleep в этих двух строках так, чтобы они выглядели следующим образом:

HandleSuspendKey=hybrid-sleep
HandleLidSwitch=hybrid-sleep

Сохраните файл. Выйти и войти в систему.

Примечание:

При закрытии крышки работает следующее. У моего ноутбука нет физической кнопки сна. Поэтому я не смог проверить это. Нажатие на Suspend из меню cog переключает компьютер на обычное приостановление, а не на гибридный сон.

Источник: https://superuser.com/questions/719447/how-to-use-systemd-hybrid-sleep-instead-of-suspend-under-gnome-in-linux

Надеюсь, это поможет

24
ответ дан 25 May 2018 в 10:42
  • 1
    Этот ответ требует большего количества оборотов. Исправлены проблемы для меня в 16.04. Благодарю. – kapad 12 June 2016 в 00:51
  • 2
    Добро пожаловать. Теперь, когда я переехал с 14.04 по 16.04, я нахожу новый системный способ делать вещи медленно с течением времени. – user68186 12 June 2016 в 07:12
  • 3
    Также работает с Ubuntu GNOME 16.04.1 – HarlemSquirrel 30 January 2017 в 21:46

В 12.04 я заметил, что когда спящий режим запускается (используя PM_HIBERNATE_DELAY=XX), возобновление / оттаивание скриптов оболочки не отменяет переменную записи grub recordfail. Поэтому grub не загружается автоматически.

Тайм-аут установлен на -1, и он ожидает выбора пользователя. Я предполагаю, что это требует некоторого редактирования скриптов в /etc/pm/sleep.d/10_grub-common. Я новичок, поэтому, к сожалению, я не пытался выяснить точное изменение.

4
ответ дан 25 May 2018 в 10:42
  • 1
    Было бы полезно сообщить об ошибке и / или проверить, работает ли она в 12.10+. – blueyed 16 November 2012 в 23:21
  • 2
    Я вижу ту же проблему в 12.10 – MDCore 16 December 2012 в 16:09

Этот вопрос достаточно часто возникает в Google, и я думаю, что он стоит натыкаться. Описанный здесь метод (imo) не является гибридным суспендированием. Это «спящий режим после X минут приостановки». True hybrid suspend записывает RAM на диск, а затем переходит в режим низкого энергопотребления (режим ожидания). Хотя это занимает больше времени, возобновление происходит мгновенно, когда машина имеет батарею, иначе возобновляется форматирование жесткого диска. Это поведение большинства людей известно как гибридный сон и используется по умолчанию в новых ноутбуках Windows и Mac.

Вот как включить not hybrid suspend:

Следуйте первой части верхнего ответа. Это отменяет вызов «suspend», чтобы выполнить «hybrid_suspend» в pm-utils. % cat /etc/pm/config.d/00-use-suspend-hybrid # Always use suspend_hybrid instead of suspend if [ "$METHOD" = "suspend" ]; then METHOD=suspend_hybrid fi Следуйте первой части верхнего ответа. Это отменяет вызов «suspend» для выполнения «hybrid_suspend» в pm-utils. Получите патч отсюда: https://bugs.freedesktop.org/attachment.cgi?id=68712 Этот патч позволяет гибриду приостановить, если доступно (т.е. на ядрах 3.6+). Либо примените его, используя «patch -p0», либо вручную слейте его, если это не сработает

Этот метод работает для меня на моем Sony Vaio SVS.

PS: Воспроизведение патча здесь, если файл будет удален в будущем:

diff --git a/pm/pm-functions.in b/pm/pm-functions.in --- a/pm/pm-functions.in +++ b/pm/pm-functions.in @@ -316,8 +316,28 @@ if [ -z "$HIBERNATE_MODULE" ] && \ { [ -n "${HIBERNATE_MODE}" ] && \ grep -qw "${HIBERNATE_MODE}" /sys/power/disk && \ + HIBERNATE_MODE_SAVE=$(cat /sys/power/disk) && \ + HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE##*[}" && \ + HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE%%]*}" && \ echo -n "${HIBERNATE_MODE}" > /sys/power/disk echo -n "disk" > /sys/power/state + RET=$? + echo -n "$HIBERNATE_MODE_SAVE" > /sys/power/disk + return "$RET" + } +fi + +# for kernels that support suspend to both (i.e. hybrid suspend) +# since kernel 3.6 +if [ -z "$SUSPEND_HYBRID_MODULE" ] && \ + [ -f /sys/power/disk ] && \ + grep -q disk /sys/power/state && \ + grep -q suspend /sys/power/disk; then + SUSPEND_HYBRID_MODULE="kernel" + do_suspend_hybrid() + { + HIBERNATE_MODE="suspend" + do_hibernate } fi

Источники:

Получите патч отсюда : https://bugs.freedesktop.org/attachment.cgi?id=68712 Этот патч позволяет гибридное приостановить, если доступно (т.е. на ядрах 3.6+) https://bugs.freedesktop.org/attachment .cgi? id = 68712
3
ответ дан 25 May 2018 в 10:42
  • 1
    Вы правы в отношении гибридных подвесок. Недавно я изменил свой фрагмент. Вы можете получить (совершенно) тот же результат, используя METHOD = hibernate и HIBERNATE_MODE = suspend. Я устанавливаю HIBERNATE_MODE = платформу в верхней части файла вместо сохранения и восстановления предыдущей версии (что делает патч). Я уточню свой ответ выше. – blueyed 9 October 2013 в 04:56
  • 2
    Это выглядит великолепно, спасибо за редактирование, @blueyed – Rohan Dhruva 18 October 2013 в 06:30

Есть еще одно решение без добавления файла в config.d, просто используя wakealarm в / sys / class / rtc / rtc0. Использовать устаревший код в pm-functions (/ usr / lib / pm-utils) после комментариев #, поскольку ядро ​​не поддерживает напрямую ..., (потому что текущее ядро ​​(после чего-то 3.6) напрямую поддерживает). Верните этот код и добавьте в do_suspend () часть вместо do_suspend_hybrid () и используйте патч для pm-функций (если они не исправит его).

Устаревший код (приостановить, затем спящий режим, когда вызывается suspend_hybrid) :

# since the kernel does not directly support hybrid sleep, we do
# something else -- suspend and schedule an alarm to go into
# hibernate if we have slept long enough.
# Only do this if we do not need to do any special video hackery on resume
# from hibernate, though.
if [ -z "$SUSPEND_HYBRID_MODULE" -a -w "$PM_RTC/wakealarm" ] && \
    check_suspend && check_hibernate && ! is_set $HIBERNATE_RESUME_POST_VIDEO; \
    then
    SUSPEND_HYBRID_MODULE="kernel"
    do_suspend_hybrid() {
    WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
    echo >"$PM_RTC/wakealarm"
    echo $WAKETIME > "$PM_RTC/wakealarm"
    if do_suspend; then
        NOW=$(cat "$PM_RTC/since_epoch")
        if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ]; then
        log "Woken by RTC alarm, hibernating."
        # if hibernate fails for any reason, go back to suspend.
        do_hibernate || do_suspend
        else
        echo > "$PM_RTC/wakealarm"
        fi
    else
        # if we cannot suspend, just try to hibernate.
        do_hibernate
    fi
    }
fi

Рекомендуется. Еще проще использовать uswsusp в то же время максимизировать выгоду s2both, т. Е. S2both при приостановке. Поместите восстановленный код в do_suspend () часть модуля uswsusp (/usr/lib/pm-utils/module.d).

Возвращенный код (suspend_hybrid при вызове suspend):

        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      

С помощью uswsusp мы можем видеть прогресс приостановки / спящего режима и обратный процесс, отображаемый в тексте, даже мы можем прервите его, нажав обратное пространство. Без uswsusp, suspend / hibernate просто появляются - исчезают досадно, особенно когда запускается wakealarm и выполняется спящий режим (s2disk в uswsusp). Установите период сна перед спящим в обычном месте в файле pm-functions.

# variables to handle hibernate after suspend support
PM_HIBERNATE_DELAY=900  # 15 minutes
PM_RTC=/sys/class/rtc/rtc0

Вот мода uswsusp: (помните, этот модуль вызывается из pm-функций, поэтому вставленные переменные одинаковы )

#!/bin/sh

# disable processing of 90chvt and 99video.
# s2ram and s2disk handle all this stuff internally.
uswsusp_hooks()
{
    disablehook 99video "disabled by uswsusp"
}

# Since we disabled 99video, we need to take responsibility for proper
# quirk handling.  s2ram handles all common video quirks internally,
# so all we have to do is translate the HAL standard options to s2ram options.
uswsusp_get_quirks()
{
    OPTS=""
    ACPI_SLEEP=0
    for opt in $PM_CMDLINE; do
        case "${opt##--quirk-}" in # just quirks, please
            dpms-on)       ;; # no-op
            dpms-suspend)      ;; # no-op
            radeon-off)        OPTS="$OPTS --radeontool" ;;
            reset-brightness)  ;; # no-op
            s3-bios)       ACPI_SLEEP=$(($ACPI_SLEEP + 1)) ;;
            s3-mode)       ACPI_SLEEP=$(($ACPI_SLEEP + 2)) ;;
            vbe-post)      OPTS="$OPTS --vbe_post" ;;
            vbemode-restore)   OPTS="$OPTS --vbe_mode" ;;
            vbestate-restore)  OPTS="$OPTS --vbe_save" ;;
            vga-mode-3)        ;; # no-op
            save-pci)          OPTS="$OPTS --pci_save" ;;
            none)          QUIRK_NONE="true" ;;
            *) continue ;;
        esac
    done
    [ $ACPI_SLEEP -ne 0 ] && OPTS="$OPTS --acpi_sleep $ACPI_SLEEP"
    # if we were told to ignore quirks, do so.
    # This is arguably not the best way to do things, but...
    [ "$QUIRK_NONE" = "true" ] && OPTS=""
}

# Since we disabled 99video, we also need to handle displaying
# help info for the quirks we handle.
uswsusp_help()
{
    echo  # first echo makes it look nicer.
    echo "s2ram video quirk handler options:"
    echo
    echo "  --quirk-radeon-off"
    echo "  --quirk-s3-bios"
    echo "  --quirk-s3-mode"
    echo "  --quirk-vbe-post"
    echo "  --quirk-vbemode-restore"
    echo "  --quirk-vbestate-restore"
    echo "  --quirk-save-pci"
    echo "  --quirk-none"
}

# This idiom is used for all sleep methods.  Only declare the actual
# do_ method if:
# 1: some other sleep module has not already done so, and
# 2: this sleep method can actually work on this system.
#
# For suspend, if SUSPEND_MODULE is set then something else has already
# implemented do_suspend.  We could just check to see of do_suspend was
# already declared using command_exists, but using a dedicated environment
# variable makes it easier to debug when we have to know what sleep module
# ended up claiming ownership of a given sleep method.
if [ -z "$SUSPEND_MODULE" ] && command_exists s2ram && \
    ( grep -q mem /sys/power/state || \
        ( [ -c /dev/pmu ] && check_suspend_pmu; ); ); then
    SUSPEND_MODULE="uswsusp"
    do_suspend()
    {
        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      
    }
fi

if [ -z "$HIBERNATE_MODULE" ] && \
    [ -f /sys/power/disk ] && \
    grep -q disk /sys/power/state && \
    [ -c /dev/snapshot ] &&
    command_exists s2disk; then
    HIBERNATE_MODULE="uswsusp"
    do_hibernate()
    {
        s2disk
    }
fi

if [ -z "$SUSPEND_HYBRID_MODULE" ] && 
    grep -q mem /sys/power/state && \
    command_exists s2both && \
    check_hibernate; then
    SUSPEND_HYBRID_MODULE="uswsusp"
    do_suspend_hybrid()
    {   
        uswsusp_get_quirks
        s2both --force $OPTS 
    }
    if [ "$METHOD" = "suspend_hybrid" ]; then
        add_before_hooks uswsusp_hooks
        add_module_help uswsusp_help
    fi
fi  
1
ответ дан 25 May 2018 в 10:42

Ответ пользователя68186 для Ubuntu 16.04 не помог мне. Однако решение здесь было сделано.

Сначала убедитесь, что спящий режим работает. Затем

Найдите и установите редактор dconf в Ubuntu Software. Затем запустите его и перейдите в org -> gnome -> settings daemon -> plugins -> power. Измените значение «lid-close-ac-action» и «action-close-battery-action».

В моих настройках питания эти параметры отображаются как пустые, но они работают по назначению.

0
ответ дан 25 May 2018 в 10:42

Ubuntu 16.04 и выше

Решение на blueyed для гибридного Hybrid с Linux 3.6+ не работает для меня. Я подозреваю, что это связано с тем, что Ubuntu 16.04 использует systemd и не использует файл /etc/pm/config.d/00-use-suspend-hybrid.

Сначала проверьте, работает ли спящий режим и гибридный спящий режим с помощью systemd

. Откройте терминал нажав Ctrl + Alt + T и введите:

sudo systemctl hibernate

Это должно привести к спячке вашего компьютера. Чтобы попробовать гибридный сон, введите:

sudo systemctl hybrid-sleep

Если он работает, сделайте его постоянным.

  • При закрытии крышки работает следующее:

Откройте файл /etc/systemd/logind.conf, используя ваш предпочтительный редактор. Чтобы отредактировать этот файл, вам нужно будет активировать административную власть с помощью sudo, gksudo или pkexec .

Найти две строки:

#HandleSuspendKey=suspend
#HandleLidSwitch=suspend

Примечание. Эти строки прокомментированы с помощью # перед ними. suspend является действием по умолчанию. Удалите # и измените suspend на hybrid-sleep в этих двух строках так, чтобы они выглядели следующим образом:

HandleSuspendKey=hybrid-sleep
HandleLidSwitch=hybrid-sleep

Сохраните файл. Выйти и войти в систему.

Примечание:

  • Кроме suspend или hybrid-sleep есть третий вариант, hibernate.
  • У моего ноутбука нет физической кнопки сна. Поэтому я не смог проверить это.
  • Нажав Suspend из меню cog, компьютер отключится, а не гибрид-sleep.

Источник: https: // superuser. com / questions / 719447 / how-to-use-systemd-hybrid-sleep-вместо-suspend-under-gnome-in-linux

Надеюсь, это поможет

25
ответ дан 25 July 2018 в 18:40

Есть еще одно решение без добавления файла в config.d, просто используя wakealarm в / sys / class / rtc / rtc0. Использовать устаревший код в pm-functions (/ usr / lib / pm-utils) после комментариев #, поскольку ядро ​​не поддерживает напрямую ..., (потому что текущее ядро ​​(после чего-то 3.6) напрямую поддерживает). Верните этот код и добавьте в do_suspend () часть вместо do_suspend_hybrid () и используйте патч для pm-функций (если они не исправит его).

Устаревший код (приостановить, затем спящий режим, когда вызывается suspend_hybrid) :

# since the kernel does not directly support hybrid sleep, we do
# something else -- suspend and schedule an alarm to go into
# hibernate if we have slept long enough.
# Only do this if we do not need to do any special video hackery on resume
# from hibernate, though.
if [ -z "$SUSPEND_HYBRID_MODULE" -a -w "$PM_RTC/wakealarm" ] && \
    check_suspend && check_hibernate && ! is_set $HIBERNATE_RESUME_POST_VIDEO; \
    then
    SUSPEND_HYBRID_MODULE="kernel"
    do_suspend_hybrid() {
    WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
    echo >"$PM_RTC/wakealarm"
    echo $WAKETIME > "$PM_RTC/wakealarm"
    if do_suspend; then
        NOW=$(cat "$PM_RTC/since_epoch")
        if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ]; then
        log "Woken by RTC alarm, hibernating."
        # if hibernate fails for any reason, go back to suspend.
        do_hibernate || do_suspend
        else
        echo > "$PM_RTC/wakealarm"
        fi
    else
        # if we cannot suspend, just try to hibernate.
        do_hibernate
    fi
    }
fi

Рекомендуется. Еще проще использовать uswsusp в то же время максимизировать выгоду s2both, т. Е. S2both при приостановке. Поместите восстановленный код в do_suspend () часть модуля uswsusp (/usr/lib/pm-utils/module.d).

Возвращенный код (suspend_hybrid при вызове suspend):

        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      

С помощью uswsusp мы можем видеть прогресс suspend / hibernate и обратный процесс, отображаемый в тексте, даже мы можем прервите его, нажав обратное пространство. Без uswsusp, suspend / hibernate просто появляются - исчезают досадно, особенно когда запускается wakealarm и выполняется спящий режим (s2disk в uswsusp). Установите период сна перед спящим в обычном месте в файле pm-functions.

# variables to handle hibernate after suspend support
PM_HIBERNATE_DELAY=900  # 15 minutes
PM_RTC=/sys/class/rtc/rtc0

Вот мода uswsusp: (помните, этот модуль вызывается из pm-функций, поэтому вставленные переменные одинаковы )

#!/bin/sh

# disable processing of 90chvt and 99video.
# s2ram and s2disk handle all this stuff internally.
uswsusp_hooks()
{
    disablehook 99video "disabled by uswsusp"
}

# Since we disabled 99video, we need to take responsibility for proper
# quirk handling.  s2ram handles all common video quirks internally,
# so all we have to do is translate the HAL standard options to s2ram options.
uswsusp_get_quirks()
{
    OPTS=""
    ACPI_SLEEP=0
    for opt in $PM_CMDLINE; do
        case "${opt##--quirk-}" in # just quirks, please
            dpms-on)       ;; # no-op
            dpms-suspend)      ;; # no-op
            radeon-off)        OPTS="$OPTS --radeontool" ;;
            reset-brightness)  ;; # no-op
            s3-bios)       ACPI_SLEEP=$(($ACPI_SLEEP + 1)) ;;
            s3-mode)       ACPI_SLEEP=$(($ACPI_SLEEP + 2)) ;;
            vbe-post)      OPTS="$OPTS --vbe_post" ;;
            vbemode-restore)   OPTS="$OPTS --vbe_mode" ;;
            vbestate-restore)  OPTS="$OPTS --vbe_save" ;;
            vga-mode-3)        ;; # no-op
            save-pci)          OPTS="$OPTS --pci_save" ;;
            none)          QUIRK_NONE="true" ;;
            *) continue ;;
        esac
    done
    [ $ACPI_SLEEP -ne 0 ] && OPTS="$OPTS --acpi_sleep $ACPI_SLEEP"
    # if we were told to ignore quirks, do so.
    # This is arguably not the best way to do things, but...
    [ "$QUIRK_NONE" = "true" ] && OPTS=""
}

# Since we disabled 99video, we also need to handle displaying
# help info for the quirks we handle.
uswsusp_help()
{
    echo  # first echo makes it look nicer.
    echo "s2ram video quirk handler options:"
    echo
    echo "  --quirk-radeon-off"
    echo "  --quirk-s3-bios"
    echo "  --quirk-s3-mode"
    echo "  --quirk-vbe-post"
    echo "  --quirk-vbemode-restore"
    echo "  --quirk-vbestate-restore"
    echo "  --quirk-save-pci"
    echo "  --quirk-none"
}

# This idiom is used for all sleep methods.  Only declare the actual
# do_ method if:
# 1: some other sleep module has not already done so, and
# 2: this sleep method can actually work on this system.
#
# For suspend, if SUSPEND_MODULE is set then something else has already
# implemented do_suspend.  We could just check to see of do_suspend was
# already declared using command_exists, but using a dedicated environment
# variable makes it easier to debug when we have to know what sleep module
# ended up claiming ownership of a given sleep method.
if [ -z "$SUSPEND_MODULE" ] && command_exists s2ram && \
    ( grep -q mem /sys/power/state || \
        ( [ -c /dev/pmu ] && check_suspend_pmu; ); ); then
    SUSPEND_MODULE="uswsusp"
    do_suspend()
    {
        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      
    }
fi

if [ -z "$HIBERNATE_MODULE" ] && \
    [ -f /sys/power/disk ] && \
    grep -q disk /sys/power/state && \
    [ -c /dev/snapshot ] &&
    command_exists s2disk; then
    HIBERNATE_MODULE="uswsusp"
    do_hibernate()
    {
        s2disk
    }
fi

if [ -z "$SUSPEND_HYBRID_MODULE" ] && 
    grep -q mem /sys/power/state && \
    command_exists s2both && \
    check_hibernate; then
    SUSPEND_HYBRID_MODULE="uswsusp"
    do_suspend_hybrid()
    {   
        uswsusp_get_quirks
        s2both --force $OPTS 
    }
    if [ "$METHOD" = "suspend_hybrid" ]; then
        add_before_hooks uswsusp_hooks
        add_module_help uswsusp_help
    fi
fi  
1
ответ дан 25 July 2018 в 18:40

В 12.04 я заметил, что при спящем режиме (с использованием PM_HIBERNATE_DELAY=XX) возобновление / оттаивание скриптов оболочки не отменяет переменную записи записи grub. Поэтому grub не загружается автоматически.

Тайм-аут установлен на -1, и он ждет выбора пользователя. Я предполагаю, что это требует некоторого редактирования скриптов в /etc/pm/sleep.d/10_grub-common. Я новичок, поэтому, к сожалению, я не пытался выяснить точное изменение.

4
ответ дан 25 July 2018 в 18:40

Ответ пользователя68186 для Ubuntu 16.04 не помог мне. Однако решение здесь .

Сначала убедитесь, что спящий режим работает. Затем

Найдите и установите редактор dconf в Ubuntu Software. Затем запустите его и перейдите к настройкам org -> gnome -> daemon -> plugins -> power.

Измените значение «lid-close-ac-action» и «action-close-battery-action» ".

В моих настройках питания эти параметры отображаются как пустые, но они работают по назначению.

0
ответ дан 25 July 2018 в 18:40

Этот вопрос достаточно часто возникает в Google, и я думаю, что это стоит того, чтобы напасть. Описанный здесь метод представляет собой (imo) не гибридную суспензию. Это «спящий режим после X минут приостановки». True hybrid suspend записывает RAM на диск, а затем переходит в режим низкого энергопотребления (режим ожидания). Хотя это занимает больше времени, возобновление происходит мгновенно, когда машина имеет батарею, иначе возобновляется форматирование жесткого диска. Это поведение большинства людей известно как гибридный сон и используется по умолчанию в новых ноутбуках Windows и Mac.

Вот как включить real hybrid suspend:

  • Следуйте первой части верхнего ответа. Это отменяет вызов «suspend» для выполнения «hybrid_suspend» в pm-utils.
    % cat /etc/pm/config.d/00-use-suspend-hybrid
    # Always use suspend_hybrid instead of suspend
    if [ "$METHOD" = "suspend" ]; then
        METHOD=suspend_hybrid
    fi
  • Сделайте резервную копию / usr / lib / pm-utils / pm-functions
  • Получите патч здесь: https://bugs.freedesktop.org/attachment.cgi?id=68712 Этот патч позволяет гибридное приостановить, если доступно (т.е. на ядрах 3.6+ )
  • Либо примените его, используя «patch -p0», либо вручную слейте его, если это не сработает

Этот метод работает для меня на моем Sony Vaio SVS.

PS: Воспроизведение патча здесь, если файл будет удален в будущем:

diff --git a/pm/pm-functions.in b/pm/pm-functions.in
--- a/pm/pm-functions.in
+++ b/pm/pm-functions.in
@@ -316,8 +316,28 @@ if [ -z "$HIBERNATE_MODULE" ] && \
    {
        [ -n "${HIBERNATE_MODE}" ] && \
        grep -qw "${HIBERNATE_MODE}" /sys/power/disk && \
+       HIBERNATE_MODE_SAVE=$(cat /sys/power/disk) && \
+       HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE##*[}" && \
+       HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE%%]*}" && \
        echo -n "${HIBERNATE_MODE}" > /sys/power/disk
        echo -n "disk" > /sys/power/state
+       RET=$?
+       echo -n "$HIBERNATE_MODE_SAVE" > /sys/power/disk
+       return "$RET"
+   }
+fi
+
+# for kernels that support suspend to both (i.e. hybrid suspend)
+# since kernel 3.6
+if [ -z "$SUSPEND_HYBRID_MODULE" ] && \
+   [ -f /sys/power/disk ] && \
+   grep -q disk /sys/power/state && \
+   grep -q suspend /sys/power/disk; then
+   SUSPEND_HYBRID_MODULE="kernel"
+   do_suspend_hybrid()
+   {
+       HIBERNATE_MODE="suspend"
+       do_hibernate
    }
 fi

Источники:

3
ответ дан 25 July 2018 в 18:40

Ubuntu 16.04 и выше

Решение на blueyed для гибридного Hybrid с Linux 3.6+ не работает для меня. Я подозреваю, что это связано с тем, что Ubuntu 16.04 использует systemd и не использует файл /etc/pm/config.d/00-use-suspend-hybrid.

Сначала проверьте, работает ли спящий режим и гибридный спящий режим с помощью systemd

. Откройте терминал нажав Ctrl + Alt + T и введите:

sudo systemctl hibernate

Это должно привести к спячке вашего компьютера. Чтобы попробовать гибридный сон, введите:

sudo systemctl hybrid-sleep

Если он работает, сделайте его постоянным.

  • При закрытии крышки работает следующее:

Откройте файл /etc/systemd/logind.conf, используя ваш предпочтительный редактор. Чтобы отредактировать этот файл, вам нужно будет активировать административную власть с помощью sudo, gksudo или pkexec .

Найти две строки:

#HandleSuspendKey=suspend
#HandleLidSwitch=suspend

Примечание. Эти строки прокомментированы с помощью # перед ними. suspend является действием по умолчанию. Удалите # и измените suspend на hybrid-sleep в этих двух строках так, чтобы они выглядели следующим образом:

HandleSuspendKey=hybrid-sleep
HandleLidSwitch=hybrid-sleep

Сохраните файл. Выйти и войти в систему.

Примечание:

  • Кроме suspend или hybrid-sleep есть третий вариант, hibernate.
  • У моего ноутбука нет физической кнопки сна. Поэтому я не смог проверить это.
  • Нажав Suspend из меню cog, компьютер отключится, а не гибрид-sleep.

Источник: https: // superuser. com / questions / 719447 / how-to-use-systemd-hybrid-sleep-вместо-suspend-under-gnome-in-linux

Надеюсь, это поможет

25
ответ дан 31 July 2018 в 10:30

Есть еще одно решение без добавления файла в config.d, просто используя wakealarm в / sys / class / rtc / rtc0. Использовать устаревший код в pm-functions (/ usr / lib / pm-utils) после комментариев #, поскольку ядро ​​не поддерживает напрямую ..., (потому что текущее ядро ​​(после чего-то 3.6) напрямую поддерживает). Верните этот код и добавьте в do_suspend () часть вместо do_suspend_hybrid () и используйте патч для pm-функций (если они не исправит его).

Устаревший код (приостановить, затем спящий режим, когда вызывается suspend_hybrid) :

# since the kernel does not directly support hybrid sleep, we do
# something else -- suspend and schedule an alarm to go into
# hibernate if we have slept long enough.
# Only do this if we do not need to do any special video hackery on resume
# from hibernate, though.
if [ -z "$SUSPEND_HYBRID_MODULE" -a -w "$PM_RTC/wakealarm" ] && \
    check_suspend && check_hibernate && ! is_set $HIBERNATE_RESUME_POST_VIDEO; \
    then
    SUSPEND_HYBRID_MODULE="kernel"
    do_suspend_hybrid() {
    WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
    echo >"$PM_RTC/wakealarm"
    echo $WAKETIME > "$PM_RTC/wakealarm"
    if do_suspend; then
        NOW=$(cat "$PM_RTC/since_epoch")
        if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ]; then
        log "Woken by RTC alarm, hibernating."
        # if hibernate fails for any reason, go back to suspend.
        do_hibernate || do_suspend
        else
        echo > "$PM_RTC/wakealarm"
        fi
    else
        # if we cannot suspend, just try to hibernate.
        do_hibernate
    fi
    }
fi

Рекомендуется. Еще проще использовать uswsusp в то же время максимизировать выгоду s2both, т. Е. S2both при приостановке. Поместите восстановленный код в do_suspend () часть модуля uswsusp (/usr/lib/pm-utils/module.d).

Возвращенный код (suspend_hybrid при вызове suspend):

        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      

С помощью uswsusp мы можем видеть прогресс suspend / hibernate и обратный процесс, отображаемый в тексте, даже мы можем прервите его, нажав обратное пространство. Без uswsusp, suspend / hibernate просто появляются - исчезают досадно, особенно когда запускается wakealarm и выполняется спящий режим (s2disk в uswsusp). Установите период сна перед спящим в обычном месте в файле pm-functions.

# variables to handle hibernate after suspend support
PM_HIBERNATE_DELAY=900  # 15 minutes
PM_RTC=/sys/class/rtc/rtc0

Вот мода uswsusp: (помните, этот модуль вызывается из pm-функций, поэтому вставленные переменные одинаковы )

#!/bin/sh

# disable processing of 90chvt and 99video.
# s2ram and s2disk handle all this stuff internally.
uswsusp_hooks()
{
    disablehook 99video "disabled by uswsusp"
}

# Since we disabled 99video, we need to take responsibility for proper
# quirk handling.  s2ram handles all common video quirks internally,
# so all we have to do is translate the HAL standard options to s2ram options.
uswsusp_get_quirks()
{
    OPTS=""
    ACPI_SLEEP=0
    for opt in $PM_CMDLINE; do
        case "${opt##--quirk-}" in # just quirks, please
            dpms-on)       ;; # no-op
            dpms-suspend)      ;; # no-op
            radeon-off)        OPTS="$OPTS --radeontool" ;;
            reset-brightness)  ;; # no-op
            s3-bios)       ACPI_SLEEP=$(($ACPI_SLEEP + 1)) ;;
            s3-mode)       ACPI_SLEEP=$(($ACPI_SLEEP + 2)) ;;
            vbe-post)      OPTS="$OPTS --vbe_post" ;;
            vbemode-restore)   OPTS="$OPTS --vbe_mode" ;;
            vbestate-restore)  OPTS="$OPTS --vbe_save" ;;
            vga-mode-3)        ;; # no-op
            save-pci)          OPTS="$OPTS --pci_save" ;;
            none)          QUIRK_NONE="true" ;;
            *) continue ;;
        esac
    done
    [ $ACPI_SLEEP -ne 0 ] && OPTS="$OPTS --acpi_sleep $ACPI_SLEEP"
    # if we were told to ignore quirks, do so.
    # This is arguably not the best way to do things, but...
    [ "$QUIRK_NONE" = "true" ] && OPTS=""
}

# Since we disabled 99video, we also need to handle displaying
# help info for the quirks we handle.
uswsusp_help()
{
    echo  # first echo makes it look nicer.
    echo "s2ram video quirk handler options:"
    echo
    echo "  --quirk-radeon-off"
    echo "  --quirk-s3-bios"
    echo "  --quirk-s3-mode"
    echo "  --quirk-vbe-post"
    echo "  --quirk-vbemode-restore"
    echo "  --quirk-vbestate-restore"
    echo "  --quirk-save-pci"
    echo "  --quirk-none"
}

# This idiom is used for all sleep methods.  Only declare the actual
# do_ method if:
# 1: some other sleep module has not already done so, and
# 2: this sleep method can actually work on this system.
#
# For suspend, if SUSPEND_MODULE is set then something else has already
# implemented do_suspend.  We could just check to see of do_suspend was
# already declared using command_exists, but using a dedicated environment
# variable makes it easier to debug when we have to know what sleep module
# ended up claiming ownership of a given sleep method.
if [ -z "$SUSPEND_MODULE" ] && command_exists s2ram && \
    ( grep -q mem /sys/power/state || \
        ( [ -c /dev/pmu ] && check_suspend_pmu; ); ); then
    SUSPEND_MODULE="uswsusp"
    do_suspend()
    {
        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      
    }
fi

if [ -z "$HIBERNATE_MODULE" ] && \
    [ -f /sys/power/disk ] && \
    grep -q disk /sys/power/state && \
    [ -c /dev/snapshot ] &&
    command_exists s2disk; then
    HIBERNATE_MODULE="uswsusp"
    do_hibernate()
    {
        s2disk
    }
fi

if [ -z "$SUSPEND_HYBRID_MODULE" ] && 
    grep -q mem /sys/power/state && \
    command_exists s2both && \
    check_hibernate; then
    SUSPEND_HYBRID_MODULE="uswsusp"
    do_suspend_hybrid()
    {   
        uswsusp_get_quirks
        s2both --force $OPTS 
    }
    if [ "$METHOD" = "suspend_hybrid" ]; then
        add_before_hooks uswsusp_hooks
        add_module_help uswsusp_help
    fi
fi  
1
ответ дан 31 July 2018 в 10:30

В 12.04 я заметил, что при спящем режиме (с использованием PM_HIBERNATE_DELAY=XX) возобновление / оттаивание скриптов оболочки не отменяет переменную записи записи grub. Поэтому grub не загружается автоматически.

Тайм-аут установлен на -1, и он ждет выбора пользователя. Я предполагаю, что это требует некоторого редактирования скриптов в /etc/pm/sleep.d/10_grub-common. Я новичок, поэтому, к сожалению, я не пытался выяснить точное изменение.

4
ответ дан 31 July 2018 в 10:30

Ответ пользователя68186 для Ubuntu 16.04 не помог мне. Однако решение здесь .

Сначала убедитесь, что спящий режим работает. Затем

Найдите и установите редактор dconf в Ubuntu Software. Затем запустите его и перейдите к настройкам org -> gnome -> daemon -> plugins -> power.

Измените значение «lid-close-ac-action» и «action-close-battery-action» ".

В моих настройках питания эти параметры отображаются как пустые, но они работают по назначению.

0
ответ дан 31 July 2018 в 10:30

Этот вопрос достаточно часто возникает в Google, и я думаю, что это стоит того, чтобы напасть. Описанный здесь метод представляет собой (imo) не гибридную суспензию. Это «спящий режим после X минут приостановки». True hybrid suspend записывает RAM на диск, а затем переходит в режим низкого энергопотребления (режим ожидания). Хотя это занимает больше времени, возобновление происходит мгновенно, когда машина имеет батарею, иначе возобновляется форматирование жесткого диска. Это поведение большинства людей известно как гибридный сон и используется по умолчанию в новых ноутбуках Windows и Mac.

Вот как включить real hybrid suspend:

  • Следуйте первой части верхнего ответа. Это отменяет вызов «suspend» для выполнения «hybrid_suspend» в pm-utils.
    % cat /etc/pm/config.d/00-use-suspend-hybrid
    # Always use suspend_hybrid instead of suspend
    if [ "$METHOD" = "suspend" ]; then
        METHOD=suspend_hybrid
    fi
  • Сделайте резервную копию / usr / lib / pm-utils / pm-functions
  • Получите патч здесь: https://bugs.freedesktop.org/attachment.cgi?id=68712 Этот патч позволяет гибридное приостановить, если доступно (т.е. на ядрах 3.6+ )
  • Либо примените его, используя «patch -p0», либо вручную слейте его, если это не сработает

Этот метод работает для меня на моем Sony Vaio SVS.

PS: Воспроизведение патча здесь, если файл будет удален в будущем:

diff --git a/pm/pm-functions.in b/pm/pm-functions.in
--- a/pm/pm-functions.in
+++ b/pm/pm-functions.in
@@ -316,8 +316,28 @@ if [ -z "$HIBERNATE_MODULE" ] && \
    {
        [ -n "${HIBERNATE_MODE}" ] && \
        grep -qw "${HIBERNATE_MODE}" /sys/power/disk && \
+       HIBERNATE_MODE_SAVE=$(cat /sys/power/disk) && \
+       HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE##*[}" && \
+       HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE%%]*}" && \
        echo -n "${HIBERNATE_MODE}" > /sys/power/disk
        echo -n "disk" > /sys/power/state
+       RET=$?
+       echo -n "$HIBERNATE_MODE_SAVE" > /sys/power/disk
+       return "$RET"
+   }
+fi
+
+# for kernels that support suspend to both (i.e. hybrid suspend)
+# since kernel 3.6
+if [ -z "$SUSPEND_HYBRID_MODULE" ] && \
+   [ -f /sys/power/disk ] && \
+   grep -q disk /sys/power/state && \
+   grep -q suspend /sys/power/disk; then
+   SUSPEND_HYBRID_MODULE="kernel"
+   do_suspend_hybrid()
+   {
+       HIBERNATE_MODE="suspend"
+       do_hibernate
    }
 fi

Источники:

3
ответ дан 31 July 2018 в 10:30

Ubuntu 16.04 и выше

Решение на blueyed для гибридного Hybrid с Linux 3.6+ не работает для меня. Я подозреваю, что это связано с тем, что Ubuntu 16.04 использует systemd и не использует файл /etc/pm/config.d/00-use-suspend-hybrid.

Сначала проверьте, работает ли спящий режим и гибридный спящий режим с помощью systemd

. Откройте терминал нажав Ctrl + Alt + T и введите:

sudo systemctl hibernate

Это должно привести к спячке вашего компьютера. Чтобы попробовать гибридный сон, введите:

sudo systemctl hybrid-sleep

Если он работает, сделайте его постоянным.

  • При закрытии крышки работает следующее:

Откройте файл /etc/systemd/logind.conf, используя ваш предпочтительный редактор. Чтобы отредактировать этот файл, вам нужно будет активировать административную власть с помощью sudo, gksudo или pkexec .

Найти две строки:

#HandleSuspendKey=suspend
#HandleLidSwitch=suspend

Примечание. Эти строки прокомментированы с помощью # перед ними. suspend является действием по умолчанию. Удалите # и измените suspend на hybrid-sleep в этих двух строках так, чтобы они выглядели следующим образом:

HandleSuspendKey=hybrid-sleep
HandleLidSwitch=hybrid-sleep

Сохраните файл. Выйти и войти в систему.

Примечание:

  • Кроме suspend или hybrid-sleep есть третий вариант, hibernate.
  • У моего ноутбука нет физической кнопки сна. Поэтому я не смог проверить это.
  • Нажав Suspend из меню cog, компьютер отключится, а не гибрид-sleep.

Источник: https: // superuser. com / questions / 719447 / how-to-use-systemd-hybrid-sleep-вместо-suspend-under-gnome-in-linux

Надеюсь, это поможет

26
ответ дан 2 August 2018 в 00:50

Есть еще одно решение без добавления файла в config.d, просто используя wakealarm в / sys / class / rtc / rtc0. Использовать устаревший код в pm-functions (/ usr / lib / pm-utils) после комментариев #, поскольку ядро ​​не поддерживает напрямую ..., (потому что текущее ядро ​​(после чего-то 3.6) напрямую поддерживает). Верните этот код и добавьте в do_suspend () часть вместо do_suspend_hybrid () и используйте патч для pm-функций (если они не исправит его).

Устаревший код (приостановить, затем спящий режим, когда вызывается suspend_hybrid) :

# since the kernel does not directly support hybrid sleep, we do
# something else -- suspend and schedule an alarm to go into
# hibernate if we have slept long enough.
# Only do this if we do not need to do any special video hackery on resume
# from hibernate, though.
if [ -z "$SUSPEND_HYBRID_MODULE" -a -w "$PM_RTC/wakealarm" ] && \
    check_suspend && check_hibernate && ! is_set $HIBERNATE_RESUME_POST_VIDEO; \
    then
    SUSPEND_HYBRID_MODULE="kernel"
    do_suspend_hybrid() {
    WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
    echo >"$PM_RTC/wakealarm"
    echo $WAKETIME > "$PM_RTC/wakealarm"
    if do_suspend; then
        NOW=$(cat "$PM_RTC/since_epoch")
        if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ]; then
        log "Woken by RTC alarm, hibernating."
        # if hibernate fails for any reason, go back to suspend.
        do_hibernate || do_suspend
        else
        echo > "$PM_RTC/wakealarm"
        fi
    else
        # if we cannot suspend, just try to hibernate.
        do_hibernate
    fi
    }
fi

Рекомендуется. Еще проще использовать uswsusp в то же время максимизировать выгоду s2both, т. Е. S2both при приостановке. Поместите восстановленный код в do_suspend () часть модуля uswsusp (/usr/lib/pm-utils/module.d).

Возвращенный код (suspend_hybrid при вызове suspend):

        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      

С помощью uswsusp мы можем видеть прогресс suspend / hibernate и обратный процесс, отображаемый в тексте, даже мы можем прервите его, нажав обратное пространство. Без uswsusp, suspend / hibernate просто появляются - исчезают досадно, особенно когда запускается wakealarm и выполняется спящий режим (s2disk в uswsusp). Установите период сна перед спящим в обычном месте в файле pm-functions.

# variables to handle hibernate after suspend support
PM_HIBERNATE_DELAY=900  # 15 minutes
PM_RTC=/sys/class/rtc/rtc0

Вот мода uswsusp: (помните, этот модуль вызывается из pm-функций, поэтому вставленные переменные одинаковы )

#!/bin/sh

# disable processing of 90chvt and 99video.
# s2ram and s2disk handle all this stuff internally.
uswsusp_hooks()
{
    disablehook 99video "disabled by uswsusp"
}

# Since we disabled 99video, we need to take responsibility for proper
# quirk handling.  s2ram handles all common video quirks internally,
# so all we have to do is translate the HAL standard options to s2ram options.
uswsusp_get_quirks()
{
    OPTS=""
    ACPI_SLEEP=0
    for opt in $PM_CMDLINE; do
        case "${opt##--quirk-}" in # just quirks, please
            dpms-on)       ;; # no-op
            dpms-suspend)      ;; # no-op
            radeon-off)        OPTS="$OPTS --radeontool" ;;
            reset-brightness)  ;; # no-op
            s3-bios)       ACPI_SLEEP=$(($ACPI_SLEEP + 1)) ;;
            s3-mode)       ACPI_SLEEP=$(($ACPI_SLEEP + 2)) ;;
            vbe-post)      OPTS="$OPTS --vbe_post" ;;
            vbemode-restore)   OPTS="$OPTS --vbe_mode" ;;
            vbestate-restore)  OPTS="$OPTS --vbe_save" ;;
            vga-mode-3)        ;; # no-op
            save-pci)          OPTS="$OPTS --pci_save" ;;
            none)          QUIRK_NONE="true" ;;
            *) continue ;;
        esac
    done
    [ $ACPI_SLEEP -ne 0 ] && OPTS="$OPTS --acpi_sleep $ACPI_SLEEP"
    # if we were told to ignore quirks, do so.
    # This is arguably not the best way to do things, but...
    [ "$QUIRK_NONE" = "true" ] && OPTS=""
}

# Since we disabled 99video, we also need to handle displaying
# help info for the quirks we handle.
uswsusp_help()
{
    echo  # first echo makes it look nicer.
    echo "s2ram video quirk handler options:"
    echo
    echo "  --quirk-radeon-off"
    echo "  --quirk-s3-bios"
    echo "  --quirk-s3-mode"
    echo "  --quirk-vbe-post"
    echo "  --quirk-vbemode-restore"
    echo "  --quirk-vbestate-restore"
    echo "  --quirk-save-pci"
    echo "  --quirk-none"
}

# This idiom is used for all sleep methods.  Only declare the actual
# do_ method if:
# 1: some other sleep module has not already done so, and
# 2: this sleep method can actually work on this system.
#
# For suspend, if SUSPEND_MODULE is set then something else has already
# implemented do_suspend.  We could just check to see of do_suspend was
# already declared using command_exists, but using a dedicated environment
# variable makes it easier to debug when we have to know what sleep module
# ended up claiming ownership of a given sleep method.
if [ -z "$SUSPEND_MODULE" ] && command_exists s2ram && \
    ( grep -q mem /sys/power/state || \
        ( [ -c /dev/pmu ] && check_suspend_pmu; ); ); then
    SUSPEND_MODULE="uswsusp"
    do_suspend()
    {
        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      
    }
fi

if [ -z "$HIBERNATE_MODULE" ] && \
    [ -f /sys/power/disk ] && \
    grep -q disk /sys/power/state && \
    [ -c /dev/snapshot ] &&
    command_exists s2disk; then
    HIBERNATE_MODULE="uswsusp"
    do_hibernate()
    {
        s2disk
    }
fi

if [ -z "$SUSPEND_HYBRID_MODULE" ] && 
    grep -q mem /sys/power/state && \
    command_exists s2both && \
    check_hibernate; then
    SUSPEND_HYBRID_MODULE="uswsusp"
    do_suspend_hybrid()
    {   
        uswsusp_get_quirks
        s2both --force $OPTS 
    }
    if [ "$METHOD" = "suspend_hybrid" ]; then
        add_before_hooks uswsusp_hooks
        add_module_help uswsusp_help
    fi
fi  
1
ответ дан 2 August 2018 в 00:50

В 12.04 я заметил, что при спящем режиме (с использованием PM_HIBERNATE_DELAY=XX) возобновление / оттаивание скриптов оболочки не отменяет переменную записи записи grub. Поэтому grub не загружается автоматически.

Тайм-аут установлен на -1, и он ждет выбора пользователя. Я предполагаю, что это требует некоторого редактирования скриптов в /etc/pm/sleep.d/10_grub-common. Я новичок, поэтому, к сожалению, я не пытался выяснить точное изменение.

4
ответ дан 2 August 2018 в 00:50

Ответ пользователя68186 для Ubuntu 16.04 не помог мне. Однако решение здесь .

Сначала убедитесь, что спящий режим работает. Затем

Найдите и установите редактор dconf в Ubuntu Software. Затем запустите его и перейдите к настройкам org -> gnome -> daemon -> plugins -> power.

Измените значение «lid-close-ac-action» и «action-close-battery-action» ".

В моих настройках питания эти параметры отображаются как пустые, но они работают по назначению.

0
ответ дан 2 August 2018 в 00:50

Этот вопрос достаточно часто возникает в Google, и я думаю, что это стоит того, чтобы напасть. Описанный здесь метод представляет собой (imo) не гибридную суспензию. Это «спящий режим после X минут приостановки». True hybrid suspend записывает RAM на диск, а затем переходит в режим низкого энергопотребления (режим ожидания). Хотя это занимает больше времени, возобновление происходит мгновенно, когда машина имеет батарею, иначе возобновляется форматирование жесткого диска. Это поведение большинства людей известно как гибридный сон и используется по умолчанию в новых ноутбуках Windows и Mac.

Вот как включить real hybrid suspend:

  • Следуйте первой части верхнего ответа. Это отменяет вызов «suspend» для выполнения «hybrid_suspend» в pm-utils.
    % cat /etc/pm/config.d/00-use-suspend-hybrid
    # Always use suspend_hybrid instead of suspend
    if [ "$METHOD" = "suspend" ]; then
        METHOD=suspend_hybrid
    fi
  • Сделайте резервную копию / usr / lib / pm-utils / pm-functions
  • Получите патч здесь: https://bugs.freedesktop.org/attachment.cgi?id=68712 Этот патч позволяет гибридное приостановить, если доступно (т.е. на ядрах 3.6+ )
  • Либо примените его, используя «patch -p0», либо вручную слейте его, если это не сработает

Этот метод работает для меня на моем Sony Vaio SVS.

PS: Воспроизведение патча здесь, если файл будет удален в будущем:

diff --git a/pm/pm-functions.in b/pm/pm-functions.in
--- a/pm/pm-functions.in
+++ b/pm/pm-functions.in
@@ -316,8 +316,28 @@ if [ -z "$HIBERNATE_MODULE" ] && \
    {
        [ -n "${HIBERNATE_MODE}" ] && \
        grep -qw "${HIBERNATE_MODE}" /sys/power/disk && \
+       HIBERNATE_MODE_SAVE=$(cat /sys/power/disk) && \
+       HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE##*[}" && \
+       HIBERNATE_MODE_SAVE="${HIBERNATE_MODE_SAVE%%]*}" && \
        echo -n "${HIBERNATE_MODE}" > /sys/power/disk
        echo -n "disk" > /sys/power/state
+       RET=$?
+       echo -n "$HIBERNATE_MODE_SAVE" > /sys/power/disk
+       return "$RET"
+   }
+fi
+
+# for kernels that support suspend to both (i.e. hybrid suspend)
+# since kernel 3.6
+if [ -z "$SUSPEND_HYBRID_MODULE" ] && \
+   [ -f /sys/power/disk ] && \
+   grep -q disk /sys/power/state && \
+   grep -q suspend /sys/power/disk; then
+   SUSPEND_HYBRID_MODULE="kernel"
+   do_suspend_hybrid()
+   {
+       HIBERNATE_MODE="suspend"
+       do_hibernate
    }
 fi

Источники:

3
ответ дан 2 August 2018 в 00:50

Ubuntu 16.04 и выше

Решение на blueyed для гибридного Hybrid с Linux 3.6+ не работает для меня. Я подозреваю, что это связано с тем, что Ubuntu 16.04 использует systemd и не использует файл /etc/pm/config.d/00-use-suspend-hybrid.

Сначала проверьте, работает ли спящий режим и гибридный спящий режим с помощью systemd

. Откройте терминал нажав Ctrl + Alt + T и введите:

sudo systemctl hibernate

Это должно привести к спячке вашего компьютера. Чтобы попробовать гибридный сон, введите:

sudo systemctl hybrid-sleep

Если он работает, сделайте его постоянным.

  • При закрытии крышки работает следующее:

Откройте файл /etc/systemd/logind.conf, используя ваш предпочтительный редактор. Чтобы отредактировать этот файл, вам нужно будет активировать административную власть с помощью sudo, gksudo или pkexec .

Найти две строки:

#HandleSuspendKey=suspend
#HandleLidSwitch=suspend

Примечание. Эти строки прокомментированы с помощью # перед ними. suspend является действием по умолчанию. Удалите # и измените suspend на hybrid-sleep в этих двух строках так, чтобы они выглядели следующим образом:

HandleSuspendKey=hybrid-sleep
HandleLidSwitch=hybrid-sleep

Сохраните файл. Выйти и войти в систему.

Примечание:

  • Кроме suspend или hybrid-sleep есть третий вариант, hibernate.
  • У моего ноутбука нет физической кнопки сна. Поэтому я не смог проверить это.
  • Нажав Suspend из меню cog, компьютер отключится, а не гибрид-sleep.

Источник: https: // superuser. com / questions / 719447 / how-to-use-systemd-hybrid-sleep-вместо-suspend-under-gnome-in-linux

Надеюсь, это поможет

26
ответ дан 4 August 2018 в 16:20

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

Похожие вопросы: