Спящий режим Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:спящий_режим [2014/02/16 19:02]
[Создание swap-файла]
wiki:спящий_режим [2019/06/28 00:20] (текущий)
[Настройка]
Строка 1: Строка 1:
 ====== Спящий режим ====== ====== Спящий режим ======
-===== Настройка ​для Ubuntu 13.10 и 14.04 ===== +<note important>​В 2017 году часть информации из данной статьи устарела. Скорее всего, наиболее простым и стабильным в работе ​является [[TuxOnIce]],​ прочие методы нужно проверить и скорректировать статью</​note>​ 
-Спящий режим ([[http://​ru.wikipedia.org/​wiki/​Гибернация_(операционные_системы)|hibernate]]) - энергосберегающий режим операционной системы компьютера,​ позволяющий сохранять содержимое оперативной памяти на энергонезависимое устройство хранения данных (жесткий диск) перед выключением питания. +===== Что это и как это работает? ​===== 
-Для поддержки работы данного режима у вас должен присутствовать ​[[http://ru.wikipedia.org/​wiki/​Своп_(компьютеры)|swap]]-раздел или (рекомендуется) swap-файл. +Спящий режим ([[wpru>Гибернация_(операционные_системы)|hibernate]]) ​-- энергосберегающий режим операционной системы компьютера,​ позволяющий сохранять содержимое оперативной памяти на энергонезависимое устройство хранения данных (жесткий диск) перед выключением питания.\\ 
-Рекомендации по созданию swap-раздела смотри [[руководство_по_ubuntu_desktop_14_04|здесь]]. +При засыпании все данные процессов вытесняются в swap файл, а также в swap сохраняются некоторые настройки устройств,​ и после этого система переходит в режим с полным отключением питания.\\ 
-Более удобным в использовании (но сложным при создании) ​является вариант со swap-файлом (он не занимает отдельный раздел,​ легко удаляется,​ легко меняет свой размер).+При включении компьютера система начинает загружаться ​как обычно,​ но если в процессе загрузки ядро обнаруживает ​образ памяти сохраненный в swap, то загрузка в нормальном ​режиме прекращается и начинается восстановление состояния оперативной памяти из swap-а. Кроме этого восстанавливаются настройки ​устройств (видеоадаптер, ​сетевые карты, и пр.).\\ 
 +И вот именно с восстановлением работоспособности устройств компьютера и связаны все основные проблемы с режимом сна. Не всегда драйвера устройств позволяют осуществить необходимые действия по сохранению и восстановление настроек после сна. И это может приводить к зависанию компьютера после попытки проснуться.\\    
 +Еще одна неприятность этого режима проявляется при больших объемах оперативной запоминающей памяти компьютераРечь идет об объемах оперативной памяти от 8Gb и выше ​(что в последние годы встречается все чаще). Если памяти много, то и много придется сохранять в swap при засыпании и соответственно вычитывать из swap при просыпании. Из за этого засыпание и просыпания могут занять довольно значительное время. Может оказаться,​ что вам проще и гораздо быстрее все-таки сохранить свою работу и выключить нормально ​компьютер, а потом, после обычной загрузки,​ открыть свои рабочие файлы заново.\\ 
 +Именно из-за озвученных выше особенностей режима сна в последних версиях Ubuntu по умолчанию этот режим энергосбережения отключен. ​  
 + 
 +===== Настройка===== 
 +Для поддержки работы данного режима у вас должен присутствовать [[swap|swap-раздел]] или (рекомендуется) swap-файл.\\ 
 +Рекомендации по созданию swap-раздела ​можно просмотреть ​[[swap|здесь]]. 
 +Вариант со swap-файлом является более удобным в использовании (но чуть более ​сложным при создании) т.к. он не занимает отдельный раздел,​ легко удаляется, ​его размер можно ​легко ​изменить (без необходимости ​менять разметку диска и двигать/​изменять размеры других разделов).\\ 
 +Но учтите,​ не на любой файловой системе можно создать (и использовать) swap-файл:​ из за некоторых особенностей организации ​размещения файлов на диске swap-файл нельзя использовать на файловой системе [[btrfs|btrfs]] (без специальных ухищрений).   
 ====Создание swap-файла==== ====Создание swap-файла====
-Про размер swap-файла можете почитать [[wiki:​swap|здесь]]. +Про ​рекомендуемый ​размер swap-файла можно узнать [[wiki:​swap|здесь]]. 
-Создаем файл размером 4 ГБ: +  ​-- ​Создайте файл размером 4 ГБ в корневом каталоге (убедитесь,​ что у вас хватает свободного места)
-<code bash> +  ​.. ​<code bash>​sudo dd if=/​dev/​zero of=/​swapfile bs=1M count=4096</​code>​ 
-sudo dd if=/​dev/​zero of=/​swapfile bs=1M count=4096 +  ​-- ​Дайте файлу необходимые права и создайте в нем область подкачки:​ 
-</​code>​ +  ​.. ​<code bash>​sudo chmod 600 /swapfile && sudo mkswap /​swapfile</​code>​ 
-Даем файлу необходимые права и создаем область подкачки:​ +  ​-- ​Вручную подключите файл как swap: 
-<code bash> +  ​.. ​<code bash>​sudo swapoff -a 
-sudo chmod 600 /swapfile && sudo mkswap /swapfile +sudo swapon /​swapfile</​code>​ 
-</​code>​ +  -- Допишите строку ​в fstab, чтобы ​созданный ​swap подключался автоматически при запуске системы. 
-Вручную подключаем файл как swap: +  ​.. ​<code bash>​echo "/​swapfile swap swap defaults,​pri=<​Приоритет (от 0 до 32767)> ​0 0"| sudo tee -a /​etc/​fstab</​code>​
-<code bash> +
-sudo swapoff -a +
-sudo swapon /swapfile +
-</​code>​ +
-Правим fstab, чтобы ​наш swap подключался автоматически при запуске системы. +
-<code bash> +
-echo "/​swapfile swap swap defaults 0 0"| sudo tee -a /etc/fstab.test +
-</​code>​+
  
-===== Ссылки =====+====Настройка гибернации в swap-файл==== 
 +  -- Узнайте UUID корневого раздела (с помощью mount можно узнать,​ какой из разделов является корнем):​ 
 +  .. <code bash>​mount | grep " / " 
 +sudo blkid</​code>​ 
 +  -- Укажите первый физический блок swap-файла. Его можно узнать с помощью ''​swap-offset'' ​из пакета ''​uswsusp'':​ 
 +  .. <code bash>​sudo swap-offset /​swapfile</​code>​ 
 +  -- Запишите ваши параметры в файл настроек [[initramfs]]:​ 
 +  .. <code bash>​echo "​resume=UUID=<your UUID> resume_offset=<your offset>"​ | sudo tee /​etc/​initramfs-tools/​conf.d/​resume</​code>​ 
 +  .. и в конфиг [[GRUB]]: 
 +  .. <code bash>​sudo nano /​etc/​default/​grub</​code>​ 
 +  .. В строку ''​GRUB_CMDLINE_LINUX_DEFAULT''​ добавьте параметры без кавычек и знаков ><: 
 +  .. <code bash>​resume=UUID=<your UUID> resume_offset=<​youroffset></​code>​ 
 +  -- Обновите настройки GRUB и сгенерируйте новый initramfs:​ 
 +  .. <code bash>​sudo update-grub 
 +sudo update-initramfs -u</​code>​ 
 +  -- Перезагрузитесь.
  
-  ​* [[FIXME]]+Проверьте работу гибернации с помощью команды ''​pm-hibernate''​ из пакета ''​pm-utils'':​ 
 +<code bash>​sudo pm-hibernate</​code>​ 
 +Если у вас все работает - переходите к следующему пункту. 
 +Если нет --- воспользуйтесь утилитой ''​uswsusp''​. 
 +<code bash>​sudo s2disk</​code>​ 
 +Если у вас все заработало - радуйтесь,​ если нет - придется конфигурировать ''​uswsusp'':​ 
 +<code bash>​sudo dpkg-reconfigure -pmedium uswsusp</​code>​ 
 +На вопрос "​Продолжить без работоспособного пространства подкачки?"​ в случае использования swap-файла отвечаем "​Да",​ пространство подкачки в диалоге указываем по UUID (**/​dev/​disk/​by-uuid/<​your UUID>​**),​ раздел __не шифруем__ (иначе может случиться подобное описанному [[http://​www.linux.org.ru/​forum/​general/​10586420 | здесь]]). После этого автоматически будет сформирован uswsusp.conf с необходимыми параметрами. 
 +Пробуем опять:​ 
 +<code bash>​sudo s2disk</​code>​ 
 +Если заработало,​ заменяем вызов ''​pm-hibernate''​ на ''​s2disk'':​ 
 +<code bash>​echo "​SLEEP_MODULE=uswsusp"​ | sudo tee -a /​etc/​pm/​config.d/​module</​code>​ 
 +Снова проверьте гибернацию (возможно,​ перед этим потребуется перезагрузка):​ 
 +<code bash>​sudo pm-hibernate</​code>​ 
 +Если не заработало с ''​uswsusp'',​ используйте [[TuxOnIce]] - он обычно работает без проблем. 
 + 
 +Если гибернация заработала,​ то остается только активировать кнопку "​Спящий режим"​ в меню выключения. Для этого:​ 
 +  -- Измените настройки [[policitykit]]:​ 
 +  .. <code bash>​sudo nano /​var/​lib/​polkit-1/​localauthority/​10-vendor.d/​com.ubuntu.desktop.pkla</​code>​ 
 +  .. Найдите блоки, посвященные hibernate:​ 
 +  .. <code ini>​[Disable hibernate by default in upower] 
 +Identity=unix-user:​* 
 +Action=org.freedesktop.upower.hibernate 
 +ResultActive=no 
 + 
 +[Disable hibernate by default in logind] 
 +Identity=unix-user:​* 
 +Action=org.freedesktop.login1.hibernate 
 +ResultActive=no</​code>​ 
 +  .. и измените в них параметр //​ResultActive//​ с **no** на **yes**. 
 +  -- Перезапустите X-сервер. 
 + 
 +Если гибернация работает по вызову ''​pm-hibernate'',​ но не работает по кнопке "​Спящий режим"​ в меню выключения,​ то, возможно,​ проблема в том, что эта кнопка вызывает команду ''​systemctl hibernate'',​ которая по умолчанию не поддерживает ''​uswsusp''​ (подробно эта проблема в LXDE описана [[http://​www.linux.org.ru/​forum/​general/​12274792 | здесь]]). 
 +  -- Для решения этой проблемы внесите правки в конфигурационный файл: 
 +  .. <code bash>​sudo cp /​lib/​systemd/​system/​systemd-hibernate.service /​etc/​systemd/​system/​ 
 +sudo nano /​etc/​systemd/​system/​systemd-hibernate.service</​code>​ 
 +  .. Замените в нём параметр //​ExecStart//​ с <code ini>​ExecStart=/​lib/​systemd/​systemd-sleep hibernate</​code>​ 
 +  .. на <code ini>​ExecStart=/​bin/​sh -c '​s2disk && run-parts --regex .\* -a post /​lib/​systemd/​system-sleep'</​code>​ 
 +===== Ссылки ===== 
 +  * [[http://​ubuntuforums.org/​showthread.php?​t=1042946|Исходная статья,​ подвергшаяся обработке]] (англ.) 
 +  * [[https://​wiki.archlinux.org/​index.php/​Uswsusp#​With_pm-utils|Статья на ArchWiki]] (англ.) 
 +  * [[http://​blog.demkov.me/​281-спящий-режим-в-ubuntu-13-10/​|Активация кнопки "​Спящий режим"​]] 
 +  ​* [[https://​wiki.debian.org/​Hibernation/​Hibernate_Without_Swap_Partition | Конфигурирование uswsusp]]
  
-{{tag>​спящий_режим}}+{{tag>​спящий_режим ​система swap}}