Различия
Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
wiki:спящий_режим [2014/02/16 18:38] создано |
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 ГБ в корневом каталоге (убедитесь, что у вас хватает свободного места): | ||
+ | .. <code bash>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>sudo swapoff -a | ||
+ | sudo swapon /swapfile</code> | ||
+ | -- Допишите строку в fstab, чтобы созданный swap подключался автоматически при запуске системы. | ||
+ | .. <code bash>echo "/swapfile swap swap defaults,pri=<Приоритет (от 0 до 32767)> 0 0"| sudo tee -a /etc/fstab</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}} |