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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:спящий_режим [2014/02/16 19:33]
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-файл==== ====Настройка гибернации в swap-файл====
-Выясняем UUID корневого раздела (с помощью mount узнаем, какой из sda - корень): +  -- Узнайте UUID корневого раздела (с помощью mount можно ​узнать, какой из разделов является ​корнем): 
-<code bash> +  ​.. ​<code bash>​mount | grep " / " 
-mount | grep " / " +sudo blkid</​code>​ 
-sudo blkid +  -- Укажите первый физический блок swap-файла. ​Его можно узнать с помощью ​''​swap-offset'' ​из пакета ​''​uswsusp''​
-</​code>​ +  ​.. ​<code bash>​sudo swap-offset /​swapfile</​code>​ 
-Теперь мы должны указать первый физический блок ​нашего ​swap-файла. ​Узнаем его ​с помощью ​**swap-offset** из пакета ​**uswsusp**+  -- Запишите ​ваши параметры в файл настроек [[initramfs]]
-<code bash> +  ​.. ​<code bash>​echo "​resume=UUID=<​your UUID> resume_offset=<​your offset>" | sudo tee /​etc/​initramfs-tools/​conf.d/​resume</​code>​ 
-sudo swap-offset /swapfile +  .. и в конфиг ​[[GRUB]]
-</​code>​ +  ​.. ​<code bash>​sudo nano /​etc/​default/​grub</​code>​ 
-Теперь записываем наши параметры в конфиг initramfs:​ +  ​.. ​В строку ​''​GRUB_CMDLINE_LINUX_DEFAULT'' ​добавьте параметры без кавычек и знаков ><: 
-<code bash> +  ​.. ​<code bash>​resume=UUID=<​your UUID> resume_offset=<​youroffset></​code>​ 
-echo "​resume=UUID=<​your UUID> resume_offset=<​youroffset>" | sudo tee /​etc/​initramfs-tools/​conf.d/​resume +  -- Обновите настройки GRUB и сгенерируйте новый initramfs
-</​code>​ +  ​.. ​<code bash>​sudo update-grub 
-И в конфиг GRUB: +sudo update-initramfs -u</​code>​ 
-<code bash> +  ​-- ​Перезагрузитесь.
-sudo nano /​etc/​default/​grub +
-</​code>​ +
-В строку GRUB_CMDLINE_LINUX_DEFAULT добавляем параметры без кавычек и знаков ><: +
-<code bash> +
-resume=UUID=<​your UUID> resume_offset=<​youroffset>​ +
-</​code>​ +
-Не забываем выполнить+
-<code bash> +
-sudo update-grub +
-sudo update-initramfs -u +
-</​code>​ +
-Перезагружаемся.+
  
-Проверяем работу гибернации ​через pm-utils: +Проверьте работу гибернации ​с помощью команды ''​pm-hibernate''​ из пакета ''​pm-utils''​
-<code bash> +<code bash>​sudo pm-hibernate</​code>​
-sudo pm-hibernate +
-</​code>​+
 Если у вас все работает - переходите к следующему пункту. Если у вас все работает - переходите к следующему пункту.
-Если нет - используем утилиты из uswsusp. +Если нет --- воспользуйтесь утилитой ''​uswsusp''​. 
-<code bash> +<code bash>​sudo s2disk</​code>​ 
-echo "​SLEEP_MODULE=uswsusp"​ | sudo tee -a /​etc/​pm/​config.d/​module +Если у вас все заработало - радуйтесь,​ если нет - придется конфигурировать ''​uswsusp'':​ 
-</​code>​ +<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 pm-hibernate +<code bash>sudo s2disk</​code
-</​code>​ +Если заработало,​ заменяем вызов ''​pm-hibernate''​ на ''​s2disk'':​ 
-Если не заработало и сейчас, можете почитать ​на тему настройки tuxonice.+<code bash>echo "​SLEEP_MODULE=uswsusp"​ | sudo tee -a /​etc/​pm/​config.d/​module</​code>​ 
 +Снова ​проверьте гибернацию ​(возможно,​ перед этим потребуется перезагрузка):​ 
 +<code bash>​sudo pm-hibernate</​code>​ 
 +Если не заработало ​с ''​uswsusp'', ​используйте ​[[TuxOnIce]] - он обычно работает без проблем.
  
-Теперь осталось активировать кнопку "​Спящий режим"​ в меню выключения. +Если гибернация заработала, то остается только активировать кнопку "​Спящий режим"​ в меню выключения. ​Для этого: 
-<code bash> +  -- Измените настройки [[policitykit]]:​ 
-sudo nano /​var/​lib/​polkit-1/​localauthority/​10-vendor.d/​com.ubuntu.desktop.pkla +  .. <code bash>​sudo nano /​var/​lib/​polkit-1/​localauthority/​10-vendor.d/​com.ubuntu.desktop.pkla</​code>​ 
-</​code>​ +  ​.. ​Найдите блоки, посвященные hibernate:​ 
-Находим блоки, посвященные hibernate:​ +  ​.. ​<​code ​ini>​[Disable hibernate by default in upower]
-<​code>​ +
-[Disable hibernate by default in upower]+
 Identity=unix-user:​* Identity=unix-user:​*
 Action=org.freedesktop.upower.hibernate Action=org.freedesktop.upower.hibernate
Строка 82: Строка 72:
 Identity=unix-user:​* Identity=unix-user:​*
 Action=org.freedesktop.login1.hibernate Action=org.freedesktop.login1.hibernate
-ResultActive=no +ResultActive=no</​code>​ 
-</​code>​ +  .. и измените в них ​параметр ​//​ResultActive//​ с **no** на **yes**. 
-И меняем параметры **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|Исходная статья,​ подвергшаяся обработке]] ​(англ.) 
-  ​* [[http://​ubuntuforums.org/​showthread.php?​t=1042946|Исходная статья,​ подвергшаяся обработке]] +  * [[https://​wiki.archlinux.org/​index.php/​Uswsusp#​With_pm-utils|Статья на ArchWiki]] (англ.)
-  * [[https://​wiki.archlinux.org/​index.php/​Uswsusp#​With_pm-utils|Статья на арчевики]]+
   * [[http://​blog.demkov.me/​281-спящий-режим-в-ubuntu-13-10/​|Активация кнопки "​Спящий режим"​]]   * [[http://​blog.demkov.me/​281-спящий-режим-в-ubuntu-13-10/​|Активация кнопки "​Спящий режим"​]]
 +  * [[https://​wiki.debian.org/​Hibernation/​Hibernate_Without_Swap_Partition | Конфигурирование uswsusp]]
  
-{{tag>​спящий_режим}}+{{tag>​спящий_режим ​система swap}}