Chinaunix首页 | 论坛 | 博客
  • 博客访问: 544430
  • 博文数量: 84
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 2109
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-25 14:02
文章分类

全部博文(84)

文章存档

2011年(10)

2010年(22)

2009年(16)

2008年(36)

我的朋友

分类: LINUX

2008-11-20 15:43:10

Linux笔记本电源管理指南

Linux 是一种性能优越的开源操作系统,随着其性能和知名度越来越高,最主要的是在价格上无与伦比的优势,许多厂家开始推出Linux笔记本电脑,并且这种趋势大 有愈演愈烈之势。我们知道,笔记本受到电池续航时间的限制,所以特别注重机器的电源管理。因此,本文将讨论如何处理这些事项。

一、概述

    实际上,除了利用主板上的BIOS来管理电源外,大多数Linux系统本身都自带了管理电源的实用工具软件,来处理各种电源事件,如:

    1.电池电量不足--这时机器会发出警告,并显示相应图标,或者将硬件挂起。

    2.闲置--如果在一段时间内机器一直处于非活动状态,那么可以让机器休眠(如关闭硬盘以及停用音频及网络等服务)从而有效延长电池供电时间。

    通过检测你的笔记本使用的是交流电源还是电池,可以让机器进入相应的电源管理模式。在Fedora中,用于管理和检修电源问题的工具有:

    1.高级电源管理(APM)--APM软件组成如下:一个pmd守护进程,用来监视电池的使用情况;多个实用工具软件,用来显示和响应电池事件。它们包含于apmd软件包中。

    2.高级配置和电源接口(ACPI)--acpid事件守护进程一方面监视电源事件,另一方面用来设置响应这些事件的规则,这些规则用来关闭某些硬件或关 掉系统电源等。ACPI是一款设计用来替代APM电源管理的更具通用性的工具软件,但是目前它还需进一步完善。

    3.hdparm命令--hdparm命令可用于打开和关闭电源管理功能。另外,该命令还有许多选项,完成诸如停止硬盘启动器转动或让硬盘进入待机状态等操作。

    需要说明的是,使用ACPI时,是操作系统在负责电源管理,而不是BIOS。尽管ACPI在管理电源问题方面功能更强也更灵活,但是,普通用户用起来却不 是那么方便,如使用ACPI时,你必须亲自告诉它要关注哪些电源事件以及如何响应这些事件。目前,对一般用户而言,APM的功能不但丰富,并且对用户也更 加友好。  

下边我们将针对以上三种常见的电源管理工具分别加以讨论。

二、用APM管理电源

    在Fedora中,可以配置APM,让其检测某些电源事件并做出响应。这时,它运行守护进程/usr/sbin/apmd来侦听事件,然后根据配置文件/etc/sysconfig/apmd 中的有关规定来处理这些事件。要配置运行APM,输入下列命令:

# chkconfig apmd on
# service apmd restart



    注意:apmd和acpid不能同时使用,所以,如果此前系统正在使用acpid的话,应该先停用它,具体命令如下:

# chkconfig acpid off
# service acpid stop



    APM成功启动后,在文件/var/log/messages中应该看到一则消息,指出该服务已启动,并列出当前电池的电量状况。默认时,pmd守护进程 根据文件/etc/sysconfig/apmd 中的设置运行。我们可以列出当前运行的进程来查看运行中的apmd的使用了哪些选项:

# ps ax |  grep apmd
/usr/sbin/apmd -p 10 -w 5 -W -P /etc/sysconfig/apm-scripts/apmscript



    根据以上命令中列出的选项,apmd守护进程将会:

    1.记录电池电量的变化--如果电量变化超过10%或更多,守护进程将向系统日志文件(默认时为/var/log/messages)发出一条消息。这一行为是由选项"-p 10"指定的。

    2.记录电池电量不足--当电池电量低于5%并且仍未充电时,一条警告消息将发送到系统日志文件中。这一行为是由选项"-w 5"指定的。

    3.提醒用户--如果电池电量低于"-w"选项所设定的值,将向所有登录系统的用户发送警报。此行为是由选项"-W"指定的。

    4.利用apmscript响应事件--出现电源事件时,apmd将这些事件转给设定用于响应这些事件的脚本。根据上面的命令,运行的脚本应该是/etc/sysconfig/apm-scripts/apmscript。所用的文件取决于选项"- P"。



    除了上述的电量不足和电量变化设置外,大多数给与响应的电源事件仅在apmscript文件中有所提及。如果想了解您机器的电源管理情况的话,看看该文件 的内容便一目了然了。在FedoraCore中,要想添加你自已的要给与响应的电源事件,你必须建立自己的脚本。默认时的apmscript是文件 /etc/sysconfig/apm-scripts/apmcontinue。该文件处理以下事件:

    1.挂起--当你的笔记本电脑进入挂起或待机状态后,文件apmscript会停止所有音频处理程序,挂其所有硬盘驱动器操作,关闭任何NFS连接,关闭网络连接以及pcmcia卡。

    2.恢复--在复原时,apmscript会还原所有在挂起时停止的事件。

    3.更换电源--当机器电源发生变化时,脚本会做出反应:如果使用交流电源,就让机器运行于高性能状态;如果使用电池,则让机器运行于更加节电的状态。

    4.更换电池--如果电池缺电,该事件将使apm停止所有服务,并进入极限节电模式。

    5.开机--启动机器时,apmscript会首先检查apmcontinue文件,除非你在该文件中设置了启动时要做的事,否则该脚本什么也不干。

    6.停机--与开机时一样,停机时apmscript会首先检查apmcontinue文件,除非你在该文件中设置了启动时要做的事,否则该脚本什么也不干。

    在apmcontinue文件中还可以有其他事件(默认时并不存在),用来响应其它选定的各种事件。此外,你还可以建立/etc/sysconfig /apm-scripts/apmcontinue脚本,然后让它来响应存放在像apmscript这样的文件中的各种事件。

    如果只是随便的查看一下APM服务的话,可以使用不带参数的apm命令,这样能看到电池供电状况或是否使用交流电源之类的报告:

