电池供电 Linux Mini-HOWTO

David Lechnyr

修订历史
修订 2.312003-07-30修订者:drl
小更新
修订 2.02002-10-08修订者:drl
主要更新和转换为 SGML
修订 1.01997-12-21修订者:hm
Hanno Muller 初稿

本文档描述了如何在已配置好的 Linux 系统上优化和配置电源管理,以便在电池供电的笔记本电脑上使用。 这将对所有在便携式计算机系统上运行 Linux 的人有所帮助。 讨论了 APM/ACPI 电源管理方法以及省电技巧和技术。 还讨论了一些关于可用电池类型的知识。


目录
1. 电源管理
1.1. 高级电源管理 (APM)
1.2. 高级配置和电源接口 (ACPI)
1.3. APM vs. ACPI:选择哪个?
1.4. SMP、超线程、IA64 和 NUMA
2. DPMS
2.1. 正常
2.2. 待机
2.3. 暂停
2.4. 关闭
3. 电源管理方法
3.1. swsusp(8)
3.2. hdparm(8)
3.3. sysklogd(8)
3.4. XFree86
3.5. KDE 3.1
3.6. 能源之星
3.7. 交换文件
3.8. tmpfs
3.9. 其他调整
3.10. 省电误区
4. 电池类型
4.1. 镍镉 (Ni-Cd)
4.2. 镍氢 (Ni-MH)
4.3. 锂离子 (Li-ion)
4.4. 智能电池
4.5. 通用电池保养
5. 附录

1. 电源管理

如果您有一台相对较新的 x86 笔记本电脑,那么它很可能支持高级电源管理 (APM) 或高级配置和电源接口 (ACPI)。 ACPI 是两种技术中较新的一种,它将电源管理置于操作系统手中,与 BIOS 控制的 APM 相比,可以实现更智能的电源管理。 这对于电池供电的笔记本电脑最有用。 您一次只能有一个电源管理接口控制您的机器,因此重要的是您要决定哪种方法最适合您的情况。


1.1. 高级电源管理 (APM)

高级电源管理 (APM) 允许您计算机的 BIOS 控制您系统的电源管理,而无需操作系统的了解。 Linux 下 APM 的优点是它稳定、受到 Linux 供应商的良好支持,并且拥有可靠的历史。 但是,在过去几年中,对其进行的开发并不多。

要使用它,您需要在内核中启用 APM

      [*] Power Management support
      <*>   Advanced Power Management BIOS support
      [ ]     Ignore USER SUSPEND (NEW)
      [ ]     Enable PM at boot time (NEW)
      [ ]     Make CPU Idle calls when idle (NEW)
      [ ]     Enable console blanking using APM (NEW)
      [ ]     RTC stores time in GMT (NEW)
      [ ]     Allow interrupts during APM BIOS calls (NEW)
      [ ]     Use real mode APM BIOS call to power off (NEW)

大多数其他 APM 选项的存在是为了解决特定硬件设备的已知问题,因此您可能只想启用第一个选项 (CONFIG_APM)。

  • 高级电源管理 BIOS 支持 (CONFIG_APM):您需要启用此选项才能使用 APM 做任何有用的事情。 用户空间程序将收到 APM 事件(例如,电池状态更改)的通知,并且 /proc/apm 设备将为您提供电池状态信息。

  • 忽略用户挂起 (CONFIG_APM_IGNORE_USER_SUSPEND):这是 NEC Versa M 笔记本电脑的解决方法。

  • 在启动时启用 PM (CONFIG_APM_DO_ENABLE):虽然听起来很漂亮,但大多数机器不需要启用此功能,实际上可能会在启动时挂起某些系统。

  • 空闲时进行 CPU 空闲调用 (CONFIG_APM_CPU_IDLE):在某些机器上,此选项可提高节能效果。 在其他机器上,它会在启动时挂起系统。 谨慎使用。

  • 使用 APM 启用控制台消隐 (CONFIG_APM_DISPLAY_BLANK):与其消隐虚拟控制台,不如实际关闭屏幕。 这不适用于 X-Windows,实际上可能会导致更多问题而不是解决问题。

  • RTC 以 GMT 存储时间 (CONFIG_APM_RTC_IS_GMT):如果您想在 RTC(实时时钟)中存储 GMT(格林威治标准时间),请在此处选择是。

  • 在 APM BIOS 调用期间允许中断 (CONFIG_APM_ALLOW_INTS):这是解决某些 IBM Thinkpad 在挂起时挂起问题的解决方法。

  • 使用实模式 APM BIOS 调用来关机 (CONFIG_APM_REAL_MODE_POWER_OFF):这是许多损坏的 BIOS 的解决方法。 如果您的计算机崩溃而不是正常关机,请打开此选项。

