Difference between revisions of "Pm-utils (Русский)"

From ArchWiki
Jump to: navigation, search
m (Formatting)
m (codeline -> ic)
Line 84: Line 84:
 
* Бывает, что после пробуждения не включается bluetooth.
 
* Бывает, что после пробуждения не включается bluetooth.
 
'''Bluetooth'''<br/>
 
'''Bluetooth'''<br/>
Кроме аппаратного отключения данных беспроводных модулей с помощью кнопки на панели ноутбука, существует также программное отключение. Мониторинг состояния и программный контроль работы беспроводных устройств осуществляется с помощью {{Codeline|rfkill}}. Таким образом, для корректного входа и выхода из спящего режима в данном случае необходимо программно выключать и включать устройства. Сделаем это для Bluetooth: создадим специальный скрипт.
+
Кроме аппаратного отключения данных беспроводных модулей с помощью кнопки на панели ноутбука, существует также программное отключение. Мониторинг состояния и программный контроль работы беспроводных устройств осуществляется с помощью {{Ic|rfkill}}. Таким образом, для корректного входа и выхода из спящего режима в данном случае необходимо программно выключать и включать устройства. Сделаем это для Bluetooth: создадим специальный скрипт.
Устанавливаем {{Codeline|rfkill}}, если он еще не установлен.
+
Устанавливаем {{Ic|rfkill}}, если он еще не установлен.
 
{{Cli|# pacman -S rfkill}}
 
{{Cli|# pacman -S rfkill}}
 
Создадим пустой файл с именем {{Filename|10_wireless}}.
 
Создадим пустой файл с именем {{Filename|10_wireless}}.
Line 110: Line 110:
 
  exit
 
  exit
  
Как вы могли заметить, скрипт в процессе работы вызывает выполнение команды {{Codeline|rfkill (un)block bluetooth}}, то есть выключает/включает bluetooth. За подробностями обратитесь к {{Codeline|man rfkill}}.
+
Как вы могли заметить, скрипт в процессе работы вызывает выполнение команды {{Ic|rfkill (un)block bluetooth}}, то есть выключает/включает bluetooth. За подробностями обратитесь к {{Ic|man rfkill}}.
  
 
'''Wifi'''<br/>
 
'''Wifi'''<br/>
Line 128: Line 128:
 
  cfg80211              160740  2 b43,mac80211
 
  cfg80211              160740  2 b43,mac80211
  
Далее нам нужно добавить проблемные модули в секцию {{Codeline|SUSPEND_MODULES}}.
+
Далее нам нужно добавить проблемные модули в секцию {{Ic|SUSPEND_MODULES}}.
 
{{Cli|# nano /etc/pm/config.d/config}}
 
{{Cli|# nano /etc/pm/config.d/config}}
  

Revision as of 17:57, 11 December 2011

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Pm-utils — инфраструктура спящего режима нового поколения

pm-utils будет новой структурой спящего режима. Обычно используется HAL для выполнения различных хаков в обход багов в драйверах и подсистемах, которые еще не знают про спящий режим.

Хотя pm-utils — структура, которая будет общей среди всех Linux-дситрибутивов в будущем, есть еще некоторые Suse-специфичные особенности и патчи, которые пока неизвестны. Я укажу варианты конфигураций, которые до сих пор относятся только к Suse.

Основные функциональные возможности

Концепция очень проста: основной скрипт (pm-action, вызываемый через символическую ссылку как pm-suspend или pm-hibernate) выполняет так называемые “hooks”, скрипты, расположенные в /etc/pm/hooks в алфавитном порядке, с параметрами suspend (suspend to RAM) или hibernate (suspend to disk). Как только все “hooks” сделаны, компьютер отправляется в “сон”. После того, как машина снова пробудилась, все “крюки” выполняются в обратном порядке с параметром resume (resume from RAM) или thaw (resume from disk). “Крюки” делают различные вещи, например, готовят bootloader, останавливают подсистему bluetooth или выгружают критические модули.

Обычно pm-suspend и pm-hibernate вызываются HAL’ом, который в свою очередь вызывается апплетами Рабочего Стола, такими как gnome-power-manager или kpowersave (powerdevil).

Установка

Пакет pm-utils доступен в репозитории Extra

# pacman -S pm-utils
Note: Если у вас возникли проблемы с видео при возобновлении работы, возможно, необходимо будет также синхронизировать vbetool из [extra].

Конфигурация

Hibernation (suspend2disk)

Чтобы гибернация заработала, необходимо отредактировать файл /boot/grub/menu.lst от root и добавить resume=/path/to/swap/drive (напрмиер, /dev/sda2) в опции ядра, напрмиер:

# (0) Arch Linux
title  Arch Linux
root   (hd0,0)
kernel /vmlinuz26 root=/dev/sda3 resume=/dev/sda2 ro vga=0
initrd /kernel26.img

Если вы используете UUID для устройств, восопльзуйтесь следующим примером:

# (0) Arch Linux
title  Arch Linux
root   (hd0,0)
kernel /vmlinuz26 cryptdevice=/dev/sda2:main root=/dev/mapper/main-root resume=/dev/disk/by-uuid/1d893194-b151-43cd-a89e-6f89bd8b9f99 ro
initrd /kernel26.img

Дополнительные настройки

Основной файл конфигурации — /usr/lib/pm-utils/defaults. Дополнительные файлы могут быть расположены в /etc/pm/config.d. Необходимо отметить, что файлы конфигурации и скрипты должны быть исполняемыми файлами (иметь установленный бит “x”).

Переменные в /etc/pm/config

   SUSPEND_MODULES=”button uhci_hcd” # список модулей, которые должны быть выгружены до остановки

Поиск неисправностей

Если suspend или hibernate не сработают корректно, вы вероятно сможете найти некоторую информацию в лог-файле /var/log/pm-suspend.log, например, какие hook'и были запущены и каков был их выход.

Создание собственных hook'ов

Если вы хотите сделать нечто специфического во время выполния suspend/hibernate, вы можете легко поместить ваш собственный скрипт в /etc/pm/hooks. Скрипты в этой директории будут вызываться по очереди в алфавитном порядке во время выполнения suspend (в этом причина того, что их название начинается с двух цифр, чтобы сделать порядок выполнения более явным) и в обратном порядке во время выполнения resume.

Для демонстрации приведём довольно бесполезный скрипт, который просто поместит некоторую информацию в ваш лог-файл:

#!/bin/sh
 case $1 in
   hibernate)
   echo “Hey guy, we are going to suspend to disk!”
   ;;
   suspend)
   echo “Oh, this time we’re doing a suspend to RAM. Cool!”
   ;;
   thaw)
   echo “Oh, suspend to disk is over, we are resuming…”
   ;;
   resume)
   echo “Hey, the suspend to RAM seems to be over…”
   ;;
   *) echo “somebody is calling me totally wrong.”
   ;;
esac

Поместите его в /etc/pm/hooks/66dummy, сделайте chmod +x /etc/pm/hooks/66dummy и оно будет помещать некоторые ссобщения в течение работы suspend/resume.

Внимание: Все скрипты запускаются от пользователя root. Это означает, что вы должны быть осторожны, создавая временные файлы, проверьте, чтобы переменные PATH были установлены корректно и т.д., чтобы избежать проблем с безопасностью.

Устранение неисправностей

  • Некоторые ноутбуки могут входить в спящий режим слишком медленно (до пяти минут). Одной из причин может быть некорректная работа встроенного Wi-Fi-модуля. Вы можете убедиться в этом, если отключите его в BIOS и попробуете войти в спящий режим еще раз.
  • Бывает, что после пробуждения не включается bluetooth.

Bluetooth
Кроме аппаратного отключения данных беспроводных модулей с помощью кнопки на панели ноутбука, существует также программное отключение. Мониторинг состояния и программный контроль работы беспроводных устройств осуществляется с помощью rfkill. Таким образом, для корректного входа и выхода из спящего режима в данном случае необходимо программно выключать и включать устройства. Сделаем это для Bluetooth: создадим специальный скрипт. Устанавливаем rfkill, если он еще не установлен. Template:Cli Создадим пустой файл с именем Template:Filename. Template:Cli Присвоим ему соответствующие права: Template:Cli И отредактируем, добавив в него следующий скрипт: Template:Cli

#!/bin/bash

. /usr/lib/pm-utils/functions

case "$1" in
    hibernate|suspend)
    rfkill block bluetooth
    ;;
    thaw|resume)
    rfkill unblock bluetooth
    ;;
    *)
    ;;
