Возможно вы искали: 'NeoChess'

May 15 2025 19:18:59
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Настройка software suspend в Linux (suspend linux kernel notebook hardware acpi sleep)

Настройка software suspend в Linux (suspend linux kernel notebook hardware acpi sleep)

Ключевые слова: suspend, linux, kernel, notebook, hardware, acpi, sleep, (найти похожие документы)

From: San АНДРЕЕВ <http://linuxportal.ru>
Date: Mon, 29 Jan 2006 18:21:07 +0000 (UTC)
Subject: Настройка software suspend в Linux

Оригинал: http://linuxportal.ru/entry.php/P2033_0_3_0/

Усыпляем компьютер

1. Аннотация.
Заметка описывает настройку linux (ядра и ОС) для реализации
"заморозки" текущего состояния системы. Описание производится на
примере x86 Slackware Linux 10, ядра 2.6.14 и версии Suspend2
2.2-rc14.

2. Автор - Александр Андреев (aka San АНДРЕЕВ). Я не даю никаких
гарантий (прямых, косвенных, подразумеваемых и т.д.), все
нижеследующее вы соглашаетесь использовать исключительно на свой страх
и риск. Со мной можно связаться через почту форума (требует
регистрации).

3. Ключевые слова для поиска: linux hibernate software suspend acpi acpid slackware


4. Введение.

После появления поддержки железом различных режимов управления
питанием и разработки соотв. программных средств, в т.ч. драйверов
оборудования, поддерживающих управление питанием (как это делать
описано напр. в Linux power management support), стало возможным
производить "заморозку" текущего состояния программной среды с
последующим быстрым его восстановлением. По достоинству это могут
оценить владельцы ноутбуков - не надо закрывать приложения, сохранять
документы, завершать работу специальным образом и т.д., достаточно
просто закрыть крышку и система "застынет" в этом состоянии. Причем
потерь данных при этом не происходит и энергия аккумуляторов не
расходуется (в случае "засыпания" на диск). Для возвращения системы в
исходное состояние достаточно просто включить ноутбук.


5. Исходные данные.

Поскольку на моем буке установлен дистрибутив Slackware Linux 10, то
на нем (дистрибутиве) я и экспериментировал. Не думаю, что в других
дистрибутивах должны быть какие-то принципиальные сложности, не
исключено также, что в каких-то из них этот функционал по умолчанию
включен, если вы об этом знаете - присылайте описание, включим в
заметку.

Для реализации идеи понадобились исходные тексты ядра (я взял 2.6.14),
патч для дозаточки механизма засыпания (я использовал Suspend2
2.2-rc14), скрипт усыпления системы (hibernate-1.12), средство под
названием zenity для запуска диалогов Gnome из командной строки
(опционально, моя версия 2.8.2), для zenity требуются popt,
scrollkeeper, intltool, gtk+-2.0, libglade-2.0, gconf-2.0 и
libgnomecanvas-2.0, но они в дистрибутиве присутствуют и при
необходимости их можно доустановить с диска.

Говоря о дозаточке, я имел в виду то, что в ядра 2.6.х механизм
засыпания уже в основном встроен (заморозка процессов, периферийных и
внутренних устройств и т.д.), патч только предоставляет дополнительные
возможности по управлению этим механизмом.


6. Варианты сна.

Существует несколько вариантов засыпания (с вариациями). Первый и
наименее сонный - это усыпление отдельных устройств (периферийных и
внутренних) для снижения энергопотребления. Состояние системы в целом
нигде не фиксируется, процессы остаются в памяти и работают в пределах
железных ограничений (т.е. с использованием оставшегося не усыпленным
железа).

Второй - с полным остановом системы и сохранением состояния в
оперативной памяти. Энергопотребление здесь ниже, чем в первом случае,
но все же имеется - память (RAM) обесточивать нельзя. С другой
стороны, это самый быстрый способ усыпления, поскольку операции
записи/чтения выполняются на самом быстром устройстве хранения (из
доступных программно).