您需要从 http://www.worldvisions.ca/~apenwarr/apmd/ 安装 APM 守护程序,并配置您的系统启动脚本以在启动时激活它

# Start the APM daemon if it exists and if APM is enabled in the kernel
if [ -x /usr/sbin/apmd -a -d /proc/apm ]; then
	if cat /proc/apm 1> /dev/null 2> /dev/null ; then
		echo "Starting APM daemon:  /usr/sbin/apmd"
		/usr/sbin/apmd
	fi
fi

APM 守护程序实际上由三个主要程序组成

  • apmd - 处理电源管理任务

  • apm - 用于打印当前电池状态或挂起计算机的命令行工具

  • xapm - X 的简单电池仪表

如果您正在寻找一种简单、开箱即用的笔记本电脑电源管理方法,那么 APM 绝对是您的最佳选择。

可以将一个简单的脚本添加到您的~/.profile文件中,以通知您剩余的电池时间

if [ -f /proc/apm ]; then
        DUMMY=`cat /proc/apm | cut -d" " -f 7`
        # Don't display when fully charged
        if [ "$DUMMY" != "99%" ]; then
                LEVEL=`cat /proc/apm | sed -e "s/^.*% //"`
                echo "Battery at $DUMMY ($LEVEL)"
        fi
fi

1.2. 高级配置和电源接口 (ACPI)

高级配置和电源接口 (ACPI) 是 APM 的继任者,它将电源管理的责任从 BIOS 转移到操作系统手中。 ACPI Linux 比 APM Linux 更新,在响应电源管理事件方面更灵活,最近得到了更多的开发,并且由于所有这些原因,有时容易出现其自身的一些错误。

如果您热衷于前沿开发,并且不害怕内核构建和应用针对源代码的补丁,那么 ACPI 值得考虑。

Linux 下的 ACPI 有两个部分:内置于内核本身的 ACPI 驱动程序和 ACPI 守护程序 (ACPID)。 ACPID 在其当前版本中非常简单:监视 /proc/acpi/event 并做出响应。 即使您不加载守护程序,您仍然可以获得内置于内核中的 ACPI 功能的好处,例如处理器散热支持。

您可以使用以下命令确定您正在使用的 ACPI 驱动程序版本以及支持的挂起状态

bash $ cat /proc/acpi/info
version: 20030619
states:  S0 S1 S3 S4 S4 S5

ACPI 开发正在稳步进行,因此您可能需要考虑针对内核级 ACPI 代码的任何最新更新修补您的内核。 下载特定内核的补丁后,您可以使用如下命令修补它

bash$ gunzip acpi-[version-kernel].diff.gz
bash# cd /usr/src/linux-[version]
bash# patch -Np1 -i ../acpi-[version-kernel].diff

当然,在此之后您需要重新编译您的内核

      [*] ACPI Support
      [ ] CPU Enumeration Only
      <*>   AC Adapter
      <*>   Battery
      <*>   Button
      <*>   Fan
      <*>   Processor
      <*>   Thermal Zone
      < >   ASUS Laptop Extras
      < >   Toshiba Laptop Extras
      [*]   Debug Statements

您还需要从 http://sourceforge.net/project/showfiles.php?group_id=33140 安装 ACPID 守护程序,并配置您的系统启动脚本以在启动时激活它

if [ -x /usr/sbin/acpid -a -d /proc/acpi ]; then
	echo "Starting ACPID Daemon:  /usr/sbin/acpid"
	/usr/sbin/acpid
fi

