为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

ArchLinux+电源管理

2011-04-25 6页 doc 49KB 31阅读

用户头像

is_188154

暂无简介

举报
ArchLinux+电源管理ArchLinux 电源管理:acpid + cpufreq + pm-utils ArchLinux 电源管理:acpid + cpufreq + pm-utils 六 1st, 2010 发表评论 | Trackback 如果没有安装桌面环境(如 gnome,ked,xfce 等)的话,电源管理就必须自己动手解决。我的环境为 ArchLinux + Awesome 。 一,为什么要电源管理 电源管理的作用主要包括两个方面: 1,节约能源。 2,更好的利用硬件设备 所以,并不是所有电脑都需要电源管理,你可以完全忽略它。但对于...
ArchLinux+电源管理
ArchLinux 电源管理:acpid + cpufreq + pm-utils ArchLinux 电源管理:acpid + cpufreq + pm-utils 六 1st, 2010 发评论 | Trackback 如果没有安装桌面环境(如 gnome,ked,xfce 等)的话,电源管理就必须自己动手解决。我的环境为 ArchLinux + Awesome 。 一,为什么要电源管理 电源管理的作用主要包括两个方面: 1,节约能源。 2,更好的利用硬件设备 所以,并不是所有电脑都需要电源管理,你可以完全忽略它。但对于笔记本来说,它还是必不可少的。 二,所需要的工具 1,acpid acpid 用来捕捉和投递 acpi 事件,并执行相应的动作。 这些 acpi 事件包括: 1), 按下电源按钮。 2), 按下睡眠/休眠按钮。 3), 合上笔记本。 4), 插上/拔出 AC 电源适配器。 安装 acpid: pacman -S acpid 将 acpid 加入 /etc/rc.conf 文件中的 DAEMONS 项: DAEMONS=( ... acpid ... ) 说明,如果你是用了 hal 的话,并且 hal 已经加入了 DAEMONS ,那么便不需要这一步了。因为 hal 为自动 acpid 并启动它。 2,cpufreq cpufreq 用来调节 cpu 的频率。 安装 cpufreq: pacman -S cpufrequtils 加载相应的驱动: 查看所有驱动: ls /lib/modules/*/kernel/arch/*/kernel/cpu/cpufreq 对于 intel 的 cpu,一般来说,需要加载 acpi-cpufreq 这个驱动: modprobe acpi-cpufreq 对于较老的 intel cpu 可能会出现如下错误: FATAL: Error inserting acpi_cpufreq ([...]/acpi-cpufreq.ko): No such device 这种情况下,可以用speedstep-centrino、p4-clockmod 或者 speedstep-ich 来代替 acpi-cpufreq 。 对于 AMD cpu: modprobe powernow-k{6,7,8} # 这三个驱动并不需要全部加载,如果某个加载失败,加载其他的即可。 # 我机器的 cpu 是 AMD Athlon TK-55,我需要加载的驱动是 powernow-k8 最后,将可用的驱动加入到 /etc/rc.conf 文件中的 MODULES 项。 MODULES=( ... powernow-k8 ... ) 使用 cpufreq: 这里只是 cpufreq 的一部分,此部分后面会用到,更完整的 cpufreq 使用方法,请参见其主页。 cpufreq 可以一下面几种模式工作: 1), performance 此模式 cpu 以最大时钟频率运行,默认为此模式。 2), ondemand 根据系统负载动态调节 cpu 时钟频率。 3), conservative 和 ondemand 类似,但是更保守(以比较温和的方式改变时钟频率)。 4), powersave 此模式 cpu 以最小模式运行。 5), userspace 手动调节 cpu 时钟频率。 使用如下命令来设置其工作在哪一种模式: cpufreq-set -g ondemand 3,pm-utils pm-utils 是一个全新的电源挂起和电源状态设置框架。用 pm-utils 来实现睡眠和休眠操作。 安装 pm-utils: # pacman -S pm-utils 配置休眠功能: 如果要启用休眠功能,编辑 /boot/grub/menu.lst 文件,将 resume=/path/to/swap/drive 加入到内核选项中: # (0) Arch Linux title Arch Linux root (hd0,5) kernel /vmlinuz26 root=/dev/sda5 resume=/dev/sda7 ro initrd /kernel26.img 0 这样,进入休眠状态后,计算机会把内存中的所有信息保存到 swap 分区。当然,你的 swap 要有足够的空间。 使用 pm-utils: 待机(睡眠): pm-suspend 休眠: pm-hibernate 这两个命令都需要 root 权限。 4,亮度调节 准确的说,这并不是一个工具,要调节屏幕亮度,除了可以使用 Fn + 相应按键外,可以通过一下方法来实现: 1),查看挡位: cat /proc/acpi/video/.../brightness #在我的机器上是这个路径:/proc/acpi/video/VGA1/LCDD/brightness 输出如下: levels: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 current: 15 levels 表示有多少个挡位,current 为当前挡位。 2),设置亮度: echo -n 8 > /proc/acpi/video/VGA1/LCDD/brightness # 将亮度调暗一半 写入这个文件需要 root 权限,所以,通常情况下,你需要这样: su -c 'echo -n 8 > /proc/acpi/video/VGA1/LCDD/brightness' 三,配置 acpid 1,捕捉事件标签 每一个 acpi 事件,都对应一个标签。例如,我的机器上,按下睡眠按钮所对应的标签为 SLPB 。但是,不同的机器,这个标签是不一样的。要查看自己机器的 acpi 标签,可以在终端中运行(需 root 权限): tail -f /var/log/messages.log #打开 messages.log 文件,并实时读取文件末尾。 此时,执行你需要捕捉的 acpi 事件,观察终端。如,当按下电源键时: Jun 1 16:21:46 HC-ASUS laptop-mode: enabled, not active Jun 1 16:21:48 HC-ASUS logger: ACPI action undefined: AC0 Jun 1 16:21:48 HC-ASUS logger: ACPI group/action undefined: hotkey / ATKD Jun 1 16:21:48 HC-ASUS logger: ACPI group/action undefined: processor / CPU0 Jun 1 16:21:48 HC-ASUS logger: ACPI group/action undefined: processor / CPU1 Jun 1 16:21:48 HC-ASUS laptop-mode: Laptop mode Jun 1 16:21:48 HC-ASUS laptop-mode: enabled, Jun 1 16:21:48 HC-ASUS laptop-mode: not active [unchanged] Jun 1 16:22:52 HC-ASUS logger: ACPI group/action undefined: hotkey / ATKD Jun 1 16:33:14 HC-ASUS logger: PowerButton pressed: PWRF 这里,按下电源按钮所对应的标签就为:PWRF 。查看其他 acpi 事件标签的方法类似。 2,定义事件动作 当 acpid 捕捉到 acpi 事件时,会传入文件 /etc/acpi/events/anything 里定义的脚本来处理。默认情况下,该文件为一下内容: event=.* action=/etc/acpi/handler.sh %e 也就是说,默认情况下,所有的事件都会传入 /etc/acpi/handler.sh 这个脚本来处理。参数 %e 是可选的,它的作用是将整个内核事件日志传给指定的程序。 /etc/acpi/handler.sh 是一个条件结构的脚本,根据不同的事件标签,执行不同的动作。 在电源按钮部分,其内容是: button/power) #echo "PowerButton pressed!">/dev/tty5 case "$2" in PWRF) logger "PowerButton pressed: $2" ;; *) logger "ACPI action undefined: $2" ;; esac ;; 如果希望在按下电源后执行关机操作,那么就加入关机命令 halt ,睡眠则加入 pm-suspend ,休眠 pm-hibernate 。 button/power) #echo "PowerButton pressed!">/dev/tty5 case "$2" in PWRF) logger "PowerButton pressed: $2" halt #pm-suspend #pm-hibernate ;; *) logger "ACPI action undefined: $2" ;; esac ;; 在 handler.sh 中,已经包含了合上笔记本,AC 适配器,电池的事件,可以自行使用 cpufreq,pm-utils,以及改变亮度的方法来自由的配置 handler.sh 。 handler.sh 的具体配置,等到下一次再写吧。
/
本文档为【ArchLinux+电源管理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索