Третий - с полным остановом системы и сохранением состояния (проще
говоря, дампа оперативной памяти) в файле либо устройстве (разделе)
свопинга. Этот вариант не потребляет энергии, медленнее второго и
требует наличия на диске swap-раздела или файла объемом желательно не
меньше объема ОЗУ ПК. Объем сохраняемой при засыпании информации можно
сократить, применив сжатие, но это скажется на времени засыпания и
восстановления. Бонус - при сохранении в файл можно далее этот файл
использовать как загрузочный образ на большом количестве одинаковых
систем.


7. Патчим ядро.

Сначала свертесь с документацией на ваш дистрибутив - если патч
Suspend2 уже наложен на умолчательное дистрибутивное ядро, либо такой
вариант ядра просто имеется в дистрибутиве, то проще воспользоваться
готовым, пропустить этот и следующие разделы и остановиться на
доустановке hibernate (при необходимости) и конфигурировании демона
acpid.

Каталог с патчем содержит также скрипты apply и unapply, которыми
пользоваться вроде как должно быть удобнее и которые надо обязательно
запускать из каталога исходных кодов ядра. Я поступил для себя проще -
просто переписал сам патч в корень исходников ядра и наложил:

$ patch -p1 < 100-suspend2-2.2-rc14-for-2.6.14.patch


Если у вас есть какие-то вопросы по работе/использованию команды patch
- почитайте документацию на нее (напр. man patch). Патч я накладывал
на "чистое" (т.н. vanilla) ядро, поэтому никаких проблем (reject'ов)
не возникло, все было "succeeded" (достигло цели то есть).


8. Конфигурируем ядро.

После наложения патча запускаем конфигуратор ядра и идем в раздел
"Power management options (ACPI, APM)", в котором должен появиться
пункт Suspend2. Если у вас была включена поддержка SMP (хотя бы для
процессора с гипертредингом), то здесь может возникнуть неприятный
момент - опции Suspend2 не будет. Согласно информации на сайте
проекта, SMP-конфигурации вроде как поддерживаются, поэтому такая
ситуация мне непонятна, однако ее можно обойти, если немного похачить.:)