一点历史... Microsoft 是第一个实施 ACPI 的供应商。 这既是好事也是坏事。 好处是,当您购买系统时,您几乎可以保证它已通过 Microsoft 的硬件合规性测试,包括其 ACPI 实施的测试。 然而,这些测试的缺点在于它们并未表明符合 ACPI 规范,而是符合 Microsoft 的 ACPI 实施。 当同一台机器与 Linux 一起使用时,某些在 Windows 下未表现出来的错误可能会变得明显。 为了防止此问题,Linux ACPI 驱动程序维护了一个“坏 BIOS”黑名单,其中列出了已知不符合 ACPI 标准的 BIOS,因此,如果您的系统在列表中,将拒绝启用 ACPI。

许多制造商现在正在验证他们的系统是否在 Linux 上运行。 但是,他们使用带有默认内核的主要 Linux 发行版。 这意味着在主要的 Linux 发行版发布 ACPI 内核之前,很难让 OEM 确保他们的系统与启用 ACPI 的 Linux 配合使用。 这带来了一个小小的困境,因为 Linux 发行版希望发布可以在尽可能多的系统上运行的内核,但最近在这方面取得了一些积极进展。

为了在保持快速可用的同时节省能源,兼容 ACPI 的 PC 可以进入系统睡眠状态。 ACPI 规范定义了五种此类状态,称为 S 状态。 与处理器睡眠状态不同,系统在 S 状态下不执行任何工作。 每种状态都引入了更大的节能,但需要更长的时间才能唤醒并开始执行工作。 这些状态仿照了 APM 标准(ACPI 的前身)中的系统状态。

有关 ACPI 睡眠状态的完整详细信息,请访问 http://acpi.sourceforge.net/documentation/sleep.html。 处理器状态在 http://acpi.sourceforge.net/documentation/processor.html 中描述。

有关 ACPI 本身的更多具体背景信息,您可以访问 ACPI 网站 http://www.acpi.info


1.3. APM vs. ACPI:选择哪个?

目前有两种竞争标准用于提供电源管理:APM 和 ACPI。 两者不能同时使用,那么哪一个最适合您的情况呢? 如果您拥有相对较新 (>2.4.20) 的内核,并且不害怕内核构建和修补源代码,您会发现 ACPI 的灵活性有很多好处。 如果您只想启用通用电源管理,或者您使用的是旧机器,请选择 APM。 两种方法都不会停止空闲硬盘驱动器; 请改用 hdparm。 无论哪种方式,您系统的 BIOS 都必须正确支持您想要使用的电源管理方案; 如果您的系统未完全支持任一标准,则某些电源管理选项可能会导致系统崩溃和/或数据丢失。 已警告您!

即使您没有在 x86 笔记本电脑上启用电源管理,只要没有任何事情需要做,Linux 始终会向您的处理器发出 HLT 指令 [1]。 许多 Microsoft Windows CPU 冷却程序都使用此技术。 这会导致降低 CPU 的功耗。 请注意,系统在收到 HLT 指令时不会关机; 它只是停止执行指令,直到发生中断。

在不属于这些类别的服务器或工作站上启用任何类型的电源管理通常没有任何优势。


1.4. SMP、超线程、IA64 和 NUMA

一些 SMP 系统制造商可能省略了用于 SMP 配置的 pre-ACPI 表。 在这种情况下,需要 ACPI。

如果您有一个支持超线程的较新系统,您将需要启用 ACPI(当然,还有 SMP)。 如果没有它,您的 Linux 系统可能无法发现和初始化所有虚拟处理器。

IA64 机器也需要 ACPI。 此外,NUMA 服务器也开始需要它才能进行正确的初始化。


2. DPMS

DPMS(显示电源管理信号)是一种降低显示器功耗的标准。 通常,显示器和显卡都必须支持 DPMS 标准,才能从中获得任何好处。 DPMS 规定了四种操作模式(按节能程度递增排序):“正常”、“待机”、“暂停”和“关闭”。 “水平同步”和“垂直同步”两条信号线提供了一种将这四种不同状态信号发送到 DPMS 显示器的方法。

有关 DPMS 的良好技术资源,请访问 http://webpages.charter.net/dperr/dpms.htm


2.1. 正常

