Linux筆記本電源管理指南(轉)

gugu99發表於2007-08-10
Linux筆記本電源管理指南(轉)[@more@]

  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本本的電源管理了,那就趕緊試試吧--什麼?你用的是桌上型電腦,那等有機會再試也不算遲呀!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939882/,如需轉載,請註明出處,否則將追究法律責任。

相關文章