云计算百科
云计算领域专业知识百科平台

NVIDIA 环境配置太难搞?保姆级教程助你 2 分钟搞定训练服务器驱动安装

大家好,我是极创工作室韩翔宇。

本文是 “从 0 开始的 AI 服务器管理教程” 系列的首篇文章。本文将带你回顾那些年我们踩过的坑,并通过一个完整的实战教程,带你使用开源项目 nvidia-driver-installer 一键脚本 来实现对 NVIDIA 驱动的自动化安装。


梦魇的开始:那些年我们踩过的坑

对于每一位踏入深度学习的开发者来说,在 Linux 系统上配置 NVIDIA 环境,往往是遇到的第一个“拦路虎”。

经典的 Nouveau 冲突报错

你是否也经历过这样的场景?

  • 系统默认存在 nouveau:首次安装驱动时会报错存在 nouveau,不得不手动创建 blacklist,并更新启动文件,重启之后再安装驱动
  • 系统更新内核掉驱动:系统更新后后 NVIDIA 驱动不可用,报错 NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
  • 驱动卸载重装卸不干净, nvidia-uninstall 常常卸不干净,最终导致系统崩溃,不得不重装操作系统

这些问题,在我每次配置新机器、更新系统、或者仅仅是想升级一下驱动时,都会轮番上演。在第 N 次被 NVIDIA 驱动安装过程整破防之后,我决定自己动手,撸一个脚本。

痛定思痛:需要一个怎样的工具?

