笔记本电脑 - Arch Linux 中文维基

跳转到内容

# 笔记本电脑

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 Laptop，最近一次同步于 2025-7-7，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

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

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

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

## 电源管理

注意：阅读本节前，应首先阅读 Power management 和 CPU frequency scaling，本节介绍的是笔记本特有的功能设置。

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

### 电池状态

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

可以使用以下方式直接从内核检查电池状态：

    $ cat /sys/class/power_supply/BAT0/capacity

`BAT0` 可以提供一个名字。例如 `wacom_battery_0` 为 Wacom 的触控笔设备。

此外，可以使用 upower包 工具：

    $ for BAT_PATH in $(upower -e | grep BAT); do upower -i "$BAT_PATH"; done

#### ACPI

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

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

#### 低电量时自动休眠

如果你的电池在每充放电1%时都会向 udev 发送事件，你可以使用这个 udev 规则在电池电量达到临界值时自动使系统休眠，从而防止所有未保存的工作丢失。 另外，如果已启用 `upower.service` 的话，upower包 也可以在电池电量达到可配置的临界值时采取措施。

##### udev

注意：并非所有电池都会报告充放电事件，您可以在使用电池供电时运行 `udevadm monitor --property` 来查看您的电池是否支持该功能，可能至少要掉 1% 的电它才会被触发。如果它不报告充放电事件，而且 `/sys/class/power_supply/BAT0/alarm` 为非零值，那么电池可能会在 `BAT0/energy_now` 低于警报阈值的时候才会触发事件。只要能算出剩余电量百分比，UDEV 规则将起作用。默认情况下，一些笔记本电脑的 BIOS 中默认禁用了此功能。

    /etc/udev/rules.d/99-lowbat.rules

    # 当电量少于5%后系统睡眠
    SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="[0-5]", RUN+="/usr/bin/systemctl hibernate"

注意：

- In the example, `[0-5]` is a shell-like pattern matching expression that matches one character in the range 0 to 5. It does not mean "when capacity is in the range from 0 to 5", and using something like `[20-25]` will not match a capacity in the range 20 to 25. See here for available pattern matching with udev rules.

- Test the command to be run beforehand to make sure it would work. For instance, `/usr/bin/systemctl hibernate` may return the error: "Call to Hibernate failed: Not enough swap space for hibernation"

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

如果您有多个电池或者使用电池供电的外围设备（比如无线鼠标），该规则可能会被另一个电池的充放电事件所触发。; this can be fixed by obtaining another attribute/value pair to add to your udev rule that specifically match the main battery, for example `model_name`. Such new attribute/value pair can be obtained for example by checking `/sys/class/power_supply/nameOfMainBattery/attributesAndOtherDirectories`, or by running `udevadm monitor --property` and waiting for battery events.

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

To shutdown the system instead of hibernating, use `/usr/bin/systemctl poweroff`. The `-i` flag can be used to ignore shutdown inhibitors, see systemctl(1) § OPTIONS. Other rules can be added to perform different actions depending on power supply status and/or capacity.

如果您的系统不支持 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/archie/discharging"

This creates a file at `/home/archie/discharging` when the laptop charger is unplugged. You can test whether the rule worked by unplugging your laptop and looking for this file. For more advanced udev rule testing, see Udev#Testing rules before loading.

##### UPower

Configure UPower, for example:

    /etc/UPower/UPower.conf

    UsePercentageForPolicy=true

    PercentageLow=20.0

    PercentageCritical=10.0

    PercentageAction=5.0

之后启用并运行 `upower.service` 。

### 挂起和休眠

根据笔记本的使用模式，手动将系统挂起到内存或磁盘是提高电池使用时间的最有效方法。请参阅 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, fprint 和 ThinkFinger (适用于 ThinkPads)。

### 网络摄像头

请参阅网络摄像机配置。

### 硬盘冲击保护

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

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

### 混合图形显示

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

### 视频硬解

使用硬件解码视频有助于提升电池续航，参见硬件视频加速。

### 音频静音 LED

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

    $ lsmod | grep snd_hda_intel

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

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

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

为告知内核要加载哪个型号的选项，请指定 `model=` kernel module parameter。 例如：

    /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相较于NTPd，OpenNTPD或systemd-timesyncd 更好. Chrony 被设计为：即使在没有永久网络连接的系统（如笔记本电脑）上也能很好地工作；而且相较于标准ntp，能更快地进行时间同步。当在虚拟机中的系统使用时，Chrony 有如下优点：更大的频率校正范围，能校正快速漂移的时钟；更好地响应时钟频率的快速变化。它的内存占用较小，且非必要不唤醒进程，提高了电量的使用效率。

## 编写单独的笔记本页面

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

## 参阅

通用页面

- CPU 调频是一种主要在笔记本电脑上使用的技术，它使操作系统能够根据当前系统负载和/或电源提高或降低 CPU 频率。
- 显示电源管理信号介绍了如何在指定的不活动时间间隔后自动关闭笔记本电脑屏幕（不是显示屏保而是熄屏）。
- 无线网络配置提供了关于如何配置无线网络的信息。
- Keyboard input|键盘输入]] 提供了关于笔记本上的功能键的配置说明。
- acpid 是一个用于提供 ACPI 事件的灵活且可扩展的守护程序。

型号相关页面

- 参考 Category:Laptops 和它的子分类来获得有关特定型号或厂商笔记本的指南。
- ThinkPad 笔记本的电池调校，请参考 TLP 和 tp_smapi
- ASUS Linux for a set of tools designed for recent ROG and TUF laptops.

外部资源

- http://www.linux-on-laptops.com/
- http://www.linlap.com/

分类：​

- 笔记本电脑

笔记本电脑
添加话题