惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
G
Google Developers Blog
H
Help Net Security
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
GbyAI
GbyAI
D
Docker
Hugging Face - Blog
Hugging Face - Blog
I
InfoQ
博客园 - 司徒正美
Last Week in AI
Last Week in AI
Microsoft Security Blog
Microsoft Security Blog
美团技术团队
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
NVIDIA环境配置太难搞?保姆级教程助你2分钟搞定训练服务器驱...
2025-08-11 · via 少数派

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

本文是 “从 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 一键脚本 诞生了。经过不断地打磨和测试,这个最初为了解决我自己问题的脚本,逐渐变成了一套完整的工具集。

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

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

一键脚本

# 下载脚本
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 removednf 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 并分享给更多的朋友吧!这将在我们提供更多一键安装脚本后提醒您~