# apm
AC on-line, battery charging: 100%



    你还可以让你的笔记本电脑进入挂起模式(apm-s)或待机模式(apm-S)。当接通交流电源后,笔记本电脑会忽略所有由APM(apm-i)产生的挂起和待机事件。

三、使用ACPI管理电源


    与APM类似,ACPI也运行一个守护进程来侦听电源事件,然后将这些事件传递给某个程序来进行处理。这种情况下,我们可以通过启用acpid服务来运行acpid守护进程:






# chkconfig acpid on
# service acpid restart



    再强调一下,一定要先关闭你不想要的电源管理服务。对此而言,就是要关闭apmd,即:

# chkconfig apmd off
# chkconfig apmd stop



    ACPI只能运行在内核中已经激活了ACPI的Linux系统上,否则,你必须在启动时通过启动选项ACPI=force来手动激活它。另外,你还需要在 BIOS中激活ACPI。如果在/proc/acpi/event文件中有与ACPI事件相关的内容,则说明ACPI已在工作。

    Acpid会监视来自于/proc/acpi/events中的每个事件,然后将这些事件跟/etc/acpi/events目录下的各文件中的各项进行 匹配。默认的情况下,该目录下只有一个文件,即sample.conf,其中存放着ACPI事件和相应的处理,如:

# ACPID 配置举例
event=button/power.*
action=/sbin/shutdown -h now



    在该例中,当收到button/power.*事件后,系统立即执行shutdown命令,因为命令后边带有- h now选项。要配置您自己的处理ACPI事件的动作,可以将您的文件(你必须是超级用户)添加到/etc/acpi/events目录中。要注意的是,该 文件内容的格式必须与该目录下其他文件一致。要了解这些文件的确切格式,可以通过 "man acpid" 命令来进行进一步学习。当你列出的事件出现时, "action="行中的命令就会作为超级用户运行。

    若要寻找事件名称的话,可以使用命令cat/proc/acpi/event。如果要查看acpid的活动,可以查看/var/log/acpid文件的内容。改变几次电源状态,如拔下插头、再插上、按挂起键等等,然后看看哪些事件被记录在日志文件中了。

四、用hdparm修改电源设置



    如果您正在使用笔记本电脑的话,你可以使用hdparm的诸多选项来控制电量的消耗。某些选项会立即生效,如让硬盘驱动器进入睡眠模式;而其他选项会在一段时间后才生效,如在某段时间内硬盘一直处于非活动状态的话,就停转硬盘驱动器。


    要了解机器的IDE电源模式状态,可以键入下列命令:


# hdparm -C /dev/hda
/dev/hda:
drive state is: active/idle



    这表示电源模式设为正常运行。如果驱动器不支持该项功能,那么驱动器状态显示为"unknown"。为了节电,最常用的做法是为spindown模式 (-S)设一个比较低的值。甚而有人认为spindown的最低值(五秒钟的空闲时间)既能全面改善电池续航时间,又不至于严重影响性能。我们可以用 hdparm命令加"-S"选项来规定硬盘进入spindown模式的闲置时间,如果"-S"后跟随的数字介于0到240之间,那么该值乘以5就是实际的 进入spindown模式的闲置时间(以秒为单位)。因此,下例中的值3的含义是让磁盘驱动器在闲置15秒后入待机模式(硬盘会停转):

# hdparm -S3 /dev/hda
/dev/hda:
sotting standby to 3 (15 seconds)



    注意:当-S的取值范围介于241到251之间时,那么该值减去240后乘以30就是实际的进入spindown模式的闲置时间(以分钟为单位)。所 以,241把停转的闲置时间设为30分钟,而251将其设为5.5小时。这一点使用时容易混淆,请读者一定注意。你可以通过-y选项让硬盘自动进入待机模 式,如下所示:

# hdparm -y /dev/hda
/dev/hda:
issuing standby command



    同时,你也能够通过-Y选项进入睡眠模式:

# hdparm -Y /dev/hda
/dev/hda:
issuing sleep command



    当再次需用硬盘时,Linux将自动启动它。

五、小结

    上面我们对Linux下三种常见的电源管理工具进行了讨论,我想您现在已经清楚如何设置Linux本本的电源管理了,那就赶紧试试吧--什么?你用的是台式机,那等有机会再试也不算迟呀!
阅读(996) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~