LXF97:Hibernate
(Новая: ==Пингвин впадает в спячку== :Приходится часто включать и выключать ноутбук? '''Сергей Яремчук''' подска...) |
|||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:Учебники]] | ||
==Пингвин впадает в спячку== | ==Пингвин впадает в спячку== | ||
Строка 71: | Строка 72: | ||
Если используется более ранняя версия ядра, желательно, но не обязательно установить и последнюю версию ACPI (http://acpi.sourceforge.net/). См. Рис. 1. Последние приготовления Также следует позаботиться о том, чтобы раздел подкачки имел достаточный размер (рекомендуется хотя бы двойной размер ОЗУ). Как вариант, можно подготовить файл, в котором и будет сохраняться информация. В конфигурационном файле загрузчика '''/boot/grub/menu.lst''' к параметрам, передаваемым ядру, добавьте строку '''resume2=swap:/dev/hda2''', где '''/dev/hda2''' – swap-раздел, используемый при гибернации. Теперь, когда система будет засыпать, сигнатура данного раздела будет изменена на S2SUSP, а уже после загрузки и извлечения данных она будет заменена на нормальную – SWASPACE2. И если этот раздел будет использован другим дистрибутивом, то при запуске заснувшей системы будет найдена сигнатура S2SUSP, но нужных данных на разделе не обнаружится, и загрузка будет остановлена. Выходом из такой ситуации является загрузка с параметром ''noresume2'' или форматирование раздела заново при помощи ''mkswap'', либо использование для хранения данных гибернации файла подкачки вместо раздела. | Если используется более ранняя версия ядра, желательно, но не обязательно установить и последнюю версию ACPI (http://acpi.sourceforge.net/). См. Рис. 1. Последние приготовления Также следует позаботиться о том, чтобы раздел подкачки имел достаточный размер (рекомендуется хотя бы двойной размер ОЗУ). Как вариант, можно подготовить файл, в котором и будет сохраняться информация. В конфигурационном файле загрузчика '''/boot/grub/menu.lst''' к параметрам, передаваемым ядру, добавьте строку '''resume2=swap:/dev/hda2''', где '''/dev/hda2''' – swap-раздел, используемый при гибернации. Теперь, когда система будет засыпать, сигнатура данного раздела будет изменена на S2SUSP, а уже после загрузки и извлечения данных она будет заменена на нормальную – SWASPACE2. И если этот раздел будет использован другим дистрибутивом, то при запуске заснувшей системы будет найдена сигнатура S2SUSP, но нужных данных на разделе не обнаружится, и загрузка будет остановлена. Выходом из такой ситуации является загрузка с параметром ''noresume2'' или форматирование раздела заново при помощи ''mkswap'', либо использование для хранения данных гибернации файла подкачки вместо раздела. | ||
− | [[Изображение:LXF97_pict1.jpg|thumb|Рис.1 ]] | + | [[Изображение:LXF97_pict1.jpg|thumb|Рис.1 Настроить необходимые параметры ядра можно и через графический интерфейс]] |
Загрузите новое ядро. В процессе старта на консоль должны быть выведены сообщения (''dmesg | less''), вроде: | Загрузите новое ядро. В процессе старта на консоль должны быть выведены сообщения (''dmesg | less''), вроде: |
Текущая версия на 10:36, 17 ноября 2008
|
|
|
Содержание |
[править] Пингвин впадает в спячку
- Приходится часто включать и выключать ноутбук? Сергей Яремчук подскажет, как сэкономить пару-тройку минут на загрузке и запуске необходимых приложений.
К сожалению, праздники и выходные имеют вредную привычку быстро заканчиваться, после чего снова предстоит приступать к работе, вспоминая, чем занимался в последний раз. Очевидно, это настолько существенная проблема для народа, что в Windows, начиная с ХР, уже реализована возможность гибернации (hibernate state), доступная через Панель Управления: Производительность и обслуживание > Электропитание > Спящий режим > Разрешить использование спящего режима. При этом все данные, находящиеся в оперативной памяти, сбрасываются на жесткий диск (т.е. фактически делается моментальный снимок состояния системы), и компьютер отключается. При включении полностью восстанавливается предыдущее состояние, и пользователь начинает работу именно с того места, где он закончил ее. Кроме очевидного удобства, выключение/включение компьютера при использовании такого режима ускоряется, так как не происходит закрытия и запуска приложений, что очень важно для мобильных устройств, нацеленных на энергосбережение.
[править] А что пингвины?
Сторонники Linux тоже любят праздники и желают пользоваться всеми благами цивилизации, поэтому проблема не осталась незамеченной. Первым такой режим реализовал Габор Кути [Gabor Kuti] в 1998 году – его заплатка v7c для ядра 2.2.20 до сих пор находится на странице http://falcon.sch.bme.hu/~seasons/linux/swsusp.html, но уже долгое время не поддерживается. Основную работу по реализации спящего режима для Linux провела группа энтузиастов под руководством Найджела Каннингэма [Nigel Cunningham]. Хотя разработка Software Suspend for Linux или swsusp, имеет уже длинную историю, она долгое время рассматривалась как альфа и использовалась энтузиастами на свой страх и риск. Наконец, начиная с версии ядра 2.5.18, код swsusp включен в основное дерево разработки.
Вместе с исходными текстами ядра доступно небольшое описание реализации этого режима: посмотрите файл swsusp.txt в каталоге /usr/src/linux/Documentation/power, с которым советую ознакомиться всем для понимания сути проблемы. В настоящее время фактически известны несколько реализаций спящего режима для Linux. Это заплатка pmdisk (СONFIG_PM_DISK) http://lwn.net/Articles/48471/, сейчас ее код включен в состав swsusp, собственно сам swsusp, swsusp2 или Software Suspend 2 (http://www.suspend2.net/) и µswsusp – User space Suspend (http://suspend.sourceforge.net/). Первые два проекта в настоящее время интереса не представляют. Зато интересны последние две разработки, развивающиеся сейчас наиболее активно. Проект µswsusp относительно молодой (начало разработок датировано апрелем 2006), поддержаны ядра начиная от 2.6.17, реализация – в виде обычной программы, работающей в пространстве пользователя,что дает большие преимущества. Эта разработка уже готова к применению, но некоторые возможности пока не дотягивают до swsusp2, о котором и пойдет речь в дальнейшем.
Врезка
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
В отличие от µswsusp, swsusp2 реализован в виде заплатки к ядру. Сегодня поддержка ядер версии 2.4 этим проектом практически остановлена, последней является заплатка 2.1.5.7B для ядра 2.4.28; работает она стабильно, но дальнейшее развитие не предусмотрено. Аналогичная ситуация и с ядром 2.2. Поддерживаются все файловые системы (некоторые, правда, с оговорками), а также LVM и dm-crypt (средство для шифрования данных). Работа со спящим режимом протестирована на многочисленных конфигурациях, хотя возможны и проблемы с некоторым оборудованием. Необходима поддержка расширения процессора PSE или PSE36 (cat /proc/cpuinfo | grep pse) – не могу сказать, где ее нет, но с процессорами Intel, AMD и VIA C3 проблем быть не должно. Система сна пока не будет работать с большим количеством оперативной памяти (> 4 ГБ), зато поддерживаются AGP, DRI, USB и прочее. Однако, если жесткий диск не знает ничего о DMA или режиме suspend, что свойственно для ну очень старых дисков, то с данными, скорее всего, придется проститься.
Возможность сохранения данных вместо раздела подкачки в файл, появившаяся во второй версии, имеет особое значение. Представьте себе такую ситуацию: для тестирования запускаете Knoppix, который находит на диске swap-раздел, монтирует его и сохраняет в нем свои данные. Если в этом разделе были сохранены результаты suspend, то, естественно, они будут затерты. Аналогичная картина будет наблюдаться при использовании двух ядер, одно из которых не знает о suspend. Использование файла подкачки позволяет избежать таких ситуаций.
[править] Настройка гибернации в Kubuntu
Некоторые производители уже включают возможность перехода в спящий режим в последние версии дистрибутивов. За подробностями конкретно используемого вами дистрибутива отправляю на страницу Wiki проекта SWSup2, где все подробно расписано. В Kubuntu, начиная с версии 6.10, при выходе из системы такой пункт уже имеется. В Kubuntu 6.06 LTS такой возможности по умолчанию нет, но эту несправедливость легко исправить.
К сожалению, если набрать sudo apt-cache search hibernate, можно найти только старую версию скрипта hibernate, упрощающего управление этим режимом. Мир не без добрых людей: тем, у кого нет желания самостоятельно компилировать ядро, следует отправиться на страницу http://dagobah.ucc.asn.au/dapper-kernels/, где находится альтернативный репозиторий для Dapper Drake. Добавьте в /etc/apt/sources.list:
deb http://dagobah.ucc.asn.au/ubuntu-suspend2 dapper/
и обновите список пакетов:
$ sudo apt-get update
Запрос sudo apt-cache search hibernate покажет наличие двух пакетов, которые и нужно установить. Кстати, метапакет suspend2 включает все необходимое.
$ sudo apt-get hibernate suspend2
Учитывая «мягкий» характер зависимостей пакетов в Ubuntu, советую внимательно просмотреть, какие пакеты будут установлены дополнительно – и, главное, списки Предлагаемые пакеты и Рекомендуемые пакеты.
[править] Компиляция ядра
В том случае, когда вышеприведенный вариант неприемлем, ядро придется собрать самостоятельно. Исходные тексты ядра можно загрузить с http://www.kernel.org/ или найти на нашем DVD, а с сайта swsup2 следует взять заплатку под нужную версию.
$ cd /usr/src $ sudo tar -xjvf /home/source/ linux-2.6.22.tar.gz $ sudo ln -sf linux-2.6.22 linux $ cd linux $ wget -c http://www.tuxonice.net/downloads/all/suspend2-2.2.10-for-2.6.22.patch.bz2 $ bzcat suspend2-2.2.10-for-2.6.22.patch.bz2 | patch -p1
Теперь в .config активируйте следующие параметры:
CONFIG_SUSPEND2=y CONFIG_SUSPEND2_FILE=y CONFIG_SUSPEND2_SWAP=y CONFIG_CRYPTO_LZF=y
Если используется более ранняя версия ядра, желательно, но не обязательно установить и последнюю версию ACPI (http://acpi.sourceforge.net/). См. Рис. 1. Последние приготовления Также следует позаботиться о том, чтобы раздел подкачки имел достаточный размер (рекомендуется хотя бы двойной размер ОЗУ). Как вариант, можно подготовить файл, в котором и будет сохраняться информация. В конфигурационном файле загрузчика /boot/grub/menu.lst к параметрам, передаваемым ядру, добавьте строку resume2=swap:/dev/hda2, где /dev/hda2 – swap-раздел, используемый при гибернации. Теперь, когда система будет засыпать, сигнатура данного раздела будет изменена на S2SUSP, а уже после загрузки и извлечения данных она будет заменена на нормальную – SWASPACE2. И если этот раздел будет использован другим дистрибутивом, то при запуске заснувшей системы будет найдена сигнатура S2SUSP, но нужных данных на разделе не обнаружится, и загрузка будет остановлена. Выходом из такой ситуации является загрузка с параметром noresume2 или форматирование раздела заново при помощи mkswap, либо использование для хранения данных гибернации файла подкачки вместо раздела.
Загрузите новое ядро. В процессе старта на консоль должны быть выведены сообщения (dmesg | less), вроде:
Software Suspend Core. Software Suspend Swap Writer registered. Software Suspend 2.2.10: Suspending enabled.
Обратите также внимание и на запуск ACPI. Иногда система выводит примерно такое сообщение:
ACPI disabled because your bios is from 97 and too old You can enable it with acpi=force
Оно свидетельствует о древности используемого BIOS. Поступите, как подсказывает сообщение, т.е. добавьте параметр acpi=force к параметрам, передаваемым ядру, прописав эти строки в конфигурационном файле загрузчика.
[править] Вперед
Теперь можно укладывать систему спать. Ранее это можно было сделать несколькими вариантами, но в ядрах 2.6, использующих sysfs, рекомендуемым является обращение к файлам в /sys/power/.
Например, чтобы перевести систему в режим Suspend to RAM, когда питание процессора отключается, но вся информация сохраняется в оперативной памяти, следует ввести
$ sudo echo mem > /sys/power/state
Для сброса информации в раздел подкачки и последующего отключения – режим Suspend to Disk – используется такая команда:
$ sudo echo -n disk > /sys/power/state
После загрузки с новым ядром в /sys/power/ появится подкаталог suspend2, файлы в котором позволяют получить информацию о состоянии некоторых параметров системы либо управлять режимом сна. Перевести систему в режим гибернации можно и так:
$ sudo echo anything > /sys/power/suspend2/do_suspend
после чего компьютер, немного пожужжав, выключится. Если заново запустить систему, то в консоли среди прочих должны появиться сообщения, свидетельствующие о том, что swap-раздел с информацией для восстановления состояния найден.
Software Suspend 2.2.10: Swap space signature found. Software Suspend 2.2.10: This is normal swap space.
По умолчанию компрессия и шифрование записываемого образа включены. При необходимости, отключить эти функции можно так:
$ sudo echo 0 > /sys/power/suspend2/compression/enabled $ sudo echo 0 > /sys/power/suspend2/encryption/enabled
Чтобы опять их включить, достаточно заменить в этих выражениях 0 на 1.
[править] Работа со скриптом hibernate
C помощью файлов, находящихся в /sys/power/suspend2, можно задать множество параметров работы системы сна, но вбивать их каждый раз вручную достаточно нудно. Разработчики существенно упростили эту задачу, написав скрипт, делающий весь процесс более наглядным и удобным. Называется он hibernate – именно его мы и установили, введя одноименный параметр в apt-get. Просто наберите:
$ sudo /usr/sbin/hibernate
и система погрузится в режим сна. Скрипт имеет ряд полезных параметров. Например, --save-settings позволит сохранить все настройки в указанный следом файл. Параметр --no-suspend позволит протестировать скрипт без выключения питания. После изменения всех настроек следует протестировать работу, введя в качестве параметра --reboot=1, что заставит систему сохранить все настройки в файл гибернации и перезагрузиться.
Свои параметры скрипт берет из конфигурационного файла /etc/hibernate/hibernate.conf, разъяснения по структуре которого можно получить, набрав hibernate с параметром --h. Я приведу здесь лишь наиболее интересные директивы, но в принципе можно работать и с установками по умолчанию.
UseSwsusp2 - Разрешает или блокирует режим Suspend.
EnableEscape - Будучи включенным, позволяет отменить переход в suspend-режим клавишей Escape.
PowerdownMethod - Способ засыпания. 3 соответствует Suspend-To-RAM, 4 – гибернации, 5 – отключению питания. Для ноутбуков разумно использовать последний вариант.
IncompatibleDevices и IncompatiblePrograms - Первое – это список устройств, несовместимых с гибернацией (обычно /dev/dsp, /dev/video*). Процессы, имеющие к ним доступ, будут перед засыпанием остановлены. Второе – названия несовместимых программ; они будут остановлены независимо от того, к каким устройствам обращаются.
Unmount и UnmountFSTypes - Перечень файловых систем, которые следует размонтировать перед переходом в suspend-режим. Хорошей идеей будет включить в него используемые вами сетевые ФС. Первая директива позволяет указать точки монтирования, а вторая – типы файловых систем (например, smbfs).
StartServices, StopServices, RestartServices - Список сервисов, которые необходимо остановить при выключении и запустить/перезапустить при включении.
Кстати, в некоторых дистрибутивах (Kubuntu как раз относится к ним) для удобства все настройки разнесены по нескольким файлам, которые подключены в hibernate.conf директивой Include.
Теперь можно пробовать залечь в спячку. Для начала рекомендуется сделать это в консоли. Введите init 3 и запустите скрипт.
$ sudo /usr/ sbin/hibernate Good night! Good morning!
Если все прошло удачно, попробуйте запустить его изпод Х. Если и это получилось, можете себя поздравить.
[править] Немного автоматизируем процесс
На этом статью о гибернации в Linux можно бы и закончить, но еще пару слов хочется добавить для удобства использования. Естественно, каждый раз запускать скрипт не всегда удобно, иногда бывает проще закрыть крышку ноутбука, а вновь включив питание, обнаружить все на своих местах. Для этого необходимо использовать демон acpid, который является пользовательским интерфейсом, позволяющим управлять любыми событиями ACPI, доступными через /proc/acpi/event. При этом acpid читает набор конфигурационных файлов в каталоге /etc/acpi/events/.
Скорее всего, необходимый пакет уже есть в вашем дистрибутиве, и надо просто проверить его наличие и создать конфигурационные файлы. Если же пакета нет, скачайте последнюю версию с сайта http://phobos.fs.tum.de/acpi/, скомпилируйте и установите. В каталоге /etc/acpi/events создайте два файла: lid и power. Первый описывает реакцию на закрытие крышки, второй – на нажатие кнопки включения питания.
В /etc/acpi/events/lid впишите
event=button/lid.* action=/usr/sbin/hibernate
Аналогично поступите и с /etc/acpi/events/power
event=button/power.* action=/sbin/shutdown -h now
Затем перезапустите acpid.
$ sudo /etc/init.d/acpid restart
Теперь при закрытии крышки ноутбука система будет впадать в спячку с выключенным питанием, а при нажатии на кнопку питания выключаться. Просто, а главное – удобно.
Несмотря на то, что рассказано много, настроить спящий режим в Linux очень даже просто, а попробовав один раз на практике, очень трудно отказаться от его использования. К хорошему быстро привыкаешь. LXF