笔记本电脑

来自 Arch Linux 中文维基
(重定向自Laptop

本文是笔记本索引页面,包括很多到其它页面的链接,以帮助用户将笔记本电脑配置为最佳体验。配置笔记本电脑大体上和配置台式机相同,但仍然存在一些关键的区别。Arch Linux 提供了完成这些配置所需的软件工具。下文重点讲述这些软件,并附以适当的提示和教程。

下面的厂商专页包含具体笔记本型号需要注意的地方。

宏碁AppleASUSDellFujitsuHPIBM/LenovoMSISamsungSonyToshibaOther

如果某个笔记本需要特殊的操作,会在厂商页面提供链接,如果找不到您的型号,可以参考 Category:Laptops 中的相似型号。

电源管理[编辑 | 编辑源代码]

注意: 阅读本节前,应首先阅读 Power managementCPU frequency scaling,本节介绍的是笔记本特有的功能设置。

如果想充分利用电池容量,电源管理是非常重要的。下列工具能帮助延长电池寿命,并保持笔记本电脑的低温和静音。

电池状态[编辑 | 编辑源代码]

有多种方式可以读取电池状态,传统方法是用 ACPI 接口周期查询。在某些系统中,电池会在每消耗 1% 电量的时候发送 udev 事件,可以用 udev 规则执行需要的操作。

ACPI[编辑 | 编辑源代码]

电池状态可以从终端用 ACPI 工具读取。acpi 软件包提供了 ACPI 命令行工具,详情请参见 ACPI modules

  • cbatticon 是常驻系统托盘的电池图标。
  • batifyAUR 是一个通过充放电和电量变化 udev 规则文件触发的通知程序(支持 multi-x 会话)。
  • batsignalAUR 是一个使用 libnotify 来通知低电量警告的轻量化电池监控守护程序。

低电量时自动休眠[编辑 | 编辑源代码]

如果您的电池会在充/放电的时候向 udev 发送事件,您可以使用这个 udev 规则系统在低电量时自动休眠,以防止未保存的工作丢失。

注意: 并非所有电池都会报告充放电事件,您可以在使用电池供电时运行 udevadm monitor --property 来查看您的电池是否支持该功能,可能至少要掉 1% 的电它才会被触发。如果它不报告充放电事件,而且 /sys/class/power_supply/BAT0/alarm 为非零值,那么电池可能会在 BAT0/energy_now 低于警报阈值的时候才会触发事件。只要能算出剩余电量百分比,UDEV 规则将起作用。默认情况下,一些笔记本电脑的 BIOS 中默认禁用了此功能。
/etc/udev/rules.d/99-lowbat.rules
# Suspend the system when battery level drops to 5% or lower
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="[0-5]", RUN+="/usr/bin/systemctl hibernate"

只要设置了条件,就会重复此规则。因此,当电池电量不足时从休眠状态恢复时,计算机将直接休眠。有些笔记本电脑在超过一定电池电量的情况下无法启动,因此该规则可以作相应的调整。

如果您有多个电池或者使用电池供电的外围设备(比如无线鼠标),该规则可能会被另一个电池的充放电事件所触发。您可以通过查看 /sys/class/power_supply/nameOfMainBattery/attributesAndOtherDirectories 获取主电池的其他属性,比如 model_name,并将其添加到udev规则中,来避免这种情况发生。

剩余电量百分比可能会一下子减少得比较多,而不是每次掉 1%,所以规则中使用了 [0-5] 来匹配。

您可以添加其他规则以根据电源状态和/或容量执行不同的操作。

如果您的系统不支持 ACPI 事件,请 定时运行 这个脚本,它通过 acpi 主动获取电池状态并判断是否进入休眠:

#!/bin/sh
acpi -b | awk -F'[,:%]' '{print $2, $3}' | {
	read -r status capacity

	if [ "$status" = Discharging -a "$capacity" -lt 5 ]; then
		logger "Critical battery threshold"
		systemctl hibernate
	fi
}

如果您有多个电池或者使用电池供电的外围设备,请修改脚本的第二行,添加 grep 来监视正确的电池,例如: acpi -b | grep "Battery 0" | awk -F'[,:%]' '{print $2, $3}' | {。把 Battery 0 替换成 acpi -b 所列出的正确的电池名称。

注意: 拔掉电池或外围设备的插头可能会导致脚本无法正常工作,因为它会导致剩余的电池被重命名,比如当 Battery 0 被拔掉的时候, Battery 1 就会自动变成 Battery 0 ,诸如此类
测试事件[编辑 | 编辑源代码]

测试 udev 规则的一种方法是让它们在运行时创建一个文件,比如:

/etc/udev/rules.d/98-discharging.rules
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", RUN+="/usr/bin/touch /home/example/discharging"

当拔下笔记本电脑充电器时,udev 会在 /home/example/discharging 处创建一个文件。您可以通过拔掉电源并查看文件是否存在来检验该规则是否有效。有关更高级的 udev 规则测试,请参见 Udev#Testing rules before loading

挂起和休眠[编辑 | 编辑源代码]

根据笔记本的使用模式,手动将系统挂起到内存或磁盘是提高电池使用时间的最有效方法。请参阅 Suspend and hibernate

硬盘停转问题[编辑 | 编辑源代码]

请参考 该文档.

为了防止笔记本机械硬盘过于频繁地停转,请参考hdparm#Power management configuration 设置较为温和的电源管理策略,即使是其默认值也可能太过激进了。

唤醒触发器[编辑 | 编辑源代码]

唤醒触发器(比如开盖、电源按钮等)能够把系统从各类 睡眠状态 中唤醒,请参考 wakeup triggers 来配置它们。

硬件支持[编辑 | 编辑源代码]

屏幕亮度[编辑 | 编辑源代码]

请参见 Backlight

触摸板[编辑 | 编辑源代码]

要使触摸板正常工作,可参见 libinput 页面。Touchpad Synaptics 是较旧的输入驱动程序,目前处于维护状态且不再更新。

完全检测不到触摸板[编辑 | 编辑源代码]

如果系统完全未检测到触摸板并将其显示为设备,使用一个或多个下列的内核参数是一种可行的解决方法。

i8042.noloop i8042.nomux i8042.nopnp i8042.reset
Elantech[编辑 | 编辑源代码]

如果系统检测不到 Elantech 触摸板,并且能在 journalctl -k 中看到下列行内容:

elan_i2c 5-0015: 5-0015 supply vcc not found, using dummy regulator

这与 psmouse 模块尝试为触摸板设备使用辅助总线时出现的一个问题有关,因为 elan_i2c 无法那样做。解决方法是强制模块使用主总线。只需创建下面这样一个文件并重新加载 psmouse 模块或者重启系统:

/etc/modprobe.d/psmouse.conf
options psmouse elantech_smbus=0

指纹传感器[编辑 | 编辑源代码]

请参阅 Fingerprint-gui, fprintThinkFinger (适用于 ThinkPads)。

网络摄像头[编辑 | 编辑源代码]

请参阅网络摄像机配置

硬盘冲击保护[编辑 | 编辑源代码]

不同厂家的多款笔记本都有硬盘冲击保护的功能。目前,由于制造商不愿支持所需软件组件的开源开发,Linux 对于冲击保护的支持在不同的硬件设施之间有很大的差异。

当前,有两个分别叫做 HDAPSHpfallAUR 中可用)的项目支持硬盘保护功能。前者适用于 IBM/联想 Thinkpads,而后者适用于惠普/康柏笔记本。

混合图形显示[编辑 | 编辑源代码]

笔记本制造商已经开发了新技术,可以将两个显卡融入一台计算机中,使得高性能和低耗电的兼顾成为可能。这些笔记本通常默认情况下使用英特尔显卡用于显示,所以首先需要安装 英特尔显卡 驱动。然后可以从 这里选择方法 来利用第二张显卡。

视频硬解[编辑 | 编辑源代码]

使用硬件解码视频有助于提升电池续航,参见 Video acceleration

音频静音 LED[编辑 | 编辑源代码]

使用英特尔高清音频技术(Intel HD Audio)的笔记本,可能需要用户手动指定编解码器型号才能使音频静音 LDE 指示灯正常工作。首先,检查笔记本是否使用了英特尔高清音频技术:

$ lsmod | grep snd_hda_intel

如果有任意形式的输出,说明这台笔记本确实使用了英特尔高清音频技术。下一步,需要找到对应的音频编解码器型号,运行:

$ grep Codec /proc/asound/card*/codec*

现在,需要在 可用模块名称列表中 找到相应的编解码器。如果找不到特定型号的编解码器,则可以通过反复试验找到适合的编解码器。

为告知内核要加载哪个型号指定的选项,请指定 model= 内核模块选项。 例如:

/etc/modprobe.d/mute-led.conf
options snd-hda-intel model=model_name

要测试其是否可用,内核模块必须要重新加载。也可以通过重启来完成。

如果您需要测试大量的编解码器,但是不停的重启又太浪费时间。为了提高效率,那么可以先退出所有使用了内核模块的进程,然后再用新参数重新加载模块。这可以通过注销所有图形和控制台会话来完成,如果使用显示管理器,则停止显示管理器。重新登录到控制台会话后,运行以下命令:

# modprobe -r snd_hda_intel
# modprobe snd_hda_intel model=model_name

这时内核模块将会使用 model_name 中指定的新编解码器。

网络时间同步[编辑 | 编辑源代码]

对于笔记本电脑,为了通过网络同步时钟,Chrony相较于NTPdOpenNTPDsystemd-timesyncd 更好. Chrony 被设计为:即使在没有永久网络连接的系统(如笔记本电脑)上也能很好地工作;而且相较于标准ntp,能更快地进行时间同步。当在虚拟机中的系统使用时,Chrony 有如下优点:更大的频率校正范围,能校正快速漂移的时钟;更好地响应时钟频率的快速变化。它的内存占用较小,且非必要不唤醒进程,提高了电量的使用效率。

编写单独的笔记本页面[编辑 | 编辑源代码]

如需新建或者修改单独的笔记本页面,请参考 Help:Laptop page guidelines

参阅[编辑 | 编辑源代码]

通用页面
  • CPU 调频 是一种主要在笔记本电脑上使用的技术,它使操作系统能够根据当前系统负载和/或电源提高或降低 CPU 频率。
  • 显示电源管理信号 介绍了如何在指定的不活动时间间隔后自动关闭笔记本电脑屏幕(不是显示屏保而是熄屏)。
  • 无线网络配置 提供了关于如何配置无线网络的信息。
  • 额外键盘按键 提供了关于笔记本上的功能键的配置说明。
  • acpid 是一个用于提供 ACPI 事件的灵活且可扩展的守护程序。
型号相关页面
  • 参考 Category:Laptops 和它的子分类来获得有关特定型号或厂商笔记本的指南。
  • ThinkPad 笔记本的电池调校,请参考 TLPtp_smapi
  • acerhdf 是宏碁 Aspire One 和一些 Packard Bell 笔记本电脑上控制风扇速度的核心模块。
外部资源