我的電腦有 Intel 核顯和 NVIDIA 獨顯,平時使用核顯來顯示螢幕。我只有在少數時候需要 NVIDIA 驅動(僅用於科學計算),但由於這個驅動比較耗電,導致我的膝上型電腦續航降低,所以大部分情況下我想把它關閉掉。以下是我探索的方法。
測試電池電量指令碼
如果你需要測試電池電量和功率,可以使用以下指令碼。如果不需要,請略過這一步。(感謝通義千問)
#!/bin/bash
# 設定電池裝置路徑
BATTERY_PATH=/sys/class/power_supply/
# 日誌檔案路徑
LOG_FILE=~/battery_log.csv
# 記錄間隔時間(秒),例如5分鐘
INTERVAL=10
# 設定語言環境,確保輸出一致
export LANG=C
# 檢查日誌檔案是否存在,如果不存在則建立並新增標題行
if [ ! -f $LOG_FILE ]; then
echo "Timestamp,Percentage,Status" > $LOG_FILE
fi
# 捕獲中斷訊號,確保指令碼正常退出
trap exit_script SIGINT SIGTERM
exit_script() {
echo "Exiting script..."
exit
}
# 獲取電池裝置
batteries=$(upower -e | grep 'battery')
# 檢查是否有電池裝置
if [ -z "$batteries" ]; then
echo "No battery found."
exit 1
fi
# 迴圈記錄電量資訊
while true; do
# 獲取當前時間戳
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
# 獲取電量百分比
percentage=$(upower -i $batteries | grep 'energy-rate' | awk '{print $2}')
# 獲取充電狀態
state=$(upower -i $batteries | grep 'state' | awk '{print $2}')
# 記錄資料到日誌檔案
echo "$timestamp, $percentage, $state" >> $LOG_FILE
# 等待指定時間間隔
sleep $INTERVAL
done
該指令碼會把電池電量放在 ~/battery_log.csv
裡以便檢視。
安裝 secure boot(必須)
參考我的另一篇部落格https://www.cnblogs.com/KZ25T/p/18528695
安裝驅動
有些發行版自帶安裝器,也有些人使用 sudo apt install nvidia-driver
成功安裝,但我的都不可行。以下是我的安裝方法:
確保已禁用 nouveau 和 secure boot
lsmod | grep nouveau
不輸出任何內容,接著執行 echo $?
發現錯誤碼為 1,表示已禁用。
開機時應關閉 secure boot
,否則安裝驅動會出錯。如果你啟用了,請關機、關閉 secure boot 後重啟。
下載驅動
去官網下載:https://www.nvidia.com/en-us/drivers/unix,我選的是 Latest Production Branch Version
,本文發稿時版本為 550.135;如您有其他需求(比如核心版本過於老舊)可以根據情況下載其他版本的驅動。
下載後使用 chmod
賦予可執行許可權。
安裝原始碼樹
sudo apt install linux-headers-amd64
,如果你自己選擇使用了 rt 或 cloud 等核心(可以 ls /boot
看看有沒有這幾個字,而非常規核心),那麼需要下載對應的 headers 包。
停用桌面,進入命令列介面
sudo systemctl stop lightdm.service
,使用 gdm、sddm 等其他 dm 的請使用對應命令。按下 ctrl+alt+F1
輸入賬戶名登入。如果 F1 不能登入,可以嘗試 F2~F7 登入。
執行安裝程式
sudo /path/to/NVIDIA-xxx.run --no-opengl-files --no-x-check --no-nouveau-check
--no-opengl-files
加上這個以防迴圈登入。--no-x-check
不檢查 X 服務(似乎可以不加)--no-nouveau-check
不檢查 nouveau(似乎可以不加)
安裝時,視窗問是否安裝 32 位庫,我選的不安裝;問是否安裝 dkms,我選的安裝。
重啟測試
在關閉 secure boot 的情況下重啟,開機後執行 nvidia-smi
可以顯示正常顯示卡資訊,lsmod | grep nvidia
可以顯示已載入 NVIDIA 驅動,可以進行 GPU 加速計算。
再開啟 secure boot,開機後執行 nvidia-smi
沒有顯示卡資訊,lsmod | grep nvidia
沒有 NVIDIA 驅動。使用本文前面的指令碼測試用電量,和未安裝時一致。