Linux 操作系统安装 Nvidia GPU 驱动,并且方便地切换打开/关闭状态的方法
我的电脑有 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
安装驱动
安装驱动主要有以下几种方法:
-
有些发行版自带安装器,比如
ubuntu-drivers
,我不是 Ubuntu,不行 -
有些发行版可以用
sudo apt install nvidia-driver
,我执行之后也没成功。 -
后来我发现使用
sudo apt install nvidia-cuda-toolkit
可以成功安装计算而非显示驱动。 -
如果前三种你还用不了,可以尝试以下的方法:
确保已禁用 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 加速计算。拔掉电源,关闭其他程序,使用本文前面的脚本测试用电量,稳定后约为 8.5W;
再打开 secure boot,开机后运行 nvidia-smi
没有显卡信息,lsmod | grep nvidia
没有 NVIDIA 驱动。拔掉电源,关闭其他程序,使用本文前面的脚本测试用电量,稳定后约为 4.5W,续航约 10 小时。