CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
11.12.2017

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки :: Блогометки :: Системы

S2ram — способ заставить suspend-to-RAM работать «из коробки»

http://susenotes.ru/

Оригинал: Suspend to RAM by Stefan Seyfried

Цель S2ram состоит в том, чтобы добиться работы suspend-to-RAM «из коробки» на как можно большем количестве машин.

Важно

Пакет называется suspend или uswsusp и устанавливается по-умолчанию во многих дисрибутивах.

Если ваша версия S2ram не содержит всех опций, которые описываются в этой статье, попробуйте получить более свежую версию, например здесь.

Опции -m и -v были добавлены довольно недавно.

А на заднем плане…

suspend-to-RAM уже работает на многих машинах. Это означает, что компьютер «просыпается» и продолжает работу, клавиатура работает, есть доступ к жесткому диску, но зачастую не работает видео и лампа подсветки монитора. Есть некоторые параметры для этого:

  • передача ядру параметра acpi_sleep=s3_ bios
  • передача ядру параметра acpi_sleep=s3_mode
  • передача ядру обоих вышеупомянутых параметра (acpi_sleep=s3_bios и s3_mode)
  • регистрация видеокарты из пространства пользователя после побуждения, используя vbetool
  • получение номера видеорежима до засыпания и установка такого же режима после пробуждения, используя vbetool
  • сохранение статуса VBE перед засыпанием и восстановление его после пробуждения, используя vbetool
  • сохранение пространства PCI config карты VGA перед засыпанием и восстановление его после пробуждения

Начиная с ядра 2.6.16, параметр acpi_sleep может быть установлен во время работы машины (в перезагрузке нет необходимости) в /proc/sys/kernel/acpi_video_flags. Варианты: «1» для s3_bios, «2» для s3_mode, «3» для обеих сразу. Больше информации об этом „хаке“ можно найти в исходниках ядра (обычно устанавливаются в /usr/src/linux) в файле Documentation/power/video.txt.

Есть некоторые машины, которые не просыпаются, используя консольный framebuffer. Недавние модели Dell и HP, например, очень часто попадают в их число. Вы можете выключить framebuffer, установив в файле конфигурации загрузчика — «vga=0». Конфигурация grub обычно находится в /boot/grub/menu.lst.

Если ни один из способов, описанных здесь, не работает должным образом, обязательно проверьте, действительно ли машина не просыпается или только видео не работает так, как надо. Хороший способ проверить это состоит в том, чтобы запустить систему в минимальной конфигурации (init=/bin/bash), запустить s2ram -f, и после пробуждения, когда дисплей еще выключен, проверить, работает ли все еще клавиша «Caps Lock» (вы должны увидеть включение индикатора Caps Lock на клавиатуре). Если так и есть, то скорее всего проблема действительно в инициализации видео. Если же нет, то это вероятно проблема BIOS или ошибка в ядре Linux.

Почему S2ram?

  • использовать vbetool для сохранения состояния VBE нелегко: вы должны сохранить дамп состояния карты во временный файл до засыпания и восстановить его оттуда после пробуждения. Конечно, это можно записать в скрипт оболочки, но иметь его в одном бинарном файле гораздо проще.
  • вам необходимо знать, какой режим нужен машине и нужен ли вообще. S2ram содержит базу данных известных рабочих машин и режимов, которые этим машинам необходимы. Поэтому, если ваша машина поддерживается, она засыпает так же легко, как вы пишете «s2ram».

Ок, достаточно! Давайте начнем!

Где я могу получить это?

s2ram — часть проекта suspend http://sourceforge.net/projects/suspend на sourceforge, и пакет для Suse 10.1 также доступен.

Как это использовать?

Установите пакет и потом наберите в консоли s2ram. Если ваша машина есть в whitelist, должен сработать suspend-to-RAM. Будьте осторожны, некоторые поврежденные драйвера необходимо выгрузить до засыпания и загрузить после пробуждения. Если вы просто хотите узнать, известна ли ваша машина и какие режимы она поддерживает (если поддерживает), наберите команду s2ram -n.

S2ram также входит в последнюю сборку powersaved: если пакет suspend установлен, powersaved до своего старта проверит (используя s2ram -n) машину на возможность работы suspend-to-RAM, и в зависимости от результатов проверки включит или выключит «suspend button».

Моей машины нет в whitelist? Что мне делать?

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

Режимы работы могут быть включены из командной строки s2ram:

     >seife@susi:~>  s2ram -h
    Usage: s2ram [-nhi] [-fspmrav]

Options: -h, -help: this text. -n, -test: test if the machine is in the database. returns 0 if known and supported -i, -identify: prints a string that identifies the machine. -f, -force: force suspending, even on unknown machines.

the following options are only available with -force: -s, -vbe_save: save VBE state before suspending and restore after resume. -p, -vbe_post: VBE POST the graphics card after resume -m, -vbe_mode: get VBE mode before suspend and set it after resume -r, -radeontool: turn off the backlight on radeons before suspending. -a, -acpi_sleep: set the acpi_sleep parameter before suspend 1=s3_bios, 2=s3_mode, 3=both -v, -pci_save: save the PCI config space for the VGA card.

Опции, в большинстве случаев, понятны сами по себе. Отметьте, что вы должны использовать опцию -f на всех неизвестных машинах, затем добавить надлежащие режимы работы. Опция -n нуждается в дополнительном числовом аргументе — от 1 до 3 — определяя, таким образом, режимы s3_bios, s3_mode или и то, и другое.

Лучший способ начать изучение неизвестной машины состоит в том, чтобы загрузить ее, набрав init=/bin/bash в приглашении загрузчика, в минимальном окружении, а затем сделать следующее:

    #mount /proc

#mount /sys

#s2ram -f

Если первая попытка увенчалась успехом, значит все отлично. Отправьте нам вывод команды s2ram -i (смотрите «Как связаться с разработчиками s2ram?» далее в этой статье). Если же это не удалось, попробуйте следующие варианты:

  • s2ram -f -a 1
  • s2ram -f -a 2
  • s2ram -f -a 3
  • s2ram -f -p -m
  • s2ram -f -p -s
  • s2ram -f -m
  • s2ram -f -s
  • s2ram -f -p
  • s2ram -f -a 1 -m
  • s2ram -f -a 1 -s

Если ни одна из этих комбинаций не сработала, попробуйте добавить ключ «-v».

Замечание: смешивание опций «-a» с опциями vbetool («-p», «-m», «-s») — это крайняя мера, обычно она не имеет большого смысла.

Мы надеемся, что один из вариантов вернул вашу машину к жизни (и подсветка включилась). Если вы нашли комбинацию, которая работает, отправьте нам эту информацию вместе с выводом s2ram -i. Если вы нашли несколько комбинаций, которые работают, например, "s2ram -f -a 3″ и «s2ram -f -p -m», предпочтительней использовать метод в ядре «-a», чем в пространстве пользователя («-p», «-m», «-s»).

Если вы нашли комбинацию, которая работает, пожалуйста, проверьте работает ли это в обоих перечисленных ниже случаях, прежде чем сообщать об успехе разработчикам:

  • когда запускается s2ram в консольном режиме
  • когда запускается s2ram непосредственно в Иксах

Нормально, когда содержимое текстовой консоли исчезает после использования «-p» и «-m», при использовании фреймбуфера это можно легко решить переходом на другую консоль. Хотя мог бы быть лучший результат при использовании опции «-s», все же предпочтительней использовать «-m» в первую очередь, если это работает.

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

Все прекрасно работает, но подсветка моей машины работает в течение засыпания

Если на вашей машине установлена графическая карта Radeon, попробуйте добавить ключ «-r» к вашей комбинации. Известно, что это помогает ThinkPad 30-й серии (T30, X31, R32…). Если карта Radeon у вас отсутствует, то данный ключ не имеет смысла использовать.

Моя машина в whitelist, но не работает. Что можно сделать?

В whitelist есть несколько обобщенных разделов, и возможно, что какой-то из них может соответствовать машинам, которые отличаются от проверенных. Сделайте то же самое, что описано в разделе «Моей машины нет в whitelist? Что мне делать?», узнайте, какие варианты подходят вашей машине и отправьте нам информацию об этом вместе с выводом s2ram -i. Таким образом, мы, соответственно, сможем обновить whitelist.

Как связаться с разработчиками s2ram?

Отправьте письмо в список рассылки suspend-devel на suspend-devel@list.sourceforge.net. Если все это не работает по каким-то причинам, вы можете отправить письмо непосредственно мне, seife @ suse.de. Но список рассылки обычно отличается более быстрой скоростью ответа и большим количеством хорошо осведомленных людей.

Как проверить, ничего не устанавливая

Sitsofe Wheeler выяснил, что много машин можно проверить, не устанавливая ничего, просто используя OpenSUSE 10.2 Live DVD.

Свежие пакеты для различных дистрибутивов

SUSE/OpenSUSE

Свежие пакеты могут быть найдены в проекте Stefan Seyfried’s Buildservice на http://software.opensuse.org/download/home:/seife или непосредственно на OpenSUSE Factory. Пакет называется «suspend». Для последних пакетов вам возможно придется установить пакет libx86, который находится в том же самом месте.

Debian

Tim Dijkstra поддерживает пакет в Дебиан (называется uswsusp). Он находится на http://packages.debian.org/unstable/admin/uswsusp.

Другие

Если вы знаете об обновленных пакетах для других дистрибутивов, пожалуйста, обновите эту статью или сообщите мне в список рассылки suspend-devel, чтобы я мог обновить это.

Интеграция в другие проекты

openSUSE 10.2 / pm-utils

openSUSE 10.2 будет использовать окружение pm-utils, поэтому варианты конфигураций, описанные здесь, могут использоваться в опциях s2ram.

Powersave

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

SUSE 10.1

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

Полезные штуки

Это только tips & tricks, которые я узнал, пытаясь заставить машины засыпать. Используйте их с осторожностью.

Intel Graphics Chipsets

Машины с Intel Graphics Chipsets часто работают с «s2ram -f -a 3», используя фреймбуфер vesafb. Если «s2ram -f -a 3» не работает, часто работает хорошо «s2ram -f -p -m».

Более новые драйвера Intel похоже имеют проблемы с «-s» (VBE_SAVE), таким образом, если это вообще возможно, надо использовать «-m» (VBE_MODE). Смотрите здесь. Вообще говоря, VBE_MODE предпочтительней, чем VBE_SAVE.

ATI Graphics Chipsets

В последнее время множество машин с ATI Graphics Chipsets, с которыми я столкнулся, вообще не работают с каким-либо фреймбуфером (часто они висели в BIOS, даже Caps Lock не работал). Часто они прекрасно работали с «vga=0» и «s2ram -f -p -m» или «s2ram -f -p -s».

При проблемах с пробуждением s2ram у драйвера fglrx-driver-8.32.xx, обновите его до 8.34.хх.

NVidia Graphics Chipsets

После нескольких специфичных действий машина с картой NVidia заработала с «s2ram -f». Смотрите подробную инструкцию здесь: NVidia Suspend Howto.

Проблемы APIC

В последнее время я видел много машин, которые нуждались в выключении APIC в командной строке ядра с «noapic», иначе они не просыпаются или начинаются вести себя странно после пробуждения (timer interrupts no longer working etc.) В этом нет необходимости с недавними ядрами, openSUSE 10.2 в этом уже не нуждается.

Машина сразу отключается после пробуждения

s2ram — первичный «низкоуровневый» системный инструмент. Чтобы использовать это в «реальном производстве», вы должны включить это в вашу установку управления питанием, например, в ваш скрипт acpid (они могут вызвать suspend нажатием на кнопку, например). Если у вас дистрибутив, использующий powersave, пожалуйста, прочитайте Powersave_s2ram.

Это должно быть исправлено, по крайней мере с ядра 2.6.20, таким образом в режимах работы больше не будет необходимости.

Не бросайте!

Иногда, чтобы добиться работы suspend to RAM, приходится приложить много усилий. Если вы хотите почитать примеры того, что пришлось пройти людям, посмотрите здесь: the following report from Bugzilla. Winfried — мой герой! :) Также весьма важно знать, виснет ли машина после пробуждения целиком или только дисплей не работает. Смотрите статью «Отладка ACPI спящего режима», чтобы узнать, как это сделать.





Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds