Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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}} |