esac

exit

Как вы могли заметить, скрипт в процессе работы вызывает выполнение команды rfkill (un)block bluetooth, то есть выключает/включает bluetooth. За подробностями обратитесь к man rfkill.

Wifi
Для того, чтобы ноутбук переходил в спящий/ждущий режим быстро (а не в течение 5 минут), и, что немаловажно, возобновлял работу с сетью, нужно создать конфигурационный файл и добавить в него несколько модулей: Копируем файл конфигурации по умолчанию: Template:Cli Присваиваем право на исполнение: Template:Cli В данном случае используется драйвер b43 и нам необходимо выгрузить его модули. Выясним, какие модули он использует:

$ lsmod | grep b43
b43                   316457  0 
ssb                    48367  1 b43
mmc_core               73353  2 b43,ssb
pcmcia                 36097  2 b43,ssb
mac80211              216021  1 b43
cfg80211              160740  2 b43,mac80211

Далее нам нужно добавить проблемные модули в секцию SUSPEND_MODULES. Template:Cli

Пример секции: Template:File

Различные tips & tricks

Вызов suspend вручную

Если вы хотите вызвать suspend вручную для отладки, без использования HAL или других структур, вызывайте pm-suspend или pm-hibernate от имени пользователя root.

Внимание: Это полезно для отладки. И было бы хорошо, если бы вы знал, что делаете, используя это.

Использования suspend-to-RAM на машинах, не входящих в whitelist s2ram

Если вы хотите вызвать suspend-to-RAM, вам необходимо добавить -f к переменной S2RAM_OPTS в /etc/pm/config. Вы также должны поместить все другие варианты, которые вам необходимы, в эту переменную. Например:

S2RAM_OPTS=”-f -a 3″

Это может быть хорошей идеей, чтобы сообщить о вашей машине, как о прописанной в S2RAM-Page, так чтобы вам не пришлось этого делать в дальнейшем.

Отключение “hook'а”

Если вам не нравится, как работает “крюк”, или он бесполезен, или даже вреден, мы бы оценили bugreport от вас по этому поводу. Вы можете однако просто отключить “крюк”, удалив бит “x” из файла при помощи

chmod -x /etc/pm/hooks/the_hook