Archive:Pm-utils

(重定向自 )
跳转到:导航搜索
Icon-obsolete.png
本文或章节指的是版本 '11.3',现在已经过时!
请参阅本文的 页面以获取更多信息。
pm-utils 是一个挂起和电源状态设置框架。它通常由 HAL 用于执行各种补丁,以解决驱动程序和子系统中的错误,这些错误尚未意识到挂起状态。


基本功能

pm-utils 可以通过将自定义钩子放入目录来轻松扩展,这可以由系统管理员完成,或者这些钩子可以作为软件包的一部分,特别是如果此软件包需要在系统挂起或电源状态转换期间获得特别关注。

这个概念很简单

  • 主脚本pm-action(通过符号链接作为以下调用pm-suspend, pm-hibernatepm-suspend-hybrid) 执行所谓的“钩子”,可执行脚本,按字母顺序排序,参数为suspend(挂起至 RAM) 或hibernate(休眠到磁盘)。
  • 完成所有钩子后,它将使机器进入睡眠状态。机器再次唤醒后,所有这些钩子将以相反的顺序执行,参数为resume(从 RAM 恢复) 或thaw(从磁盘恢复)。
  • 钩子执行各种操作,例如准备引导加载程序、停止蓝牙子系统或卸载关键模块。

pm-suspend 和 pm-hibernate 通常由 HAL 调用,由桌面小程序(如 gnome-power-manager 或 kpowersave)启动。

还可以将机器设置为高功率和低功率模式,命令pm-powersave与附加参数一起使用truefalse。它的工作原理基本与挂起框架相同。

挂起的钩子放置在

  • /usr/lib/pm-utils/sleep.d(发行版 / 包提供的钩子)
  • /etc/pm/sleep.d(系统管理员添加的钩子)

电源状态的钩子放置在

  • /usr/lib/pm-utils/power.d(发行版 / 包提供的钩子)
  • /etc/pm/power.d(系统管理员添加的钩子)

中的钩子/etc/pm/优先于/usr/lib/pm-utils/中的钩子,因此系统管理员可以覆盖发行版提供的默认设置。


配置

主配置文件是 /usr/lib/pm-utils/defaults。您不应编辑此文件,因为在软件包更新后,它可能会被默认设置覆盖。将您的配置文件放入 /etc/pm/config.d/ 中。您可以将一个简单的文本文件放入

SUSPEND_MODULES="button uhci_hcd"

命名为“modules”或“config”到/etc/pm/config.d,它将覆盖系统范围内的配置文件中的设置。

配置文件中的变量

在挂起前要卸载的模块列表

SUSPEND_MODULES="button" # the list of modules to be unloaded before suspend

SUSE 特定的变量

HIBERNATE_METHOD={userspace,kernel} # selects the suspend to disk method. Defaults to userspace.
S2RAM_OPTS="" # options that are passed to s2ram. See the Suspend to RAM page for more information.

创建您自己的钩子

如果您想在挂起/休眠期间对您的设置做一些特定的事情,那么您可以轻松地将您自己的钩子放入/etc/pm/sleep.d。此目录中的钩子将在挂起期间按字母顺序调用(这就是为什么它们的名称都以 2 位数字开头,以使排序明确),并在恢复期间以相反的顺序调用。

Icon-warning.png
警告:所有钩子都以 root 用户身份运行。这意味着您需要在创建临时文件时小心,检查 PATH 变量是否设置正确等,以避免安全问题

这是一个相当无用的演示钩子,它会将一些信息行放入您的日志文件中

#!/bin/bash
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/sleep.d/66dummy,执行chmod +x /etc/pm/sleep.d/66dummy它将在挂起/恢复期间输出一些无用的行。


各种技巧和窍门 / 常见问题解答

手动触发挂起

如果您想手动触发挂起以进行调试,而无需使用 HAL 和其他框架,请以 root 身份调用 pm-suspendpm-hibernate

Icon-warning.png
警告:这仅对调试有用,如果您知道自己在做什么,最好使用它。

在未在 s2ram 列表中中的机器上使用休眠到 RAM

如果您想强制休眠到 RAM,您需要在 /etc/pm/config.d/ 中的配置文件中将 -f 添加到 S2RAM_OPTS 变量中,请参阅 Configuration。您还需要将机器需要的其他所有选项都放入此变量中。一个例子可能是

S2RAM_OPTS="-f -a 3"

最好将您的机器报告到 s2ram 页面上,这样您就不需要在将来这样做。

禁用钩子

如果运行了您不喜欢或认为无用甚至有害的钩子,我们欢迎您对此进行错误报告。但是,您可以轻松地通过在/etc/pm/sleep.d/中创建与钩子对应的空文件来禁用钩子。假设您想禁用钩子/usr/lib/pm-utils/sleep.d/45pcmcia,您可以轻松地通过调用

touch /etc/pm/sleep.d/45pcmcia

不要为该虚拟钩子设置可执行位。

重启鼠标

在某些笔记本电脑上,鼠标在其他挂起成功后会卡住。一种解决方法是通过i8042中的钩子在/etc/pm/hooks(参见 hooks) 中强制重新初始化 PS/2 驱动程序。

#!/bin/sh  
echo -n "i8042" > /sys/bus/platform/drivers/i8042/unbind
echo -n "i8042" > /sys/bus/platform/drivers/i8042/bind

似乎什么也没发生 / 日志文件在哪里

如果似乎在通过桌面小程序调用时什么也没发生,那么 尝试从终端中的 root shell 手动调用 pm-suspendpm-hibernate。也许您已经得到一些输出,它会指向问题所在。挂起脚本还在 /var/log/pm-suspend.log 上写入一个日志文件。


故障排除

如果挂起或休眠未正确工作,您可能会在日志文件 /var/log/pm-suspend.log 中找到一些信息,例如运行了哪些钩子以及它们的输出是什么。


参见


外部链接