直接给结论:首选 Ubuntu 22.04 LTS。
除非你有极其特殊的“历史包袱”(比如必须跑某些只支持 Python 3.8 且无法升级的老旧商业软件),否则在 2024 年及以后,Ubuntu 22.04 是更优解。
下面从驱动兼容性、内核特性、CUDA 生态和实际踩坑经验四个维度,把为什么选 22.04 讲清楚。
1. NVIDIA 驱动与内核版本的匹配度
这是最核心的考量因素。NVIDIA 闭源驱动对 Linux 内核版本非常敏感。
- Ubuntu 20.04:默认内核通常是 5.4 或 5.15(取决于 HWE 栈)。虽然稳定,但较老的内核意味着你很难用到最新的 PCIe 带宽优化、更好的电源管理策略以及针对新显卡架构(如 Ada Lovelace RTX 40 系列)的底层支持。
- Ubuntu 22.04:默认内核是 5.15,HWE 更新后可到 6.2+。更重要的是,NVIDIA 官方推荐的最新驱动(如 535.xx, 550.xx 系列)对 5.15 及以上内核的支持更加完善。如果你买的是 RTX 4090 或 A100/H100 等较新硬件,强行在 20.04 上安装最新驱动往往需要手动编译 DKMS,或者只能降级使用旧版驱动,这反而增加了维护成本和不稳定性。
2. CUDA Toolkit 与 PyTorch/TensorFlow 的版本迭代
深度学习框架更新极快,而它们对 CUDA 版本的依赖也日益严格。
- PyTorch 现状:目前主流版本(2.x)默认推荐 CUDA 11.8 或 12.1+。这些版本的预编译 wheel 包在较新的 glibc 环境下运行更顺畅。
- glibc 差异:Ubuntu 22.04 使用的是 glibc 2.35,而 20.04 是 2.31。很多现代 AI 库(如 xFormers, FlashAttention 的二进制依赖)开始倾向于基于更新的 glibc 编译。在 20.04 上,你可能会遇到
libstdc++.so.6或libc.so.6版本过低的报错,需要手动安装额外的兼容库,甚至出现动态链接库冲突导致训练中途崩溃。 - Docker 镜像支持:NVIDIA 官方 Docker 镜像(nvidia/cuda)现在主要维护基于 Ubuntu 22.04 (Jammy) 的基础镜像。如果你在容器化部署中混用 20.04,可能会发现拉取到的镜像层变多,或者需要自己折腾 base image,增加运维复杂度。
3. 硬件支持与长周期稳定性
- 新卡支持:如果你用的是 RTX 30/40 系列或 A100/A800/H800,22.04 的内核模块对这些卡的 ACPI 表、PCIe 配置空间解析更好。
- LTS 生命周期:两者都是 LTS,支持周期都很长(标准支持 5 年,ESM 更长)。但在社区活跃度上,22.04 已经过了初期的磨合期,现在的 bug 修复频率和第三方软件适配度远高于刚发布时的 20.04。
4. 什么情况下才考虑 Ubuntu 20.04?
只有以下几种极端情况,我才建议回退到 20.04:
- 遗留业务锁定:公司内部的某个核心推理服务或训练脚本,明确声明只支持 Python 3.8 及以下,且代码量巨大,重构成本极高。22.04 默认 Python 是 3.10,虽然可以装低版本,但环境隔离会更麻烦。
- 特定科研集群规范:你所在的实验室或超算中心统一规定所有节点必须为 20.04,为了保持环境一致性,不得不跟随。
- 极度老旧的专有软件:某些工业界专用的仿真软件或编译器,厂商明确表示不支持 5.15 以上内核。
实操建议
如果你决定用 22.04,为了避免常见的“驱动-内核-CUDA”三角坑,建议按以下步骤操作:
- 安装系统时:勾选 "Install third-party software for graphics and Wi-Fi hardware"(确保能自动加载闭源驱动)。
- 禁用 Nouveau:在安装 NVIDIA 驱动前,务必在
/etc/modprobe.d/blacklist-nouveau.conf中禁用开源驱动,并执行sudo update-initramfs -u。 - 驱动安装方式:
- 推荐:使用
ubuntu-drivers autoinstall或者去 NVIDIA 官网下载.run文件安装指定版本(如 535 或 550)。 - 不推荐:直接用
apt install nvidia-driver-xxx,因为 apt 源里的驱动版本可能滞后,导致无法发挥新卡性能。
- 推荐:使用
- CUDA 安装:
- 不要通过
apt安装 CUDA,容易版本混乱。 - 去 NVIDIA 开发者网站下载对应的
Runfile安装包,注意取消勾选 "Driver" 选项(因为你已经装了驱动),只安装 Toolkit 和 Samples。 - 配置环境变量
PATH和LD_LIBRARY_PATH,写入~/.bashrc。
- 不要通过
总结
对于绝大多数个人开发者、初创团队和企业用户,Ubuntu 22.04 是当前的最佳实践。它在内核对新硬件的支持、CUDA 生态的兼容性以及开发工具链的现代性上都优于 20.04。除非你有明确的反向约束,否则别回头。
云技术博客