经历了无数次重装和深夜 Debug 后,我列出了我心中理想解决方案的几个核心要求:

  • 自动化:它必须能自动检测我的系统环境(发行版、版本、架构)和 GPU 型号,并自动选择最合适的驱动版本
  • 智能:能自动处理 nouveau 和 Secure Boot 等复杂环境,尽量避免来来回回重启系统,而是一次性安装好驱动
  • 幂等性:我可以反复执行这个方案,而不用担心会搞坏已经配置好的环境;同时如果出现了意外造成安装中断,可以进行断点续装
  • 通用性:一次编写,到处运行。无论是在 Ubuntu、CentOS 还是 Fedora 上,都可以自动化完成驱动安装
  • 可靠性:安装要方便,卸载和回滚必须彻底,不能对系统造成任何污染,在系统更新后可以自动处理依赖和内核模块,确保更新系统仍能正常使用
  • 用户友好:需要提供一个用户友好的命令行交互命令,同时需要考虑批量化部署和在 CI/CD 环境或自动化脚本中使用
  • 于是,开源项目 nvidia-driver-installer 一键脚本 诞生了。经过不断地打磨和测试,这个最初为了解决我自己问题的脚本,逐渐变成了一套完整的工具集。 GitHub截图

    实战:现在的我如何部署环境

    如今,我的新机器部署流程被极大地简化了。只需要运行这个项目的主脚本,2 分钟即可完成驱动安装。

    NVIDIA-driver-installer 安装过程

    一键脚本

    # 下载脚本
    curl -sSL HTTPS://raw.githubusercontent.com/EM-GeekLab/nvidia-driver-installer/main/nvidia-install.sh -o nvidia-install.sh

    # 运行脚本
    sudo bash nvidia-install.sh

    该命令将通过一个可交互的安装向导,帮助您完成 NVIDIA 驱动的安装。同时,若您需要批量为多台服务器进行一键部署,您可以添加 -y 参数实现无人值守安装,-q 参数可以设置静默模式,避免产生输出:

    sudo bash nvidia-install.sh -y -q

    脚本支持更丰富的功能和配置,更多使用方式请看 GitHub 仓库的说明,或使用 bash nvidia-install.sh -h 进行查看

    国内加速访问

    同时我们考虑到了国内访问 GitHub 可能出现的问题,也提供了 Gitee 和 开放原子的代码仓:

    Gitee

    项目地址为:https://gitee.com/EM_GeekLab/nvidia-driver-installer,你可以使用下面的一键脚本进行安装:

    # 下载脚本
    curl -sSL https://gitee.com/EM_GeekLab/nvidia-driver-installer/raw/main/nvidia-install.sh -o nvidia-install.sh

    # 运行脚本
    sudo bash nvidia-install.sh

    开放原子 AtomGit

    项目地址为:https://atomgit.com/EM-GeekLab/nvidia-driver-installer


    Q&A 常见问题:

    在和社区的朋友交流时,我发现大家普遍关心以下几个问题,这里统一解答一下。

    Q1:如果我想更换驱动版本,或者安装后遇到问题(比如黑屏),该怎么办?

    这是这个项目最核心的优势之一。这个项目给我最大的安全感,来源于它的回滚机制。如果在安装后发现任何问题,或者仅仅是想换一个驱动版本,我不再需要重装系统。只需执行:

    sudo bash nvidia-install.sh –rollback

    脚本会像时光机一样,读取 rollback.list 文件,将系统状态恢复到运行安装程序之前的那一刻。这个命令会安全地卸载驱动、移除配置文件和软件源,远比手动 apt remove 或 dnf remove 彻底。

    回滚完成后,你可以重新运行安装脚本。如果想指定一个特定的驱动版本(例如 550),可以使用 -v 或 –version 参数:

    sudo bash nvidia-install.sh –version 550

    如果不指定版本号,脚本默认会从官方源中选择最新的稳定版。这个“先回滚,再重装”的模式,是处理驱动问题最稳妥、最高效的方式。

    Q2:我的服务器已经用其他方法(比如官方.run 文件)装好了驱动,可以直接换用这个脚本来管理吗?

    完全可以,并且这也是推荐的做法。脚本在设计之初就考虑到了这种“迁移”场景。你可以使用项目下的 nvidia-uninstall.sh 文件清理现有的环境。 在这里插入图片描述

    当然你也可以选择直接安装,当你直接运行 sudo bash nvidia-install.sh 时,脚本的第一步就是检查系统是否存在已安装的 NVIDIA 驱动。它能识别出是通过包管理器安装的,还是通过 .run 文件安装的。检测到现有驱动后,它会停下来,并给你几个选择,其中首选推荐的就是“卸载现有驱动后重新安装”。

    你只需要选择这个选项,脚本就会自动调用相应的卸载逻辑(比如执行 nvidia-uninstall 或者 apt purge),清理掉旧驱动,然后再用标准的包管理器方式为你安装新驱动。整个过程无缝衔接,帮你平稳过渡到更可靠的管理方式上来。

    Q3:安装时提示选择“开源(open)”和“专有(proprietary)”内核模块,我该怎么选?

    NVIDIA 从 R515 驱动版本开始,逐步开源了其部分内核模块。

    开源模块 是未来的趋势,由 NVIDIA 官方维护,社区可以审查代码,理论上与 Linux 内核的兼容性会更好。但它目前仅支持 Turing 架构(如 RTX 20 系)及更新的 GPU。如果检测到你的 GPU 支持的话,脚本默认会优先选择它。专有模块 是传统的闭源模块,对于 Maxwell 和 Pascal 架构(如 GTX 900/1000 系)等较旧的 GPU,这是唯一选择。

    在这里插入图片描述

    脚本会自动检测并推荐最合适的内核模块。如果你的 GPU 够新(RTX 20 系及以后),默认使用 open 即可。如果你的 GPU 在使用 open 模块时遇到奇怪的问题,也可以通过 -m proprietary 参数强制使用专有模块。

    Q4:脚本执行到一半失败了怎么办?–rollback 会不会也不管用?

    别担心,脚本的鲁棒性比你想象的要好。

    如果脚本因为网络等原因意外中断,它会在 /var/lib/nvidia-installer/ 目录下留下状态文件。下次你重新运行同一个命令时,它会检测到中断状态,并询问你是否从上次失败的地方继续安装,而不需要从头再来。

    万一发生了非常罕见的情况,导致状态文件损坏或回滚失败,你还可以使用 –cleanup 参数。这个参数会强制清理脚本生成的各种状态和锁文件,让你能从一个干净的状态重新开始。

    当然万一出现了以上方案都不起作用的情况,欢迎提交一个 Issue 给我们,让我们一起把这个工具做的更好。

    Q5:能不能把 CUDA 也一起安装了?那个安起来也好麻烦!

    完全可以,仓库中有 CUDA 的一键安装脚本(cuda-install.sh)。在下一期文章中,我们也将详细讨论如何使用 CUDA 一键安装脚本来完成快速安装。此外还有对 NVIDIA-Driver-Toolkit 的一键安装支持哦~

    写在最后

    从最初为了解决个人工作中的痛点,到一个功能相对完善的自动化工具,nvidia-driver-installer 承载了我对“优雅的解决方案”的追求。我把它开源出来,希望能帮助更多像我一样,曾经或正在 NVIDIA 环境配置上挣扎的朋友。

    如果你也厌倦了重复和琐碎,不妨试试这个方案。它或许不能称之为完美的“标准答案”,但它确实是我迄今为止发现的,最高效、最可靠的解决路径。

    如果这个项目对您有所帮助,请帮我们点一个 GitHub ⭐ Star 并分享给更多的朋友吧!这将在我们提供更多一键安装脚本后提醒您~ 在这里插入图片描述

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » NVIDIA 环境配置太难搞?保姆级教程助你 2 分钟搞定训练服务器驱动安装
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!