RTX 3090 配 Ubuntu 22.04,听起来不外乎是插个 U 盘、点几下鼠标的事。可真到实操那天你才会发现,光"NVIDIA 驱动没装上导致黑屏"一个问题就够你卡一下午。更别提很多人先被双系统折磨——grub invalid signature、Windows 和 Linux 时间差 8 小时、卸载其中一个系统后引导直接报废,折腾到崩溃,最后索性全盘格式化,老老实实走纯 Ubuntu 路线。这篇就是给准备上 3090、又打定主意直接装"纯 Ubuntu(不是双系统)"的朋友写的补充教程。重点不是复述官方安装步骤,而是把那些"教程里不会写"的细节捋清楚:启动盘怎么做才不踩坑、BIOS 哪几个开关必须动、分区怎么划后续最省心、3090 驱动选哪种方式装最稳、CUDA 环境怎么配能一次通过。
适合谁看?准备用 3090 或相近 Ampere 架构显卡跑深度学习、AI 绘图、科学计算的开发者;被双系统折腾到崩溃想转纯 Linux 的玩家;以及装完 Ubuntu 22.04 之后驱动一直调不好的同学。下面所有操作我都按自己实测过的路径来写,不绕弯子。
1. 为什么我最终选了纯Ubuntu而不是双系统
1.1 双系统折腾的本质问题
先回答为什么标题要特意强调"纯 Ubuntu,不是双系统"。我处理过的、以及在网上搜到的高频双系统问题,基本绕不开这几类:
- 开机卡在 grub invalid signature,直接进不了引导界面,一脸懵;
- Windows 与 Ubuntu 时间互相错乱,一个把硬件时间当本地时间、一个当 UTC,永远差 8 小时;
- 想改 grub 启动界面,一个参数写错,引导全毁;
- 装完双系统后发现自己 90% 时间还在 Windows 里干活,Linux 分区白白占了几百 GB,卸载还麻烦。
这些问题的共同根源只有一个:两套操作系统共享同一块物理磁盘,引导、时间、休眠、分区全部纠缠在一起。你永远不知道哪一次系统升级,会把另一个系统的引导顶掉。我在实际维修和帮朋友装机的过程中,见过太多这种"双系统后遗症"了。
1.2 装纯Ubuntu之前必须确认的三件事
决定全盘装纯 Ubuntu 之前,先确认三件事,别等装完再后悔。
第一,你的工作流是否依赖 Linux 生态。跑 Python、CUDA、Docker、ROS、嵌入式编译(比如 RK3566 构建系统镜像、MicroROS),或者做单片机开发配 VSCode 和 PlatformIO,这些场景下纯 Ubuntu 会让环境干净很多。Windows 下不是不能做,但依赖冲突、路径分隔符、串口权限这类问题会频繁打断你。如果你主力就是这些开发任务,纯 Linux 反而是省时间的选择。
第二,显卡用途偏重计算还是娱乐。3090 用户里大部分是冲着深度学习和渲染去的,纯 Linux 完全够用;如果你还指望在 Linux 下打 Steam 游戏,Proton 兼容层能跑大部分单机游戏,但个别反作弊游戏不行。想清楚这一点再决定要不要留 Windows,别装完又后悔。
第三,数据备份方案。全盘格式化前,把重要资料拷到移动硬盘或 NAS。这一步不是技术问题,是心态问题。我见过太多人嘴上说"没什么重要数据",等 SSH 私钥没了才拍大腿。浏览器书签、密钥、代码仓库,都顺手导出或推送到远端,十分钟的事。
2. 安装前的准备:启动盘、BIOS与硬件检查
2.1 制作启动U盘的避坑指南
Ubuntu 22.04 镜像从官网下载,文件名类似 ubuntu-22.04.x-desktop-amd64.iso,建议直接下桌面版(Desktop),服务器版没有图形安装器,对新手不友好。
写入 U 盘推荐两种工具:
- Windows 下用 Rufus:选择 GPT 分区方案 + UEFI 目标,写入模式选"DD 镜像"而不是"ISO 镜像"。很多人装完进不了引导,就是栽在这一步——Rufus 默认 ISO 模式会把 U 盘做成另一种格式,某些主板上死活引导不起来。实测下来 DD 模式最稳。
- Linux 或 macOS 下用 balenaEtcher:不用配置,选镜像、选 U 盘、Flash 完事。也可以直接 dd:sudo dd if=ubuntu-22.04.iso of=/dev/sdX bs=4M status=progress。注意这个命令会把 U 盘整个覆盖,千万别写错盘符。
U 盘容量 8GB 以上,USB 3.0 接口比 2.0 快很多,安装体验差别明显。有条件的话用固态 U 盘,整个安装过程能压缩到十分钟以内。
2.2 BIOS里的三个关键开关
进 BIOS(开机按 Del 或 F2)后,重点处理三个设置:
- 关闭 Secure Boot(安全启动)。默认开启时,Ubuntu 安装没问题,但后续装 NVIDIA 驱动会让内核模块的签名验证变得很折腾。虽然可以通过 MOK 注册密钥继续用,但新手建议直接关掉,省去一整类问题。
- 关闭 Fast Boot(快速启动)。这个选项会让主板跳过部分初始化,导致 U 盘引导不稳定,装完系统后还可能让部分硬件在 Linux 下不被识别。
- SATA 模式设为 AHCI。如果原来是 RAID 或 Intel RST,装 Ubuntu 时大概率识别不到硬盘。注意:Windows 系统在 RAID 模式下改 AHCI 会蓝屏,但纯 Ubuntu 机器不存在这个顾虑,这正是纯装的一个隐藏好处。
另外确认主板 BIOS 版本不要太老。3090 是 Ampere 架构的卡,个别老主板不更新 BIOS 的话,插上 3090 可能直接点不亮,这是硬件层面的坑,装系统之前先排除掉。
2.3 供电与硬件兼容性检查
3090 的峰值功耗能到 350W 以上,瞬时功耗甚至更高。电源建议额定 850W 起步,留足余量;供电接口上,非公版大多是 3 个 8-pin,公版则是 12-pin 转接,插之前确认每根线都插到底,否则开机负载一上来就容易黑屏重启。内存、CPU 这类常规配件基本不用担心,Ubuntu 22.04 对 Intel 12/13 代和 AMD Zen3/Zen4 的支持都已经很完善,这点比前几年的 Ubuntu 省心多了。
3. Ubuntu 22.04 安装全流程实录
3.1 磁盘分区怎么划最省心
安装向导走到"安装类型"时,选"手动分区"而不是默认的"清除整个磁盘"。手动分区的核心思路是让系统与数据分离,后续重装或升级不丢文件。我实测下来比较顺手的方案是这样:
| 分区 | 大小 | 格式 | 挂载点 | 说明 |
|---|---|---|---|---|
| /dev/sda1 | 512MB ~ 1GB | FAT32 | /boot/efi | EFI 系统分区,UEFI 引导必需 |
| /dev/sda2 | 100GB ~ 200GB | ext4 | / | 根分区,系统和软件都装这 |
| /dev/sda3 | 内存大小的 1~2 倍 | swap | swap | 休眠或内存溢出时兜底 |
| /dev/sda4 | 剩余空间 | ext4 | /home | 个人数据独立,重装不丢 |
如果你觉得 swap 分区占空间,也可以不分,改用 swapfile。装完系统后执行:
sudo fallocate -l 16G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab这样省去一个分区槽位,改大小也方便。但注意:如果后续要跑大模型训练、显存不够需要 CPU offload,swap 给 16~32GB 都不嫌多。深度学习场景下,swap 不够导致的 OOM 杀进程,比显存不够更让人崩溃。
3.2 安装过程中最容易忽略的五个细节
第一,安装类型页面有两个复选框:"为图形或无线硬件安装第三方软件"和"下载更新"。第一个强烈建议勾上,它会顺手装好部分网卡、显卡的开源驱动;第二个在网速慢时可以取消,装完再 apt 更新也一样。
第二,用户名和密码用英文。后续很多深度学习工具、Docker 容器对纯英文路径兼容性更好,中文用户名的家目录在部分工具里会出各种奇怪的编码问题。系统显示语言倒是可以选中文,不影响这个。
第三,建议在安装过程中就连接网络。纯 Ubuntu 装完后如果网卡驱动没起来,最坏情况会陷入"没网 → 没法装驱动 → 没法上网"的死循环。热词里那个"识别不对有线网卡"的求助,多半就是安装时没联网,装完才发现网卡没驱动。安装时联网至少能保证基础硬件包齐全。
第四,登录方式建议选"需要密码登录",不要图方便开自动登录。后续如果遇到驱动问题导致登录循环,自动登录会掩盖故障现象,不利于排查。
第五,到"选择镜像源"那一步,直接换成国内镜像。如果安装器没自动配好,装完第一件事就是手动换源,否则 apt 下载速度能让急性子摔键盘。
3.3 装完系统后的第一轮初始设置
登录进桌面后,按顺序做这几件事:
sudo apt update && sudo apt upgrade -y升级完重启,确认系统版本和内核:
lsb_release -a uname -r然后换清华或阿里镜像源。以清华源为例,编辑 /etc/apt/sources.list,把 deb 开头的行替换为镜像站地址。这一步能让后续 apt 安装快一个数量级,尤其是装的软件包多的时候。
再装上基础工具:
sudo apt install -y build-essential dkms git curl wget htop nvtopdkms 特别重要,后面内核升级要靠它自动重建 NVIDIA 驱动模块。少装它,你的驱动会在某次内核更新后悄悄失效,那种"明明什么都没动,驱动突然没了"的诡异问题,多半就是没装 dkms。
4. RTX 3090 驱动安装与CUDA环境搭建
4.1 3090 驱动版本选型逻辑
RTX 3090 的 Ampere 架构对应的驱动下限是 470 系列,但那是早期版本,现在直接用 535 或 550 系列更稳。理由:Ubuntu 22.04 的 apt 源里就能装到 535,和内核、桌面环境适配最稳;550 系列对新特性支持更好,但某些老 CUDA 工程对驱动版本敏感,升级前先看看自己项目的官方要求。
驱动版本和 CUDA 的关系,记住一句话就够了:驱动是向下兼容的,装新驱动不影响旧的 CUDA 应用;但 CUDA 工具包版本别比驱动支持的最低版本还旧,否则 nvcc 编译出来的程序可能跑不起来。
4.2 先把Nouveau关掉:纯Ubuntu最容易翻车的一步
Ubuntu 默认加载的是开源的 Nouveau 驱动,它和 NVIDIA 闭源驱动不能共存。很多人装完 NVIDIA 驱动后重启直接黑屏或卡登录界面,十有八九是 Nouveau 没屏蔽干净。
屏蔽方法:
sudo bash -c "echo -e 'blacklist nouveau\noptions nouveau modeset=0' > /etc/modprobe.d/blacklist-nvidia-nouveau.conf" sudo update-initramfs -u执行完,建议这次重启直接"关机再开机"而不是热重启,有些主板热重启仍会保留残留状态。进系统后确认:
lsmod | grep nouveau没有输出就说明屏蔽成功。
注意:屏蔽 Nouveau 之前,先确认你的系统里没有同时存在 NVIDIA 开源和闭源驱动的痕迹,否则后面排查会非常痛苦。最干净的状态是装完系统、升级完,还没动过任何显卡驱动时,就先把 Nouveau 关掉。
4.3 Secure Boot 与 MOK 签名流程
如果你没关 Secure Boot,装 NVIDIA 驱动时系统会提示设置 MOK(Machine Owner Key)密码。这不是报错,是引导层的签名流程:驱动装完并重启后,会进入一个蓝色的 MOK 管理界面,选 Enroll key 并输入刚才设置的密码,然后在"是否信任该密钥"里选 Yes。完成后才能正常加载 nvidia 模块。
但说句实在话:纯 Ubuntu 机器上,关掉 Secure Boot 是目前最省心的路径,除非你有跨系统的全盘加密需求。这也是我在 BIOS 部分让你直接关掉它的原因。用 MOK 不是不行,就是每次换内核、换驱动都可能要多签一次名,时间成本不可忽略。
4.4 三种驱动安装方式横向对比
| 方式 | 适用情况 | 优点 | 缺点 |
|---|---|---|---|
| sudo ubuntu-drivers install | 新手首选,自动选推荐版本 | 一条命令,适配系统 | 版本可能不是最新 |
| sudo apt install nvidia-driver-535 | 明确指定版本 | 版本可控,更新走 apt | 需先确认源里有该版本 |
| 官网 .run 安装包 | 需要特定新版本 | 版本最新,可控性强 | 需手动处理冲突、卸载旧驱动 |
我实测下来,Ubuntu 22.04 + 3090 用第一条最稳:
ubuntu-drivers devices sudo ubuntu-drivers install安装完重启,执行 nvidia-smi,应该能看到显卡信息、驱动版本和显存占用。如果输出的 CUDA 版本号和你预期不同,别急,那不是 CUDA 工具包,是驱动内置的运行时版本,和你要装的 CUDA Toolkit 是两回事。
注意:.run 安装包和 apt 安装的驱动不要混用,否则会出现驱动模块版本对不上的问题。想换安装方式前,先把旧驱动 purge 干净,再装新的。
4.5 CUDA、cuDNN 与 PyTorch 版本匹配
驱动装好之后,CUDA 环境有两种搭法。
第一种:直接在系统里装完整 CUDA 工具包。适合要自己编译 CUDA 代码、需要 nvcc 的人。从 NVIDIA 官网下载 .run 包安装,安装时去掉已装好的 Driver 组件,只选 CUDA Toolkit:
sudo sh cuda_12.1_*.run --toolkit --silent --override装完把 PATH 和 LD_LIBRARY_PATH 写进 ~/.bashrc。注意 gcc 版本要和 CUDA 要求的 gcc 匹配:Ubuntu 22.04 默认 gcc-11,CUDA 12.x 支持没问题;老版本 CUDA(比如 11.4)配 gcc-11 会报错,需要装 gcc-9/g++-9 并用 update-alternatives 切换。
第二种:不装完整工具包,靠 PyTorch 自带的 CUDA runtime。对绝大多数跑深度学习的人来说,这才是正解。因为 PyTorch 的 pip 包已经把 CUDA runtime 打进 wheel 里了,你只需要保证 NVIDIA 驱动版本高于 PyTorch 要求的 CUDA 版本就行:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121cuDNN 同理,只有少数写原生 CUDA Kernel 的场景需要单独装,普通训练和推理用 PyTorch 内置的实现就够了。这一点能帮你省掉大量版本冲突的麻烦,也是我在纯 Ubuntu 上跑了大半年才悟出来的经验。
4.6 验证GPU是否真的在工作
装完跑一遍完整验证:
nvidia-smi nvtop # 实时看显存、温度和利用率然后用 Python 验证 CUDA 是否可用。以 PyTorch 为例:
python3 -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0)); print(torch.cuda.get_device_properties(0).total_memory / 1024**3, 'GB')"输出 True 和 RTX 3090 型号名就说明环境通了。顺手跑一个矩阵乘法测试,确认不是只识别、不计算:
python3 -c "import torch; a=torch.randn(4000,4000).cuda(); b=torch.randn(4000,4000).cuda(); print((a@b).sum().item())"第一次跑会看到 GPU 风扇转起来、功耗上升,此时说明驱动和 CUDA 都在正常工作。当初我装完驱动后只看了 nvidia-smi 没做计算测试,结果第二天跑训练才发现 PyTorch 报 CUDA driver error,白白排查了半天。
5. 常见问题与排查技巧实录
5.1 开机黑屏:Nouveau没屏蔽干净或内核参数问题
黑屏是装 3090 驱动之后出现频率最高的故障。大多数情况是 Nouveau 残留。处理方法是启动时进 grub,在 quiet splash 后面临时加 nomodeset,先用基本显示模式进系统,然后重新执行一遍 4.2 节的屏蔽命令。
如果加了 nomodeset 能进系统但 nvidia-smi 报错,检查 /var/log/Xorg.0.log 和 /var/log/kern.log。另一个常见坑是:装完 .run 驱动之后又执行了 apt upgrade,新内核把旧的 nvidia 模块从 /lib/modules 里清掉了。这种场景下 dkms 的价值就体现出来了:
sudo dkms status sudo dkms install nvidia/535.xxx -k $(uname -r)这里还提醒一句:黑屏后不要第一反应重装系统。先按 Ctrl+Alt+F2 切到 TTY,用命令行排查一圈,大多数驱动问题都能远程修好,重装系统是下下策。
5.2 登录循环:Wayland与显示管理器冲突
另一种高频问题是能进登录界面,但输完密码又跳回登录页。Ubuntu 22.04 默认使用 Wayland,部分 NVIDIA 驱动版本下的 GNOME 在 Wayland 会话里会循环崩溃。解决思路分两步:
- 在登录界面点用户名后,看右下角有没有齿轮图标,切到 "Xorg"(或 "Ubuntu on Xorg")会话再登录,这一招能解决七成登录循环。
- 若是驱动加载失败导致的循环,Ctrl+Alt+F2 切到 TTY 终端,查看 ~/.xsession-errors 和 Xorg 相关日志定位具体原因。
驱动冲突时最省时的做法是彻底重装驱动:
sudo apt purge nvidia* -y sudo apt autoremove -y sudo apt install nvidia-driver-535 sudo reboot重装前把之前手动下载的 .run 包产生的残留也清干净,检查 /usr/local/cuda 是否存在旧软链接目录。purge 不干净就装新驱动,是我见过最容易造成"装完还是不行"的隐形杀手。
5.3 内核升级后驱动失效
这个问题在纯 Ubuntu 上尤其常见。Ubuntu 22.04 每两三个月更新一次内核,HWE 内核更频繁。每次升级完重启,如果驱动模块没有通过 dkms 重建,nvidia-smi 就会报 "Failed to initialize NVML"。
预防手段就是前面说的安装 dkms。若已经失效,按 5.1 的 dkms 命令重建即可,不需要重新安装驱动。
另外提醒一句:不要在新内核发布当天就急着升级。在论坛或群里观察两天,确认没人反馈 NVIDIA 驱动兼容性问题再升。这种"等等党"习惯能帮你避开大多数事故。我团队里一台 3090 机器,就是因为在内核发布当天升级,导致整个训练任务中断,教训深刻。
5.4 周边相关的其他小坑
装完系统后还有几个非显卡但高频的问题,这里一并提一下,因为这些和装显卡驱动其实经常一起出现:
- 无线网卡认不到或信号不稳定:Ubuntu 22.04 对 Intel 无线网卡支持很好,但如果是 Realtek 或联发科网卡,大概率要先装驱动。热词里那个"RK3566 构建系统没有 WiFi 驱动"就是这类问题。解决路径是先有线联网,再根据网卡型号 apt 安装对应固件包。
- 中文输入法:默认的 ibus 不好用的,直接装 fcitx5 或其它输入法 Linux 版,按官方文档配置环境变量即可。不需要在 ibus 上浪费时间调试,直接换框架是正解。
- 远程控制:装向日葵等远程工具时,如果提示缺依赖,先 sudo apt install -f 修复依赖再装。装了 NVIDIA 驱动后,远程桌面的编码性能会明显提升,3090 的硬件编码能力在远程串流场景下很吃香。
- 显存占用看不到:普通 htop 只能看内存,装 nvtop 才能看 GPU 的利用率、显存、温度,排查训练卡顿必备。没装 nvtop 之前,我以为系统卡是 CPU 的问题,装上后才发现是 GPU 显存被打满了。
5.5 排查命令速查表
| 场景 | 命令 |
|---|---|
| 查看显卡状态 | nvidia-smi |
| 查看GPU实时监控 | nvtop |
| 确认Nouveau是否残留 | lsmod | grep nouveau |
| 查看已加载NVIDIA模块 | lsmod | grep nvidia |
| 查看内核日志中NVIDIA相关信息 | dmesg | grep -i nvidia |
| 查看DKMS模块状态 | sudo dkms status |
| 查看Xorg日志尾部 | cat /var/log/Xorg.0.log | tail -50 |
这套命令从装完系统到日常使用,基本够用了。建议把这几个命令存成一个备忘录文件放在桌面,别等出问题时满世界找。
6. 最后的体会
回到开头那句话:3090 配 Ubuntu 22.04,本身不算难,难的是那些"教程里不会写"的细节。我个人在实际操作中的体会是,安装顺序上先关 BIOS 里的 Secure Boot、再做启动盘、再分区,看起来都是小事,但每一步省下来的排查时间都是按小时算的。驱动装完别急着跑大模型,先让自己在纯 Ubuntu 环境里正常用上几天,确认显卡、网络、输入法都稳定了,再往环境里装 CUDA、PyTorch 这些东西,出问题时排查范围会小很多。
另外,养成两个习惯会少踩很多坑:一是所有系统级改动(屏蔽 Nouveau、改 grub、换源)都先备份原文件,改崩了还能回滚;二是每次升级内核前后跑一遍 dkms status,让内核模块异常尽早暴露。最后再送一句:如果装驱动过程中卡住了,先搜报错原文,而不是重新再装一遍系统——我见过太多人因为一行日志没看,把系统重装了三次,其实只是内核头文件没装的问题。希望这份补充教程能让你一次装完、一次点亮。