The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Мгновенная загрузка Linux через режимы Suspend to disk или Hibernate (acpi apm suspend sleep linux kernel)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: acpi, apm, suspend, sleep, linux, kernel,  (найти похожие документы)
Date: Wed, 8 Jan 2004 10:18:08 +0000 (UTC) From: Maxim Chirkov <mc@opennet.ru> Newsgroups: opennet Subject: Мгновенная загрузка Linux через режимы Suspend to disk или Hibernate Режим засыпания "Suspend to disk" позволяет мгновенно выключить компьютер и так же мгновенно продолжить работать после включения, с полным сохранением текущего состояния системы. Т.е. производится сброс полного дампа виртуальной памяти и информации о состоянии системы на диск, при включении состояние полностью восстанавливается. Что требуется: -------------- - Последнее Linux ядро 2.4.x в исходных текстах. - ACPI патч (acpi-дата-2.4.x.diff.bz2) с сайта http://acpi.sourceforge.net - Software Suspend (swsusp) патчи (два патча software-suspend-*-core.bz2 и software-suspend-*-linux-2.4.x.bz2) и скрипт suspend.sh с http://swsusp.sf.net - acpid из дистрибутивного пакета или можно скачать c http://phobos.fs.tum.de/acpi/ (swsusp входит в состав ядра 2.6.x, для 2.6.x доступно альтернативное решение - pmdisk (СONFIG_PM_DISK) http://lwn.net/Articles/48471/) Сборка ядра: ------------ 1. Разархивируем и патчим ядро (далее на примере linux-2.4.24). Копируем патчи в linux-2.4.24 и патчим: # bzcat acpi-20031203-2.4.24.diff.bz2| patch -p1 # bzcat software-suspend-2.0-linux-2.4.23.bz2| patch -p1 # bzcat software-suspend-2.0-core-rc3A.bz2| patch -p1 2. Включаем в конфигурации ядра SWSUSP В make menuconfig: General setup ---> Software Suspend support ---> Image Storage (you need at least one writer) ---> [*] Swap Writer Page Transformers ---> [*] Compress image или CONFIG_SOFTWARE_SUSPEND_SWAPWRITER=y CONFIG_SOFTWARE_SUSPEND2=y CONFIG_SOFTWARE_SUSPEND_COMPRESSION=y 3. Пересобираем и устанавливаем новое ядро # make dep && make bzImage && make modules && make modules_install && make install Если ядро ставится вместо родного ядра, поставляемого с Linux дистрибутивом, рекомендую ознакомиться со списком дополнительных патчей используемых создателями дистрибутива. Иногда патчи влияют на работу достаточно серьезных вещей и вам придется удостовериться, что отсутствие этих дополнительных патчей не отразится на вашей системе и принять решение, использовать патч swsusp или пачти из комплекта дистрибутива (swsusp требует "чистого" ядра, за редкими исключениями, описанными в документации к swsusp). 4. Активируем SWSUSP В /etc/lilo.conf добавляем, в блоке описания загрузки текущего ядра: append=" resume2=swap:/dev/hda6" где, /dev/hda6 - swap раздел, размером не меньше чем на 30% превышающим объем ОЗУ. Можно настроить дамп в свапфайл, как это сделать описано в документе /usr/src/linux/Documentation/swsusp.txt, который рекомендуется внимательно прочитать в любом случае. В итоге запись в lilo.conf у меня выглядит примерно так: image=/boot/vmlinuz label=linux root=/dev/hda5 vga=normal append=" resume2=swap:/dev/hda6 ide0=autotune rootflags=data=writeback" read-only initrd=/boot/initrd.img-2.4.24 (не забудьте выполнить команду lilo после внесения изменений в lilo.conf) 5. Перезагружаемся: shutdown -r now Проверка. --------- После перезагрузки смотрим содержимое /proc/acpi/info Если в строке "states:" присутствует S4 (swsusp), то все в порядке, иначе смотрим причину неработы swsusp в /var/log/messages Пробуем заснуть: echo 4 >/proc/acpi/sleep Для информации, S? режимы бывают следующие: - S1 (Stopgrant, Standby) - Временное засыпание, без выключения. На CPU подается питание, но инструкции не выполняются. - S2 - не используется. - S3 (Suspend to RAM) - отключение питания CPU, дамп регистров хранится в ОЗУ - S4 (Suspend to Disk, Hibernate) - полное выключение, дамп памяти и регистров CPU сбрасывается на диск. - S5 - программное выключение питания. Подробнее об ACPI можно почитать http://www.columbia.edu/~ariel/acpi/acpi_howto.txt Настройка acpid и suspend.sh. ----------------------------- Использование /proc/acpi/sleep слишком грубый метод, при засыпании необходимо выгрузить некоторые модули ядра (usb, pcmcia), перезапустить звуковую подсистему, поднять сетевой интерфейс и т.д. Для выполнения этих операций служит скрипт suspend.sh. - Устанавливаем suspend.sh: # ./suspend.sh --install - Редактируем /etc/suspend.conf в соответствии с конфигурацией системы. - Пробуем уснуть: # /usr/local/sbin/hibernat Для пользователей ноутбуков полезно привязать засыпание к факту закрытия крышки. Для этого нужно настроить acpid. - Устанавливаем acpid из пакета или исходных текстов. - В директории /etc/acpi/events создаем два файла lid и power: содержимое /etc/acpi/events/lid (реакция на закрытие панели): event=button/lid.* action=/usr/local/sbin/hibernate содержимое /etc/acpi/events/power (реакция на кнопку питания): event=button/power.* action=/sbin/shutdown -h now - Запускаем apchid service acpid start Теперь при нажатии на кнопку питания будет производиться правильный shutdown, а при закрытии крышки система будет полностью засыпать.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Der (?), 03:13, 08/01/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Статья то что надо. Кратко и ясно. Если бы все так писали. Большое спасибо.
     
  • 1.2, LionSoftware (?), 08:38, 08/01/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Отличная статья! Теперь не хожу пить кофе пока поднимутся все 3 моих рабочих станции. Пока, правда, не победил падение в кору VMWare, но это мелочи.
     
  • 1.3, tigrisha (?), 12:43, 08/01/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Статья очень дельная. Все ясно и по делу.
     
  • 1.4, Gor (?), 21:27, 08/01/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А не подскажет ли кто-нить средствА, чтобы проверить, какие функции acpi держит машинка?
    А то весьма древняя она...
    Или если держит, то держит, и вариантов нет? Каюсь, совсем не силен в вопросе...
     
  • 1.5, phpcoder (?), 08:28, 20/01/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что-то не могу найти скрипт suspend.sh :(( И я так понял, что acpi-патч и acpid (1 и 3 пункт) - одно и тоже. Это так?
     
     
  • 2.6, Maxim Chirkov (?), 11:16, 20/01/2004 [^] [^^] [^^^] [ответить]  
  • +/
    >Что-то не могу найти скрипт suspend.sh

    http://sourceforge.net/project/showfiles.php?group_id=25964
    Ссылка на suspend-script ниже swsusp патча

    >:(( И я так понял, что
    >acpi-патч и acpid (1 и 3 пункт) - одно и тоже.

    Это разные вещи, acpi-патч сегодня более-менее условен, без него можно обойтись, так как основной ACPI код включен в последние 2.4 ядра. acpid - демон реагирующий на ACPI события, загрузить можно с http://acpid.sourceforge.net/, но лучше поставить из пакета дистрибутива.

     
     
  • 3.7, phpcoder (?), 16:28, 21/01/2004 [^] [^^] [^^^] [ответить]  
  • +/
    >как основной ACPI код включен в последние 2.4 ядра. acpid -
    >демон реагирующий на ACPI события, загрузить можно с http://acpid.sourceforge.net/, но лучше
    >поставить из пакета дистрибутива.

    Я так понял, что этот демон тоже в ядро встроен? Во всяком случае есть там патч для ядра - http://acpid.sourceforge.net/acpi_poll_read_semantics.diff - это то??

     
     
  • 4.8, Maxim Chirkov (?), 16:51, 21/01/2004 [^] [^^] [^^^] [ответить]  
  • +/
    >Я так понял, что этот демон тоже в ядро встроен?

    Он не может быть встроен в ядро, это клиентское прилодение использующее ACPI интерфейс ядра, все его функции сводятся к ожиданию ACPI события и выполенению действия определенного как реакция на это событие, отталкиваясь от файла конфигурации.

     

  • 1.9, Mikhail Kostousov (?), 23:59, 08/04/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Статья хорошая, только не понятно, как с проблемами бороться. У меня Dell Inspirion 8500, все сделал, как написано (надо отметить, что не первый раз), но в /proc/acpi/info упорно пишет S4(bios) и не желает уходить в suspend to disk режим... Может кто подскажет, в чем дело?
     
     
  • 2.10, 111 (??), 17:00, 24/07/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Видимо, надо было просто поставить новый acpi. S4 есть через биос без всяких swsusp
     

  • 1.11, DenJS (?), 18:40, 26/07/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто-нибудь реализовал возврат иксов из суспенда? У меня видео в принципе не возвращается... пользую Nvidia
     
     
  • 2.12, Amper (??), 13:05, 02/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    > Кто-нибудь реализовал возврат иксов из суспенда? У меня видео в принципе не
    > возвращается... пользую Nvidia

    Попробуй перед суспендом в консоль переключиться

     
  • 2.13, vgulch (??), 10:51, 12/04/2008 [^] [^^] [^^^] [ответить]  
  • +/
    сюда смотрел?
    /etc/acpi/events/video.conf
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру