Laptop Mode Tools (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 Laptop_Mode_Tools翻译。上次翻译日期:2013-12-25。如果英文版本有所更改,则您可以帮助同步翻译。

Laptop Mode Tools 是一个 Linux 系统下的笔记本电源管理软件。它是让内核开启笔记本电脑模式功能的主要方法,能让硬盘降速。另外,它允许你通过一个简单的配置文件调整一些其他的节能相关的设置。

acpidCPU frequency scaling 结合使用,LMT 提供给了大多数用户一个完整的笔记本电脑电源管理方案。

安装

安装 laptop-mode-toolsAUR 软件包或 laptop-mode-tools-gitAUR 软件包。

配置

配置是通过下列文件来控制的:

  • /etc/laptop-mode/laptop-mode.conf - 主要配置文件
  • /etc/laptop-mode/conf.d/* - 许多特定功能的模块.

每个模块都可以通过修改对应的conf.d/*文件中的CONTROL_*的值来启用或禁用。

如果在 /etc/laptop-mode/laptop-mode.conf 中设置了 ENABLE_AUTO_MODULES,LMT会自动启用那些CONTROL_*设为auto的模块。

下面的命令可以用来列出模块的启用配置(启用、禁用或自动):

$ grep -r '^\(CONTROL\|ENABLE\)_' /etc/laptop-mode/conf.d
注意: auto-hibernate.confbattery-level-polling.conf 例外地采用 ENABLE_* 变量而不是 CONTROL_*

最后启用laptop-mode服务:

 # systemctl enable laptop-mode.service

硬盘

为了使用该功能您需要安装 hdparm 或者 sdparm。 查看 Hdparm.

通过 hdparm -S 命令来降低硬盘转速可以让计算机更省电同时更安静. 即是您正在使用电脑您依然可以使用磁盘预读功能让硬盘经常降低转速。LMT(笔记本电脑工具包)也可以使用hdparm -B 命令。硬盘省电级别最高(最省电)为1,最低是254,使用交流电源供电时默认为254,使用电池供电时默认为1。如果你觉得硬盘减速使得一些操作变慢的话,把它设置为一个高一点的值(比如128)是个好主意,这会让它不会太频繁的减速。 hdparm -Shdparm -B 命令的一些参数设置在 /etc/laptop-mode/laptop-mode.conf文件中。

如果 CONTROL_MOUNT_OPTIONS 选项为 on (默认即为 on), laptop-mode-tools 会自动重新挂载你的分区, 并在挂载选项中增加了 'commit=600,noatime'。这会让磁盘日志程序jbd2每10分钟更新一次磁盘日志,而不是通常情况下的几秒钟更新一次 (注意:使用该设置你可能会丢掉前10分钟的工作成果(当系统意外关闭时)). 同时请确保不要使用 atime 的挂载参数, 使用 noatimerelatime 来替代。

注意: CONTROL_MOUNT_OPTIONS 的值不应该在nilfs2分区上被设置为 on (原因可查看 https://bbs.archlinux.org/viewtopic.php?id=134656) (也可以查看 https://www.ibm.com/developerworks/cn/linux/l-cn-nilfs2/index.html 对nilfs2文件系统的中文介绍)

固态硬盘

来自 官方上游 FAQ:

问题:我电脑里装了一个固态硬盘,那么那些硬盘相关的配置还有效吗?

回答:它们有可能有效,原因有两个:1)laptop mode 会减少写次数,从而延长SSD的寿命;2)laptop mode 会让写操作变成突发形式,从而会使一些节电机制(例如ALPM)更好地介入。然而,效果可能会因硬件不同而有差别。有些硬件可能完全没效果,有些则效果显著。

CPU 频率调节

使用该功能你需要安装调节CPU频率的驱动模块。 查看 CPU frequency scaling.

# cpufreq.conf
# ThinkPad T40/T42/T60 Example
#
CONTROL_CPU_FREQUENCY=1
BATT_CPU_MAXFREQ=fastest
BATT_CPU_MINFREQ=slowest
BATT_CPU_GOVERNOR=ondemand
BATT_CPU_IGNORE_NICE_LOAD=1
LM_AC_CPU_MAXFREQ=fastest
LM_AC_CPU_MINFREQ=slowest
LM_AC_CPU_GOVERNOR=ondemand
LM_AC_CPU_IGNORE_NICE_LOAD=1
NOLM_AC_CPU_MAXFREQ=fastest
NOLM_AC_CPU_MINFREQ=slowest
NOLM_AC_CPU_GOVERNOR=ondemand
NOLM_AC_CPU_IGNORE_NICE_LOAD=0
CONTROL_CPU_THROTTLING=0

设备和总线

Intel SATA

  • 开启Intel SATA AHCI控制器的ALPM特性使磁盘空闲时让磁盘工作在非常低的功耗模式。
# intel-sata-powermgmt.conf
# ThinkPad T40/T42/T60 Example
#
DEBUG=0
CONTROL_INTEL_SATA_POWER=1
BATT_ACTIVATE_SATA_POWER=1
LM_AC_ACTIVATE_SATA_POWER=1
NOLM_AC_ACTIVATE_SATA_POWER=0
注意: 更多详细配置信息请参阅 /etc/laptop-mode/conf.d/intel-sata-powermgmt.conf 文件。

USB 自动休眠

# usb-autosuspend.conf
# ThinkPad T40/T42/T60 Example
#
DEBUG=0
CONTROL_USB_AUTOSUSPEND=1
BATT_SUSPEND_USB=1
LM_AC_SUSPEND_USB=1
NOLM_AC_SUSPEND_USB=0
AUTOSUSPEND_TIMEOUT=2
注意: 更多详细配置信息请参阅 /etc/laptop-mode/conf.d/usb-autosuspend.conf 文件。如果你有一个经常使用的USB设备(比如USB鼠标),把它们禁用可以防止它们自动休眠。

显示和图形

LCD 显示器亮度

  • 可以通过以下命令来查看可用的笔记本电脑屏幕亮度数值:
$ cat /proc/acpi/video/VID/LCD/brightness
ThinkPad T40/T42

对于 ThinkPad T40/T42 笔记本,最小和最大亮度的查看要通过以下命令:

$ cat /sys/class/backlight/acpi_video0/brightness
$ cat /sys/class/backlight/acpi_video0/max_brightness
# lcd-brightness.conf
# ThinkPad T40/T42 Example
#
DEBUG=0
CONTROL_BRIGHTNESS=1
BATT_BRIGHTNESS_COMMAND="echo 0"
LM_AC_BRIGHTNESS_COMMAND="echo 7"
NOLM_AC_BRIGHTNESS_COMMAND="echo 7"
BRIGHTNESS_OUTPUT="/sys/class/backlight/thinkpad_screen/brightness"
ThinkPad T60
  • 对于 ThinkPad T60 笔记本,最小和最大亮度的查看要通过以下命令:
$ cat /sys/class/backlight/thinkpad_screen/max_brightness
$ cat /sys/class/backlight/thinkpad_screen/brightness
# lcd-brightness.conf
# ThinkPad T60 Example
#
DEBUG=0
CONTROL_BRIGHTNESS=1
BATT_BRIGHTNESS_COMMAND="echo 0"
LM_AC_BRIGHTNESS_COMMAND="echo 7"
NOLM_AC_BRIGHTNESS_COMMAND="echo 7"
BRIGHTNESS_OUTPUT="/sys/class/backlight/acpi_video0/brightness"
注意: 更多配置细节请阅读 /etc/laptop-mode/conf.d/lcd-brightness.conf 文件。

终端黑屏时间

# terminal-blanking.conf
# ThinkPad T40/T42/T60 Example
#
DEBUG=0
CONTROL_TERMINAL=1
TERMINALS="/dev/tty1"
BATT_TERMINAL_BLANK_MINUTES=1
BATT_TERMINAL_POWERDOWN_MINUTES=2
LM_AC_TERMINAL_BLANK_MINUTES=10
LM_AC_TERMINAL_POWERDOWN_MINUTES=10
NOLM_AC_TERMINAL_BLANK_MINUTES=10
NOLM_AC_TERMINAL_POWERDOWN_MINUTES=10
注意: 更多配置细节请参阅 /etc/laptop-mode/conf.d/terminal-blanking.conf 文件。

网络

以太网

# ethernet.conf
# ThinkPad T40/T42/T60 Example
#
DEBUG=0
CONTROL_ETHERNET=1
LM_AC_THROTTLE_ETHERNET=0
NOLM_AC_THROTTLE_ETHERNET=0
DISABLE_WAKEUP_ON_LAN=1
DISABLE_ETHERNET_ON_BATTERY=1
ETHERNET_DEVICES="eth0"

无线局域网

无线网络设备的电源管理是设备相关的,因此配置时更需要一些技巧。依赖于无线芯片,设置通过下面三个文件中的一个来管理:

  1. /etc/laptop-mode/conf.d/wireless-power.conf 用于的电源管理的通用方法 (通过 "iwconfig wlan0 power on/off"). 这个适用于大多数芯片(除了Intel芯片集之外)。
  2. /etc/laptop-mode/conf.d/wireless-ipw-power.conf 通过老的ipw驱动来管理 Intel 芯片集。这适用于 IPW3945、IPW2200 和 IPW2100. 现在(到LMT 1.55-1为止)它用 iwpriv 来管理 IPW3945,以及用 iwconfig 结合 iwpriv来管理 IPW2100 和 IPW220。详细信息请参见 /usr/share/laptop-mode-tools/modules/wireless-ipw-power 文件。(注意,ipw3945模块已经废弃了,见下面)
  3. /etc/laptop-mode/conf.d/wireless-iwl-power.conf 用于管理 iwl4965、iwl3945 和 iwlagn 驱动的Intel芯片集(iwlagn 支持 4965, 5100, 5300, 5350, 5150, 1000, 和 6000 芯片集)
注意: 三个模块全开通常不会带来问题,因为LMT会自动检测设备对应的模块。

每个配置文件所支持的模块是直接源自LMT的。但是有些已经过时了,因为从Linux内核版本2.6.34开始就不再提供ipw3945和iwl4965模块(3945采用iwl3945,4965采用通用模块iwlagn)。这并不影响LMT的正常工作。

对于iwlagn驱动的一些芯片集(包括5300或其它),有一个已知的问题。在这些芯片集上,文件 /etc/laptop-mode/conf.d/wireless-iwl-power.conf中的下列配置:

IWL_AC_POWER
IWL_BATT_POWER

会被忽略,因为文件 /sys/class/net/wlan*/device/power_level 不存在。于是通用方法(通过 "iwconfig wlan0 power on/off" )会被自动启用。

音频设备

AC97

# ac97-powersave.conf
# ThinkPad T40/T42/T60 Example
#
DEBUG=0
CONTROL_AC97_POWER=1

Intel HDA

# intel-hda-powersave.conf
# ThinkPad T40/T42/T60 Example
#
DEBUG=0
CONTROL_INTEL_HDA_POWER=1
BATT_INTEL_HDA_POWERSAVE=1
LM_AC_INTEL_HDA_POWERSAVE=1
NOLM_AC_INTEL_HDA_POWERSAVE=0
INTEL_HDA_DEVICE_TIMEOUT=10
INTEL_HDA_DEVICE_CONTROLLER=0

提示和技巧

Aliases

lm-profiler

Disabling

疑难问题

Laptop-mode-tools 不能收到事件

对于使用 systemd 的系统,开启并使其开机自动加载acpid 请运行以下命令:

# systemctl enable acpid
# systemctl start acpid

如果这样不管用的话,请仔细检查一边 laptop-mode 的配置文件并确定需要开启的服务被设置成 1 了。许多服务,包括cpu频率控制服务 (cpufreq control) 默认设置都是'自动'("auto"),所以可能没有开启。

相关链接