正常 意味着就是这样——显示器已完全通电并开启。 LCD 笔记本电脑面板和 LCD 平面屏幕比传统的 CRT 显示器使用更少的功率。


2.2. 待机

待机 用于描述非常小的节能级别。 此设置通常涉及通过关闭电子(RGB)枪来消隐屏幕。 但是,电源保持开启,电子管灯丝通电。 当您需要再次使用显示器时,显示器将很快恢复开启状态。 此选项需要 DPMS 显示器和显卡支持,以及在 XFree86 中启用 DPMS。 待机有时被称为 hsync 暂停模式,因为水平同步信号被关闭以向 DPMS 显示器发出此电源管理状态的信号。


2.3. 暂停

暂停 用于描述非常强的低功耗状态。 此设置通常涉及与 待机 相同的节电,但此外还关闭了显示器的电源。 此选项需要 DPMS 显示器和显卡支持,以及在 XFree86 中启用 DPMS。 暂停有时被称为 vsync 暂停模式,因为垂直同步信号被关闭以向 DPMS 显示器发出此电源管理状态的信号。


2.4. 关闭

关闭 通常意味着就是这样——计算机显示器已关闭。 通常,一个小型的辅助电路保持开启状态,以监视来自计算机的信号,以便在需要将数据显示到屏幕时重新打开显示器。 显然,这会将功耗保持在最低水平(如果不是零)。 虽然节能效果显着,但重新激活显示器可能需要几秒钟。 此选项需要 DPMS 显示器和显卡支持,以及在 XFree86 中启用 DPMS。 水平和垂直同步信号均被关闭以向 DPMS 显示器发出此电源管理状态的信号。


3. 电源管理方法

任何电源管理技术的基本目标是减少实体的功耗。 在笔记本电脑电源管理的情况下,我们的重点是减少 CPU 和硬盘驱动器的使用率。 为了使事情更简单一些,这被分解为显而易见的、半显而易见的不显而易见的技术。 当然,您的里程可能会有所不同。


3.1. swsusp(8)

挂起到磁盘 (S2D) 在 Linux 下仍然是一项难以捉摸的任务。 目前的主要项目是 swsusp,可在 http://sourceforge.net/projects/swsusp 上获得。 它仍然相当新,并且需要进行一些配置才能启用它。


3.2. hdparm(8)

hdparm 是一个 Linux shell 实用程序,可用于停止和提高各种 ATA/IDE 驱动器的性能。 如果您的系统未包含它,您可以从 http://freshmeat.net/redir/hdparm/4062/url_homepage/hardware 获取源代码。 例如,以下命令提供具有同步 (-c3)、DMA 支持 (-d1)、高级电源管理 (-B128)、写入缓存 (-W1)、磁盘在五分钟后停止 (-S60) 的 32 位 IO 支持。 为我带来了巨大的性能提升和额外的节能效果。 请注意,您的里程可能会有所不同,您需要针对您的特定系统进行调整,以防止数据丢失(尤其是 -B 和 -m 标志!)。

在以下示例中,我们在使用 hdparm 之前和之后运行硬盘驱动器的一些读/写基准测试。 请注意,虽然我们的缓存读取保持大致相同,但我们从驱动器的实际物理读取却大大增加! 如果您喜欢冒险,您可以谨慎地使用 -m、-c、-B 和 -u 开关(请参阅手册页)。

bash# hdparm -tT /dev/hda
Timing buffer-cache reads:   588 MB in  2.01 seconds = 292.15 MB/sec
Timing buffered disk reads:   14 MB in  3.46 seconds =   4.05 MB/sec

bash# hdparm -k1 -K1 -c3 -d1 -W1 /dev/hda
bash# hdparm -tT /dev/hda
Timing buffer-cache reads:   596 MB in  2.01 seconds = 297.01 MB/sec
Timing buffered disk reads:   72 MB in  3.05 seconds =  23.58 MB/sec

3.3. sysklogd(8)