От корня исходников ядра идем в kernel/power, открываем на
редактирование файл Kconfig и в разделе "config SOFTWARE_SUSPEND"
примерно в 32ой строке ("depends on PM && SWAP ...") надо убрать
воскл. знак перед SMP после второй скобки и в самом конце строки. Эту
процедуру надо повторить и примерно в 106ой строке (раздел "menuconfig
SUSPEND2"). Теперь засыпание будет доступно только для конфигураций с
SMP. Если вы вообще не хотите зависеть от мультипроцессорности, то в
двух вышеуказанных строках упоминание про SMP надо убрать, чтобы они
выглядели примерно следующим образом:

depends on PM && SWAP && X86 || (FVR || PPC32)


для строки 32 и

depends on PM


для строки 106. В любом случае это хак, который может вызвать
нестабильную работу системы.

Итак, опцию мы все-таки нарисовали, теперь ее надо включить и зайти в
ее подменю. Там для начала достаточно выбрать пункт "Swap writer" и
указать раздел со свопом, на который будет сохраняться состояние
системы. Здесь все, не забываем не включать APM (acpi и apm
использовать одновременно не надо), можно еще в "Device Drivers" ->
"USB support" от корня конфигурации выбрать пункт "USB suspend/resume"
для поддержки замораживания USB-устройств.

Конфигурироем оставшееся в ядре если есть необходимость, сохраняем,
пересобираем, ставим, дописываем в меню загрузчика если необходимо и
перезагружаемся с новым ядром.


9. Настройка и проверка.

Если все прошло хорошо, то после загрузки нового ядра в /proc появится
каталог suspend2 и в нем ряд файлов, в частности - do_suspend.
Проверяем наличие на диске ('fdisk -l /dev/hdX | grep swap' от рута) и
активность (напр. при помощи top или 'grep Swap /proc/meminfo')
swap-раздела указанного выше объема (не меньше объема ОЗУ). Для
автоматического задействования имеющегося свопа при загрузке системы
достаточно прописать в /etc/fstab что-нибудь вроде такого:

/dev/hda2 none swap sw 0 0


Теперь можно переключиться в чисто консольный runlevel (telinit 3 в
каком-нибудь терминале от рута) и скомандовать

echo > /proc/suspend2/do_suspend


После этого должны побежать по экрану всякие строки про "freeze" и
похожие на нее, ряды увеличивающихся процентов и питание должно
отключиться. Включаем питание - обратно строки и проценты и в
результате довольно быстро мы должны оказаться в консоли в том виде, в
каком она была на момент выполнения команды заморозки. В случае успеха
- с безбашенной консольной заморозкой все получилось.


10. Аккуратное засыпание.

Аккуратное засыпание заключается в остановке процессов, отключении
сетевых интерфейсов, выгрузке модулей и т.д. Всем этим занимается
скрипт hibernate. Он почему-то написан с использованием zenity и мне
оказалось проще доставить последнее, чем хачить первое. Не исключено
также, что в чисто консольном режиме скрипт работает и без графических
диалогов - я не пробовал. У этого скрипта имеется конфигурационный
файл (в процессе установки кладется в /etc/hibernate вместе с другими
файлами), в котором как раз и указывается что и как делать. Для моих
целей особо переправлять его не пришлось, сам он находится во вложении
к этой заметке. Для установки скрипта достаточно распаковать его архив
и запустить файл install.sh. После правки конфига переходим к
настройке собственно засыпания по разным поводам.


11. Настройка acpid.

Реагированием на все события, связанные с электропитанием, занимается
демон acpid. Поэтому если мы хотим какой-то реакции системы на
закрытие крышки, то надо демону это объяснить. Для начала идем в
/etc/acpi/events и открываем на редактирование файл default, в котором
комментируем все незакоментированное. После перезапускаем демона (для
slackware - '/etc/rc.d/rc.acpid restart') и дальше наблюдаем за
событиями в системе:

# tail -f /var/log/acpid


Нажимаем руками датчик закрытия крышки (или закрываем/открываем
крышку). Должно появиться что-то вроде

[Thu Dec 8 01:12:04 2005] received event "button/lid LID 00000080 00000003"


"button/lid" как раз и является интересующим нас событием, на которое
нам в данном случае надо отреагировать. Обратно редактируем
/etc/acpid/events/default и добавляем (или правим, если есть) в него
след. сроки:

event=button/lid
action=/usr/local/sbin/hibernate


Здесь после event указывается отлавливаемое событие, а после action -
что делать при появлении этого события, в данном случае запускается
скрипт hibernate. Сохраняем, закрываем и снова перезапускаем acpid.
Давим на датчик закрытия крышки - должен выскочить графический
прогресс-бар, после мы должны вывалиться в консоль и дальше все как и
при консольном засыпании. После выключения бука обратно его включаем,
он сам подтягивает ядро, детектит железо, загружает из свопа образ
памяти и запускает систему из замороженного состояния. Все.


12. Край для работы.

Интересной особенностью является сохранение дампа памяти в файл. Я с
этим не экспериментировал, потому как нет надобности и времени, но
если у кого есть успешный опыт - присылайте описание, добавим сюда.
Также любопытно настроить засыпание на разные события, напр. на разряд
батареи - здесь можно почитать документацию на acpid и посмотреть на
его логи.


13. Источники информации.

- man acpid
- www.suspend2.net/HOWTO
- www.opennet.ru/base/sys/hibernate.txt.html
- www.suspend2.net/downloads/
исходный код Suspend2 и hibernate
- directory.fsf.org/zenity.html
исходный код zenity
744 Прочтений •  [Настройка software suspend в Linux (suspend linux kernel notebook hardware acpi sleep)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Настройка software suspend в Linux ... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка