筆記本電腦 - 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/

分類：​

- 筆記本電腦

筆記本電腦
新增話題