检查您的 /etc/syslog.conf 文件中是否存在不必要的日志记录活动,并优化其性能。 如果您不想记录任何系统活动,请考虑完全禁用 syslogd 和 klogd,或者至少最大限度地减少系统执行的日志记录量。 您还可以在每个条目前面加上减号 (-),以省略在每次日志条目后同步文件 [2]。 例如,这将记录优先级为 info 或更高,但低于 warning 的任何内容到 /var/log/messages/var/log/mail,而无需在每次写入后同步到磁盘。 由于我们希望保留所有优先级为 warning 的消息,因此这将记录到另一个文件中,而不会禁用磁盘同步(以防止系统崩溃时数据丢失)。

*.warning			/var/log/syslog
*.info;*.!warning;mail.none	-/var/log/messages
mail.info;mail.!warning		-/var/log/mail

另一个需要注意的项目是 -- MARK -- 消息,syslogd(8) 会写入这些消息。 这将影响您的硬盘驱动器不活动设置。 您只需运行带有以下内容的 syslogd(8) 即可禁用此功能

if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then
	# '-m 0' disabled 'MARK' messages
	/usr/sbin/syslogd -m 0
	sleep 1
	# '-c 3' displays errors on console
	# '-x' turns off broken EIP translation
	/usr/sbin/klogd -c 3 -x
fi


3.4. XFree86

在 XFree86 下可以执行两种不同类型的屏幕消隐:BlankTime 和 DPMS。 第一个只是一个假的“消隐”效果,实际上不会节省任何电量。 其他的仅特定于符合 DPMS 标准的显示器,并且必须专门启用才能生效。 它们位于您的 XF86Config 文件中,该文件通常位于 /etc/X11/XF86Config 中。

如果您有符合 DPMS 标准的显示器,您可能需要在 XF86Config 文件的 Monitor 部分下尝试启用对其的支持

Section "Monitor"
	Option	"DPMS"
EndSection

要操作 DPMS 功能,您可以在 ServerLayout 部分中创建/修改以下项目。

Section "ServerLayout"
	Option "BlankTime"	"10"	# Blank the screen in 10 minutes
	Option "StandbyTime" 	"20"	# Turn off screen in 20 minutes
	Option "SuspendTime"	"30"	# Full hibernation in 30 minutes
	Option "OffTime"	"40"	# Turn off DPMS monitor
EndSection

值得注意的是,BlankTime 实际上根本不是节能级别。 屏幕被发送一个“假的”消隐效果,默认在 10 分钟后激活。 或者,它可以指示屏幕保护程序应激活的分钟数。 它与 DPMS 无关。

激活您的更改并重新启动 X-Windows 后,您可能需要检查您的日志文件,看看您的显卡是否对您的更改有任何问题

bash$ egrep "^\(WW|EE\)" /var/log/XFree86.0.log

对于您的特定显卡/芯片驱动程序,可能还有其他选项可以启用; 有关详细信息,请参阅 XFree86 文档网站。

当然,所有这些也可以使用 xset(1)“即时”激活。 如果您无法访问系统的 XF86Config 文件,则将这些命令放在 ~/.Xsession~/.xinitrc 文件中是一个好地方。

bash$ xset -dpms			# Disable DPMS
bash$ xset +dpms			# Enable DPMS
bash$ xset s off			# Disable screen blanking
bash$ xset s 150			# Blank the screen after 150 seconds
bash$ xset dpms 300 600 900		# Set standby, suspend, & off times (in seconds)
bash$ xset dpms force standby		# Immediately go into standby mode
bash$ xset dpms force suspend		# Immediately go into suspend mode
bash$ xset dpms force off		# Immediately turn off the monitor
bash$ xset -q				# Query current settings

如果您使用的是 Linux 控制台(而不是 X-Windows),您将需要使用 setterm(1)

bash$ setterm -blank 10			# Blank the screen in 10 minutes
bash$ setterm -powersave on		# Put the monitor into VESA power saving mode
bash$ setterm -powerdown 20		# Set the VESA powerdown to 20 minutes


3.5. KDE 3.1

3.5.1. 显示电源控制

假设您已配置 XFree86 以支持 DPMS,只需运行 kcontrol 并选择 电源控制/显示电源控制。 从这里,您可以配置显示器的待机、暂停和关机设置。


3.5.2. 笔记本电脑电池

假设您已配置内核以支持 APM 或 ACPI,只需运行 kcontrol 并选择 电源控制/笔记本电脑电池。 从这里,您可以根据剩余电池电量配置系统的各种设置。

值得注意的是,一些运行 ACPI 的人倾向于看到以下消息

Your computer seems to have a partial ACPI installation. ACPI was probably 
enabled, but some of the sub-options were not - you need to enable at least 
'AC Adaptor' and 'Control Method Battery' and then rebuild your kernel.

如果您看到此消息,则表示 ACPI 未安装,或者更有可能的是,KDE 无法识别您的特定 Linux ACPI 子系统。 如果使用任何 ACPI 更新修补内核无法解决此问题,则您必须不使用此 KDE 功能,或者,也可以恢复为使用 APM。


3.6. 能源之星

能源之星 是美国政府支持的旨在推广能源效率标准的计划。 感兴趣

  • 一台符合能源之星标准的计算机,在睡眠模式下,比没有电源管理功能的计算机节省 70% 的电力。

  • 一台符合能源之星标准的显示器,在睡眠模式下,比没有电源管理功能的显示器节省 90% 的电力。

通常,能源之星的节能是通过其他电源管理设置实现的,并且本身不是一种电源管理技术。


3.7. 交换文件

考虑在 /etc/fstab 中禁用交换文件以减少硬盘驱动器访问。 如果您有很多内存,这绝对是最好的方法。 判断您是否需要交换文件的一种方法是启用它,使用您的系统一段时间,并检查 /proc/meminfo/proc/swaps 以确定您平均有多少可用内存,以及您的交换文件是否正在被使用。

例如,今天我编译了几个密集的程序,并且我的笔记本电脑已经连续运行了大约八个小时。 对我的系统进行简单的检查显示

bash$ cat /proc/swaps
Filename                                Type            Size    Used    
Priority
/dev/hda3                                partition      136544  0       -1

bash$ cat /proc/meminfo
MemTotal:       513880 kB
MemFree:        254820 kB
Buffers:         42812 kB
Cached:         142880 kB
SwapCached:          0 kB
Active:         159644 kB
Inactive:        76888 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       513880 kB
LowFree:        254820 kB
SwapTotal:      136544 kB
SwapFree:       136544 kB
Dirty:               0 kB
Writeback:           0 kB
Mapped:          86148 kB
Slab:            10748 kB
Committed_AS:   203944 kB
PageTables:       1140 kB
VmallocTotal:   516076 kB
VmallocUsed:      1468 kB
VmallocChunk:   514604 kB
HugePages_Total:     0
HugePages_Free:      0
Hugepagesize:     4096 kB

鉴于此,如果这是我未来使用情况的任何指标,我宁愿禁用我的交换文件。


3.8. tmpfs

使用启用了 tmpfs(临时文件系统)的内核编译您的内核,并使用它挂载您的 /tmp 目录。 这里有用的部分是,在此挂载点上不会写入任何内容到您的硬盘驱动器,因为它将像 RAM 磁盘一样工作(但是也不会保存任何内容)。 tmpfs 优于更传统的 ramfs 的优点在于,它位于内核内部缓存中,并且会增长和缩小以适应放置在那里的文件。 有关完整信息,请参阅内核的 Documentation/filesystems/tmpfs.txt。 如果您未指定最大大小,它将默认为可用内存一半的上限。 一个在 /tmp 上挂载 100MB 临时 ram 文件的 /etc/fstab 示例将如下所示

tmpfs	/tmp	tmpfs	size=100m,mode=1777	0 0


3.9. 其他调整

修改 /proc/sys/vm/bdflush 允许用户指定在何种情况下将脏缓冲区刷新到磁盘,存在多少此类缓冲区等等。 详细信息在 linux_src_tree/Documentation/sysctl/vm.txt 中(感谢 Marc Liberatore 指出这一点)。

启动您的系统并使用 lsmod 列出当前加载的模块。 此处列出的任何内容很可能都需要定期加载; 将这些编译为内核的一部分而不是作为可加载模块可能有助于减少必须从磁盘加载它们的时间,并在很小程度上减少启动系统所需的磁盘访问量。

