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

安装驱动

安装驱动主要有以下几种方法:

  1. 有些发行版自带安装器,比如 ubuntu-drivers,我不是 Ubuntu,不行

  2. 有些发行版可以用 sudo apt install nvidia-driver,我执行之后也没成功。

  3. 后来我发现使用 sudo apt install nvidia-cuda-toolkit 可以成功安装计算而非显示驱动。

  4. 如果前三种你还用不了,可以尝试以下的方法:

确保已禁用 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 小时。

posted @ 2024-11-25 12:59  KZ25T  阅读(5)  评论(0编辑  收藏  举报