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


Ссылки

  1. Сайт проекта На английском языке.
  2. Howto для дистра Gentoo На английском языке.
  3. Обсуждение проекта на AllrussianНа русском языке.
Личные инструменты