检查您的 crontab 设置,看看是否有任何内容正在定期运行。 注释掉任何不必要的项目。 不要忘记检查每个用户的 crontab,包括用户“nobody”。 如果您不需要安排任何后台活动,请考虑完全禁用 crond。 同样的建议也适用于 atd。

如果您运行 httpd 来测试和/或开发网页,请尝试将 MinSpareServers 和 StartServers 的值更改为 1。 不要定义任何 CustomLogging,或者至少将 LogLevel 的值增加到 warn。 如果您真的对自己有信心,可以将 ErrorLog 指令更改为指向 /dev/null。

考虑创建一个省电脚本,该脚本将立即将您的笔记本电脑置于低功耗模式

#!/bin/sh
if [ -x /usr/sbin/hdparm ]; then
	hdparm -y /dev/hda
fi

if [ -x /usr/X11R6/bin/xset ]; then
	xset dpms force off
fi

此外,值得考虑以下领域的任何内容

  • 调整系统的 BIOS 设置以降低或关闭显示器的背光。

  • 调整系统的 BIOS 设置以降低电池供电时的 CPU 时钟速度。

  • 在电池供电时避免使用 PCMCIA 设备。 更好的是,在不使用时弹出 PCMCIA 卡。

  • 在电池供电时避免将外部设备与计算机一起使用。 这包括打印机、外部显示器、zip 驱动器和便携式相机。

  • 在电池供电时避免使用内置设备。 这包括 cdrom 和软盘驱动器。

  • 使用简单的软件。 功能齐全的多媒体应用程序将比小型简单的文字处理器产生更多的系统负载和磁盘活动

  • 使用简单的窗口管理器。 虽然 Gnome 和 KDE 很好,但在电池供电时,加载和运行所需的额外时间是不值得的。 一个巧妙的想法是使用不同的 xinitrc 脚本来启动不同的、更简单的窗口管理器,具体取决于您的系统是否正在电池供电。


3.10. 省电误区

重新编译 Linux PCMCIA 驱动程序以允许插槽具有 APM 电源支持曾经是有益的。 但是,这些驱动程序的大部分功能现在都内置在内核本身中。 如果您对具体细节感兴趣,PCMCIA 项目页面可在 http://sourceforge.net/projects/pcmcia-cs/ 上获得。

有些人认为 APM 比 ACPI 提供更好的节能效果,反之亦然。 虽然它们的电源管理技术不同,但在实际电池使用测试中,据报道两者的性能大致相同。

与流行的看法相反,锂离子(见下文)电池确实会受到记忆效应的影响。 幸运的是,在典型电池寿命(3-4 年)内,这种影响并不大。 任何告诉您不同的人都在卖东西。


4. 电池类型

目前笔记本电脑常用的电池类型有三种:镍镉、镍氢和锂离子。


4.1. 镍镉 (Ni-Cd)

镍镉 (Ni-Cd) 电池多年来一直是标准技术,但今天它们已经过时,新笔记本电脑不再使用它们。 它们很重,并且非常容易受到“记忆效应”的影响。 当为未完全放电的 NiCd 电池充电时,它会“记住”旧电量,并在下次使用时继续使用。 记忆效应是由电池物质的结晶引起的,会永久缩短电池的寿命,甚至使其失效。 为了避免这种情况,您应该至少每隔几周完全放电电池,然后再完全充电。 由于这种电池含有有毒物质镉,因此应始终回收或妥善处理。

NiCad 电池,以及一定程度上的 NiMH 电池,会受到所谓的记忆效应的影响。 记忆效应意味着,如果电池在充电前反复仅部分放电,则电池会忘记它可以进一步放电。 防止这种情况的最佳方法是定期完全充电和放电电池。


4.2. 镍氢 (Ni-MH)

镍氢 (Ni-MH) 电池是 NiCad 的无镉替代品。 它们受记忆效应的影响小于 NiCd,因此需要更少的维护和调节。 然而,它们在非常高或非常低的室温下存在问题。 即使它们使用危害较小的材料(即,它们不含重金属),它们也尚未完全回收。 NiCad 和 NiMH 之间的另一个主要区别是 NiMH 电池比 NiCad 提供更高的能量密度。 换句话说,NiMH 的容量大约是其 NiCad 对应物的两倍。 这对您意味着电池的运行时间更长,而体积和重量没有增加。


