Suspend2
Материал из RuVDRWiki
Содержание |
Введение
Software suspend2 - патч к ядру позволяющий сохранять состояние системы между аппаратными выключениями. При этом всё содержимое оперативной памяти и регистры процессора сохраняются на жесткий диск и аппаратно машина выключается. Тем самым сокращается время загрузки компьютера.
Обзор режимов
В настоящее время существует несколько способов перевесьти ваш компьютер в режим ожидания. Suspend2 поддерживает S3, S4 и S5
| Режим | Описание |
|---|---|
| S0 | Система полностью дееспособна. Все системы сразу готовы к применению. |
| S1 | (Stopgrant, Standby) - Временное засыпание, без выключения. На CPU подается питание, но инструкции не выполняются. |
| S2 | Rасширенный способ сна. Следующие компоненты выключены. |
| S3 | (Suspend to RAM) - отключение питания CPU, дамп регистров хранится в ОЗУ |
| S4 | (Suspend to Disk, Hibernate) - полное выключение, дамп памяти и регистров CPU сбрасывается на диск. |
| S5 | Программное выключение питания. |
Suspend to RAM
Функция Suspend to RAM предназначена для экономии электроэнергии и переводит
компьютер в в состояние, когда выключены все устройства, за исключением системной памяти.
При этом компьютер потребляет менее 5 Вт.
Для работы этой фунции необходимо чтобы:
1) BIOS материнской платы поддерживал Suspend to RAM
2) блок питания обеспечивал ток +5VSB не менее 720 мА
3) платы расширения и их драйверы поддерживали Suspend to RAM
Hibernate (Suspend to Disk)
Режим засыпания Suspend to disk позволяет мгновенно выключить компьютер и так же мгновенно продолжить работать после включения, с полным сохранением текущего состояния системы. Т.е. производится сброс полного дампа виртуальной памяти и информации о состоянии системы на диск, при включении состояние полностью восстанавливается.
Сборка ядра
Для сборки ядра необходимо создать DEVELOP-окружение.
В дистре ArVDR это делается следущим образом ==> Создание среды разработчика на ArVDR
Чтобы установить на вашей системе suspend2, необходимо наложить патчь на ядро. Для этого вам нужны сырцы ядра которыe вы можете найти здесь и подходящий к нему патчь suspend2.
Первым делом скачиваем ядро, распаковываем и накладывам патчь:
cd /usr/src tar -xvzf /место/где лежит/linux-X.X.XX.tar.gz ln -s linux-X.X.XX linux cd linux bzcat /место/где лежит/patch | patch -p1
Настройка ядра
Чтобы ядро правильно собралось, очень важно правильно выставить параметры для supend2 в конфигурационном файле. Они должны выглядеть примерно так:
CONFIG_SOFTWARE_SUSPEND=y CONFIG_SUSPEND2_CORE=y CONFIG_SUSPEND2_FILE=y CONFIG_SUSPEND2_SWAP=y CONFIG_SUSPEND2_CRYPTO=y CONFIG_SUSPEND2_DEFAULT_RESUME2="" CONFIG_SUSPEND2_KEEP_IMAGE=y CONFIG_SUSPEND2_REPLACE_SWSUSP=y CONFIG_SUSPEND2_CHECKSUM=y CONFIG_SUSPEND_SHARED=y CONFIG_SUSPEND2=y CONFIG_APM_IGNORE_USER_SUSPEND=y CONFIG_CRYPTO_LZF=y
Теперь пересобираем и устанавливаем новое ядро.
Настройка GRUB/LILO
Swap Writer
В конфигурационном файле загрузчика к параметрам, передаваемым ядру, добавляем строку resume2=swap:/dev/hda2, где /dev/hda2 — swap-раздел, используемый при гибернации.
File Writer
Если в системе отсутствует своп-раздел, тогда создайте своп-файл для suspend2 .
Делается это следущим образом:
dd if=/dev/zero of=/место/куда лoжить/swapfile bs=1M count=<размер в MB> mkswap /место/где лежит/swapfile swapon /место/где лежит/swapfile
Теперь нужно найти файл headerlocations в /sys/power/suspend2/../ и найти строку с примерно следущим содержанием:
resume2=swap:/dev/hda1:0x2da2b4
и прописать эту строку в конфигурационном файле загрузчика к параметрам, передаваемым ядру.
Скрипт HIBERNATE или aккуратное засыпание
Аккуратное засыпание заключается в остановке процессов, отключении сетевых интерфейсов, выгрузке модулей и т.д. Всем этим занимается скрипт hibernate.
Установка скрипта hibernate
wget http://www.suspend2.net/downloads/all/hibernate-script-X.XX.tar.gz tar –xzvf hibernate-script-X.XX.tar.gz cd hibernate-script-X.XX ./install.sh Installing hibernate script to /usr/local/sbin/hibernate ... Installing configuration files to /etc/hibernate ... Installing scriptlets to /usr/local/share/hibernate/scriptlets.d ... Installing man pages to /usr/local/man ... Setting permissions on installed files ... Installed. Edit /etc/hibernate/hibernate.conf to taste, and see hibernate -h for help.
Debian
apt-get install hibernate
Ссылки
- Сайт проекта На английском языке.
- Howto для дистра Gentoo На английском языке.
- Обсуждение проекта на AllrussianНа русском языке.
