在 Windows 環境下,我們早已熟悉透過主板進階電源管理模組實現 STR(待機)、STD(休眠)等功能。對於筆記型電腦用戶而言,善用進階電源管理讓裝置進入休眠狀態以節省電力更是必備技能。這些在 Windows 平台輕鬆實現的功能,若換到 Linux 系統,恐怕就鮮少人知曉。本文將深入介紹 Linux 作業系統下的電源管理實現機制。由於眾多伺服器採用 Linux,電源管理的重要性不言而喻。
在 x86 機器中,存在兩種電源管理方法:APM (Advanced Power Management,進階電源管理) 與 ACPI (Advanced Configuration and Power Interface,進階配置與電源介面)。APM 是早期標準,而 ACPI 提供了更靈活的電腦與裝置管理介面。Linux 同時支援這兩種協定,但有時仍需手動配置。值得注意的是,兩個標準無法同時運行,預設情況下 Linux 啟用 ACPI。
要啟用電源管理功能,需在 BIOS 與 Linux 核心中均開啟支援,並在 Linux 中載入必要的應用軟體。
較新的核心皆內建 ACPI 與 APM 支援,預設啟用 ACPI。可使用 dmesg 指令驗證:
dmesg | egrep -i '(apm|acpi)'
若輸出包含 ACPI: Subsystem enabled 等資訊,即表示核心已載入 ACPI 驅動。此外,支援 ACPI 的系統會在 /proc/ 下建立 sys/acpi 目錄,其存在即證明驅動已載入。
建議使用最新核心(如 2.4.5 以上版本),舊版核心功能有限,2.2.x 系列僅支援極少量 ACPI 功能。
APM 套件包含 apmd(APM 背景服務程式)與相關應用程式。安裝完成後可嘗試 apm 指令:
apm
AC on-line, no system battery
若顯示 No APM support in kernel,請檢查 /proc/apm 是否存在、是否運行支援 APM 的核心、模組是否已載入。apm -S 與 apm -s 分別進入待機與暫停狀態。KDE 等桌面環境亦可整合 APM 顯示電池狀態並管理硬體節能模式。
Linux 對 ACPI 支援完善,文檔資源豐富。權威網站 phobos.fs.tum.de/acpi/ 提供 acpid 與 pmtools 兩大工具套件,可優化 ACPI 管理。
pmtools 中的 pmtest 可檢測 ACPI 裝置狀態(需 root 權限):
/pmtools/pmtest
VGA (D0)
keyboard (D0)
PCI 0x0 (D0)
system 0x0 (D0)
狀態 D0 代表作用中。可將裝置設為 D1/D2(最低功耗)或 D3(完全關閉)。例如:
/pmtools/pmtest -d1 VGA # 螢幕變黑但訊號仍在
/pmtools/pmtest -d0 VGA # 恢復顯示
掌握這些基礎後,即可舉一反三,充分發揮 Linux 進階電源管理效能。
ALSA SoC 架構中 Platform 驅動註冊流程分析 (soc-core.c)
Linux 核心原始碼閱讀入門:原始碼目錄架構解析與新增系統呼叫實戰演練
Nexus 7 平板迎來首個原生 Linux 發行版 Plasma Active
Debian 安裝 Chrome 與 SCIM 中文輸入法完整教學
Linux 利用軟連結解決根分區空間不足:跨分區遷移 /www 實戰
Linux 高精度定時與休眠:setitimer、select、nanosleep 完全指南
Linux 內核信號量參數 semopm/semmsl/semopm/semmni 調優:/proc/sys/kernel/sem 與 sysctl 永久生效