4.3. 锂离子 (Li-ion)

锂离子 (Li-ion) 是便携式电源的新标准。 锂离子电池产生的能量与 NiMH 相同,但重量轻约 20%-35%。 与 NiMH 和 Ni-Cd 对应物不同,它们不会显着受到记忆效应的影响。 它们的物质对 0 无害。由于锂非常容易点燃,因此需要特殊处理。 不幸的是,目前针对锂离子电池的消费者回收计划很少。


4.4. 智能电池

智能电池实际上不是一种不同的电池类型,但它们确实值得特别提及。 智能电池具有带有芯片的内部电路板,这些芯片使它们能够与笔记本电脑通信并监控电池性能、输出电压和温度。 智能电池通常会因其更高的效率而多运行 15%,并且还为计算机提供更准确的“燃油表”功能,以确定下次充电前还剩多少电池运行时间。


4.5. 通用电池保养

即使电池盒看起来相同,您也不能只是升级到另一种电池技术,除非您的笔记本电脑已由制造商预先配置为接受多种类型的电池类型,因为这三种类型的电池的充电过程各不相同。

长时间不使用的电池会慢慢自行放电。 即使保养得最好,电池也需要在 500 到 1000 次充电后更换。 但仍然不建议在交流电源下运行时不使用电池运行笔记本电脑——电池通常充当一个大电容器,以防止交流电源插座出现电压峰值。

由于制造商每隔几个月就会更改电池的形状,因此几年后您可能难以找到笔记本电脑的新电池。 只有当您预计在未来几年内使用同一台笔记本电脑时,这才会成为一个问题。 如果有疑问,请立即购买备用电池 - 赶在缺货之前。

新电池出厂时处于放电状态,使用前必须充满电。建议您将新电池完全充电和放电两到四次,以使其达到最大额定容量。通常建议您为此进行过夜充电(约十二小时)。注意:电池在充电和放电过程中发热是正常的。首次为电池充电时,设备可能在短短 10 或 15 分钟后指示充电完成。这对于可充电电池来说是正常的。新电池很难被设备充电;它们从未充满电,也没有经过磨合。有时,设备的充电器会在新电池充满电之前停止充电。如果发生这种情况,请从设备中取出电池,然后重新插入。充电周期应重新开始。这在首次电池充电期间可能会发生多次。不用担心;这完全正常。为了保持电池健康,请至少每两到三周完全充电,然后完全放电一次。锂离子电池是此规则的例外,它们没有记忆效应。

电池应在放电状态下存放,因为它们会自放电,并且在长时间存放后可能会变得不活动。 电池不应在连接到笔记本电脑的情况下长时间存放。 高湿度和高温会导致电池劣化,因此在存放期间应避免这些情况。

请勿将电池组取出并放在口袋、钱包或其他金属物体(如车钥匙或回形针)可能导致电池端子短路的容器中携带。由此产生的过大电流会导致极高的温度,并可能导致电池组损坏或引起火灾或烧伤。


5. 附录

本文档是在运行 Slackware Linux 9.0 的 Dell Latitude C400 笔记本电脑上精心制作的,以防有人询问。

如果没有 Hanno Muller 最初开发的优秀材料,本文档是不可能完成的。.

版权所有 (c) 2003 David Lechnyr。 允许再分发和使用,无论是否修改,但前提是包含版权声明、此条件列表和以下免责声明。

本文档由作者和贡献者“按原样”提供,并且不提供任何明示或暗示的保证,包括但不限于对适销性和特定用途适用性的暗示保证。 在任何情况下,作者或贡献者均不对任何直接、间接、偶然、特殊、惩戒性或后果性损害(包括但不限于采购替代商品或服务; 损失使用、数据或利润; 或业务中断),无论如何引起,并且基于任何责任理论,无论是合同、严格责任还是侵权行为(包括疏忽或其他),以任何方式因使用本软件而引起,即使已被告知可能发生此类损害。

注释

[1]

source/arch/i386/kernel/process.c

[2]

syslogd.c