纯Ubuntu 22.04安装RTX 3090:驱动、CUDA与常见坑点全攻略 这篇是给那些已经翻过不少教程、但还差临门一脚的朋友看的。网上关于Ubuntu 22.04和RTX 3090的安装教程十个里有八个是讲双系统剩下的默认你用的还是Windows多、Ubuntu偶尔进去跑两下。可偏偏有一批人机器到手就是纯Ubuntu不想要Windows也不想搞双系统。我就是这个路线走过来的踩过的坑比看过的教程都多把最关键的部分整理出来作为“补充教程”分享给大家。所谓的“补充”意思是下面的内容不打算从U盘刻录讲到分区格式化而是聚焦在那些主流教程容易跳过去、但对纯Ubuntu用户又特别要命的细节上。比如驱动为什么装上又丢了、Secure Boot怎么关、为什么nvidia-smi一开始能用重启就报错、有线网卡认不出来怎么办。适合谁看适合手里有一张3090或者类似Ampere架构显卡、打算从零装一台纯Ubuntu 22.04深度学习工作站的读者。如果你已经照着其他教程装了一半、卡在某个地方这篇也能帮你找到症结。1. 先搞清楚纯Ubuntu和双系统差的不只是少了个Windows1.1 双系统教程里那些“顺手一提”的隐藏前提大多数双系统教程之所以看起来很顺畅是因为它们有很多隐含条件比如Windows已经帮你把BIOS/UEFI设置调整过了、引导修复有现成工具、分区时有Windows那边留出来的空闲空间可以直接用。更关键的一点是双系统教程里几乎都会强调“时间问题”——Windows和Ubuntu的硬件时钟默认不同需要改注册表或者改timedatectl参数来消除8小时时差。这些东西在纯Ubuntu下统统不适用反而会让新手产生误区。比如你会看到教程让你装完系统后去修grub引导但纯Ubuntu下没有Windows引导冲突grub根本不需要修又比如教程让你小心别覆盖EFI分区但在纯Ubuntu安装中你只要盘是GPT、启动模式是UEFI安装器会自动处理一切。最典型的是“时间不同步”这个热搜问题在纯Ubuntu下压根不存在。真正的区别在另一个地方双系统安装时Windows系统里通常还留着显卡驱动、网卡驱动相关的固件设置一些硬件厂商的BIOS特性比如Resizable BAR、Above 4G Decoding往往会由Windows驱动顺带初始化好。纯Ubuntu一上来就是一张白纸所有硬件状态都由Linux接管一旦某处设置不对问题会被完全暴露出来。这也就是为什么很多人在双系统下没遇到过的毛病在纯Ubuntu下全跑出来了。1.2 纯单系统场景的核心差异与对策我自己的理解是纯Ubuntu场景下最核心的差异有三个。第一你没有了Windows作为“后路”。双系统用户可以在Windows下下载驱动、查询硬件型号、制作启动盘甚至远程帮另一台电脑解决问题。纯Ubuntu下所有操作都必须在系统内完成包括安装显卡驱动、处理网络问题这要求你把终端和apt的常用操作练熟。第二驱动冲突的来源变了。双系统教程会告诉你Windows下的NVIDIA驱动与Ubuntu互相覆盖、需要进入安全模式删除旧驱动但纯Ubuntu下完全不存在这套。真正要提防的是开源驱动nouveau和闭源驱动之间的冲突以及内核升级后DKMS模块没有重新编译导致驱动悄悄“消失”。这是一个很多人掉进去的坑显卡驱动装完时nvidia-smi一切正常过了一两个月内核更新重启后分辨率变差、nvidia-smi找不到命令这就是DKMS没有正常工作的典型症状。第三Secure Boot的决策被提前了。双系统教程通常会假设你在Windows里已经把Secure Boot关闭了或者至少Windows对它的兼容性做了适配。纯Ubuntu装机时安装器会问你是否启用第三方驱动和Secure Boot。如果这里贪方便直接选了开启Secure Boot后续装3090驱动时十有八九会遇到模块签名问题表现是驱动装完了、重启进系统黑屏或循环登录去查内核日志会发现NVIDIA模块被拒绝加载。这个环节必须在装系统前就想清楚。1.3 装机前的硬件排查网卡是个重灾区热搜词里有一条“ubuntu22.04 识别不对有线网卡”这个太真实了。NVIDIA显卡反而是最好处理的硬件网卡才是纯Ubuntu装机时最让你崩溃的东西。我在装过的机器里遇到过大几十次网络问题绝大多数都是Realtek网卡。建议你在装机前先用手机查清楚自己的主板或整机用的是哪颗网卡芯片方法也简单在Windows设备管理器里看“网络适配器”的硬件ID或者查主板的规格表。常见的有Realtek RTL8125BG2.5G有线网卡、RTL8168/8111千兆有线网卡以及Intel I225-V/I226-V。Intel网卡在Ubuntu 22.04下基本开箱即用Realtek则经常出现“插了网线但没反应”“能看到网卡但连不上”的情况。这不是硬件坏了而是固件或驱动没有自动加载。如果你的网卡是Realtek装机前最好先把对应驱动源码下载到U盘里。下面这些信息值得记下来RTL8125在Ubuntu 22.04默认内核里有时能识别但协商速率不对RTL8111系列在某些主板上有节能导致断连的问题常见的无线网卡RTL8852BE更是臭名昭著Ubuntu 22.04原生不支持必须额外装驱动。所以纯Ubuntu装机的第一步不是装显卡驱动而是先搞定网络。2. 系统安装的几个关键决定别急着一直按回车2.1 镜像选择与启动盘制作细节Ubuntu 22.04的镜像下载没有太多花样认准官方镜像站就行。需要留意的是版本后缀22.04.3和22.04.4这些后续更新版都整合了大量硬件驱动补丁对3090这种新卡更友好建议直接下载当日最新维护版本不要追老版本的初版ISO。如果你用的是国内网络直接从官方镜像站下载可能比较慢找大学镜像站或者网易、阿里的镜像站下载是正常操作注意校验SHA256和你下载到的文件一致就行。启动盘制作方面Windows环境下很多人用Rufus在纯Ubuntu环境下也可以用系统自带的“启动盘创建器”或者dd命令直接写入U盘。我自己的习惯是用dd命令简单粗暴但这里要提醒一个细节用dd写完U盘后Windows会提示“需要格式化才能使用”这是正常的别慌。U盘最好用USB 2.0的虽然写入时间长一点但兼容性远胜USB 3.0的U盘尤其是老主板USB 3.0的U盘在引导时容易莫名卡死。进入安装界面之后安装器会让你选择“最小安装”还是“正常安装”这里不用太纠结。真正要注意的是安装过程中连不联网。纯Ubuntu装机建议保持联网状态因为安装器会在过程中下载语言包、第三方驱动更新这和双系统安装场景稍有不同联网安装的完成度更高。但如果你的网卡还没正常工作也可以选择不联网安装先把系统装好再回头折腾网络这样反而更快。2.2 安装器里的两个容易被忽视的选项安装过程中有两个选项双系统教程几乎不会重点讲但在纯Ubuntu下影响很大。一个是“为图形硬件安装第三方软件”。这个选项在安装界面里被翻译得比较隐晦实际干的事情是帮你安装NVIDIA专有驱动和MP3解码等媒体编解码器。我的建议是如果你用的是3090这个选项可以选上让它先装一个基础驱动保证系统能正常进桌面。但要注意安装器装的那个驱动版本通常很老它只能保证你进系统时不会花屏、不会黑屏后面还是需要另外更新到新版本驱动。如果不选这个选项默认用nouveau开源驱动系统也能启动3090也能显示桌面但经常会有风扇不转、显卡满载运行、休眠唤醒黑屏等小毛病不建议。另一个是“擦除整个磁盘并安装Ubuntu”。这个选项在双系统教程里被描述得非常吓人但在纯Ubuntu场景下这是最省心的选择。只要你已经确认不需要保留磁盘上任何旧数据直接选它就行不需要手动分EFI分区、不需要设置swap大小安装器会按照默认的LVM方案处理好一切。如果你确实需要自定义分区建议只改一个点挂载点根目录的大小和/home是否独立其他保持默认。认准这个方向后装机过程能节省至少半小时的纠结时间。2.3 Secure Boot必须在装系统前决定Secure Boot是纯Ubuntu装3090驱动最大的拦路虎这个问题在双系统教程里很少会被重点讲因为Windows生态对Secure Boot支持得很好很多Windows机器默认开着Secure Boot也没事。但在纯Ubuntu下如果你开着Secure Boot后面装NVIDIA闭源驱动时就会遇到模块签名校验失败。装Ubuntu系统时安装器会弹出一个“启用Secure Boot”的可选项并让你设置一个MOK密码Machine Owner Key。很多新手看到“安全”“加密”这样的词就会觉得开着更好但实际上如果不开这个选项后面清净得多。我个人建议除非这台机器完全不装NVIDIA闭源驱动否则请直接关闭Secure Boot最简单的方法是在主板BIOS里找到Secure Boot选项设为Disabled。如果你装完系统才发现Secure Boot是开启的也先别急后面驱动部分我会说怎么处理MOK签名流程。判断Secure Boot当前状态的命令是mokutil --sb-state如果输出是SecureBoot enabled说明还开着输出SecureBoot disabled才是关了。这张验证命令一定要记好它是很多驱动问题排错的第一步。2.4 进入系统后最早要做的三件事系统装好、重启进入桌面后不要急着装CUDA或者显卡驱动先把基础收拾好。我每次装完系统做的三件事是固定的。第一件事是换apt源。Ubuntu默认的软件源服务器在境外国内机器更新速度感人。把/etc/apt/sources.list里的源地址换成国内镜像站这是装机后最优先的操作。具体格式不同版本略有差异22.04的源文件在/etc/apt/sources.list和/etc/apt/sources.list.d/ubuntu.sources里替换成镜像站的地址即可。第二件事是完整执行一遍更新sudo apt update sudo apt upgrade -y很多教程急着让你装CUDA结果系统本身的内核和驱动基础没更新后面一堆莫名其妙的兼容问题。先升级系统固件、安全补丁、内核模块重启一次确保系统处于干净稳定的状态。第三件事是把系统备份的快照机制理解清楚。Ubuntu 22.04默认安装时用的是LVM加分区方案自带了TIME-SHIFT快照支持当然工具要自己装apt装软件前系统也会自动创建快照。很多人不知道这一点结果某次操作把系统搞崩了只能重装。其实apt安装重大软件包前系统会在/var/crash或timeshift快照目录里留下恢复点出问题时能用启动菜单里的“高级选项”进入恢复模式。知道有这么回事遇到系统起不来的时候会从容很多。3. 3090驱动三板斧方案选型和安装实操3.1 三种装法横向对比网上关于NVIDIA驱动的安装方法五花八门但本质上就三类。第一种是apt安装对应命令nvidia-driver-XXX和ubuntu-drivers。优点是简单软件包由发行版维护和系统集成度高内核更新时自动通过DKMS重编译驱动安全性好。缺点是版本往往滞后比如Ubuntu 22.04的软件源里默认是535或550分支相比NVIDIA官网的最新稳定版会旧一些但对3090来说绰绰有余。第二种是NVIDIA官网下载.run安装包对应的是手动运行安装脚本。优点是能装到官网最新版本比如570或575还能自定义安装选项。缺点是需要自己处理所有依赖比如GCC版本、内核头文件、DKMS而且每次内核更新都可能需要重新编译非常容易翻车。第三种是Conda或者pip安装时顺带装驱动其实不是真正的“装驱动”它只是调用了显卡的CUDA能力驱动必须已经存在于系统里。很多深度学习用户会误以为pip install torch就能把驱动也装好这是错误认知。对我的绝大多数装机场景来说建议顺序是先试apt方案不行再试官网run文件方案。这也符合“稳定优先”的装机原则。3.2 版本怎么选3090的Ampere架构与驱动分支3090用的是Ampere架构GPU代号GA102算力版本是sm_86。这意味着它需要NVIDIA驱动支持Ampere架构太老的驱动驱动不了它。其实只要是470及以上的驱动都能完整支持3090后面再新版本都是兼容性增强和性能优化。在Ubuntu 22.04下用apt装驱动非常省事一条命令看看系统推荐的版本ubuntu-drivers devices这个命令会列出当前检测到的显卡和推荐安装的驱动版本输出中会看到类似nvidia-driver-550recommended的字样。直接装推荐版本就行。如果你的risibility排序强迫症犯了想用较新的驱动也可以在命令里指定分支。不过我的经验是服务器跑深度学习任务驱动稳定比版本新更重要。3090配合550分支驱动非常成熟这是一个很稳的选择。如果你需要特定CUDA版本对驱动的兼容参照NVIDIA官方的CUDA和驱动兼容对照表即可一般只要驱动大于等于基础版本就行。3.3 实操步骤禁用nouveau到验证驱动不管用哪种方式装NVIDIA闭源驱动第一步都是禁用系统自带的nouveau开源驱动。不然两个驱动打架结果就是花屏、黑屏或者循环登录。在Ubuntu 22.04下这一步需要在modprobe配置里加上黑名单。先创建文件/etc/modprobe.d/blacklist-nouveau.confblacklist nouveau options nouveau modeset0然后更新initramfs内核镜像sudo update-initramfs -u这一步执行完后需要重启重启后验证nouveau是否已经被禁用lsmod | grep nouveau如果没有任何输出说明禁用成功。如果还有输出检查配置文件是否写入正确再重试。这个步骤千万不能跳过装完驱动后发现黑屏再来排查浪费的时间够你重装一次系统了。之后安装依赖sudo apt install gcc make dkms libelf-devdkms尤其重要它负责在内核升级后自动重建NVIDIA模块。如果你用第7个小节里提到的apt安装驱动dkms是自动集成的但如果用官网.run包安装记得在安装脚本里选择“Install DKMS”或等安装后手动确认dkms状态。接下来执行apt安装以550分支为例sudo apt install nvidia-driver-550安装完成后重启然后运行nvidia-smi看到类似下面的输出就是成功了--------------------------------------------------------------------------------------- | NVIDIA-SMI 550.54.15 Driver Version: 550.54.15 CUDA Version: 12.4 |这里有个关键提示nvidia-smi输出里的“CUDA Version”指的是当前驱动所支持的最高CUDA版本不代表你已经装好了CUDA Toolkit它们两个是不同层面的事。后面装CUDA Toolkit那部分我还会展开讲。3.4 runfile安装与内核头文件的坑用apt装驱动很省心但偶尔会遇到软件源里没有较新版本或者你想装NVIDIA官网的最新正式版驱动这时就只能用run文件安装法。这个方式比apt坑多得多最容易翻车的点就是内核头文件和GCC版本不匹配。NVIDIA的runfile在编译内核模块时需要当前运行内核对应的headers包。Ubuntu 22.04下要先确认uname -r sudo apt install linux-headers-$(uname -r)然后到NVIDIA官网下载对应驱动安装文件给文件加执行权限并运行chmod x NVIDIA-Linux-x86_64-550.54.15.run sudo ./NVIDIA-Linux-x86_64-550.54.15.run安装过程中会问你是否注册DKMS这里务必选是。还会问是否要更新Xorg配置文件这个也选是。完成后重启。如果你发现驱动装完、内核更新后nvidia-smi没了十个里有九个是DKMS没注册成功。检查方式dkms status正常会看到类似nvidia/550.54.15, 6.8.0-45-generic, x86_64: installed这样的输出。如果状态不是installed重新执行一遍sudo dkms autoinstall这个操作要保持不要偷懒。4. CUDA Toolkit与cuDNN装对版本比装新版更重要4.1 为什么别用apt install cuda一整圈看下来你会发现装CUDA Toolkit才是真正的分水岭。很多新手会在Ubuntu里直接敲sudo apt install cuda这个命令确实能装上CUDA但版本很旧而且会把所有CUDA组件一股脑塞进系统安装路径又不是标准的/usr/local/cuda后续配置环境变量很容易出错。更麻烦的是apt源里的CUDA版本往往和最新PyTorch不匹配可能导致你的PyTorch无法调用CUDA。正确做法是到NVIDIA的CUDA Toolkit官方下载页面选择对应操作系统和架构拿到deb的仓库安装命令。在22.04下安装CUDA 12.4的步骤大致是wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt update sudo apt install cuda-toolkit-12-4推荐用deb仓库方式安装而不是下载run文件。deb方式会把CUDA Toolkit和驱动依赖分开管理环境变量配置清晰和系统包管理集成也好。它需要新增的cuda-keyring里的GPG密钥来验证软件包这一步不能落否则apt update会报公共密钥错误。4.2 deb(local)安装法的完整流程上面这段命令执行的本质是把官方CUDA仓库地址加入本地的apt源列表然后通过apt来安装。这种方式适合绝大多数人。安装完成后CUDA Toolkit的实际安装路径是/usr/local/cuda-12.4同时会有一个软链接/usr/local/cuda指向当前版本。这样设计的好处是如果你之后装了新版本CUDA只需把软链接切过来不需要改动系统里的其他软件。检查是否装好用这个命令ls -l /usr/local/cuda安装完成后还有一个必须操作是写环境变量。我建议写到/etc/profile.d/目录下创建一个cuda.sh文件而不是塞进~/.bashrc。区别在于写到/etc/profile.d里的对全局所有用户生效后面你用其他账户跑训练任务时不需要重复配置。执行sudo nano /etc/profile.d/cuda.sh文件内容export PATH/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda/lib64:$LD_LIBRARY_PATH然后source或者注销重进运行nvcc -V看到类似Cuda compilation tools, release 12.4, V12.4.xx的输出CUDA Toolkit就绪。4.3 cuDNN的两种安装方式cuDNN是深度学习推理和训练加速的重要组件对PyTorch这类框架影响很大不装的话很多模型根本跑不起来。NVIDIA现在推荐用deb包安装cuDNN但那个安装过程依赖CUDA仓库的签名密钥对新手不太友好。这里分享一个更简单、我在多台机器上验证过的办法直接从NVIDIA官网下载cuDNN的release tar包然后手动把文件拷贝到CUDA目录里。具体操作流程是下载cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz解压后进入目录执行以下两条拷贝命令sudo cp -P include/cudnn*.h /usr/local/cuda/include/ sudo cp -P lib/libcudnn* /usr/local/cuda/lib64/然后刷新动态链接库缓存sudo ldconfig这个办法的好处是简单直接不用处理复杂的依赖也不会污染系统其他部件。缺点是你自己要注意版本匹配cuDNN版本号和你的CUDA版本号需要对应上。我的经验是CUDA 12.x配cuDNN 8.9.x是最稳的组合PyTorch官方也基本沿这条线测试。5. 深度学习日常环境conda、PyTorch顺带把VS Code和PlatformIO装好5.1 Miniconda安装与换源显卡驱动和CUDA Toolkit都搞定后基础就算打完了接下来搭建日常开发环境。深度学习用户基本离不开Conda我推荐装Miniconda而不是Anaconda原因很简单Anaconda预装了一堆你用不上的包而Miniconda更清爽占空间小、启动快。安装步骤wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh安装过程的交互提示一路yes最后它会问是否初始化conda选yes。装完后激活一下source ~/.bashrcconda装好之后建议把下载源换成国内镜像不然创建一个环境要等半天。这里也有一个隐藏技巧不要只换conda源pip源也要换因为你在conda环境里用pip安装PyTorch时默认走的还是官方源。两个源都换成国内镜像站后整个安装体验会顺畅非常多。5.2 PyTorch安装时如何判断该用哪个CUDA版本换完源后就到PyTorch这关。这里有个很常见的误区很多教程直接让pip install torch结果装的是CPU版PyTorch跑起来才发现根本没有调用GPU。正确操作是去PyTorch官网页面根据自己的CUDA版本选择对应的安装命令。3090对应的CUDA版本怎么判断我建议直接看你的驱动版本和CUDA Toolkit版本。比如驱动550支持的CUDA可以到12.4那就可以放心装cu121或者cu124的PyTorch。如果决定稳妥起见装CUDA 12.1对应的PyTorch版本也可以因为PyTorch的编译版本通常向下兼容cu121版本跑在驱动支持CUDA 12.4的环境下完全没问题。以安装PyTorch 2.x CUDA 12.1为例命令类似pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121装完不要急着跑训练先跑一段验证脚本确保PyTorch真的能看到GPUpython -c import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0)); print(torch.cuda.get_device_capability(0))如果输出True、NVIDIA GeForce RTX 3090、(8, 0)说明环境完全就绪。这里get_device_capability输出(8,0)对应的就是Ampere架构sm_86这也是我看很多人在论坛问“为什么我的3090算力显示是8.0”的原因其实是正常的。5.3 VS Code与PlatformIO在22.04下的常见问题除了深度学习框架日常开发还需要一个好用的编辑器。VS Code在Ubuntu 22.04下安装挺方便下载deb包后sudo dpkg -i安装就行。但有一个常见问题就是Ubuntu 22.04基于GTK的界面显示毛病比如窗口菜单栏文字发虚、终端偶发卡顿这个在Wayland会话下更明显。如果遇到我建议在登录界面把会话切到“Ubuntu on Xorg”体验会顺不少。热搜词里还有一个“vscode platformio ubuntu22.04”这是嵌入式开发里很常见的组合。PlatformIO的安装和VS Code在Ubuntu下有个历史遗留问题PlatformIO插件需要依赖Python3的pyserial和esptool等包有时候装完插件但无法创建项目报错信息常常是Python环境路径不对。解法是让PlatformIO使用系统全局Python环境而不是VS Code内置的Python解释器在PlatformIO插件的设置项里指定python.executable为/usr/bin/python3即可。这个问题在纯Ubuntu环境比双系统环境更容易碰到因为双系统下Windows端往往已经装好了驱动和串口工具Ubuntu这边反而不小心被忽略了。6. 挖坑排雷实录纯系统下最常见的六大问题6.1 登录界面死循环和黑屏装完驱动重启后进不了桌面卡在登录界面转圈或者输完密码又闪回登录界面这是NVIDIA驱动安装最常见的故障没有之一。原因大同小异无非是nouveau没禁干净、NVIDIA驱动与当前内核头文件不匹配、Secure Boot拦了模块加载这三个其中之一。排查顺序建议从最简单的开始。先按CtrlAltF2进入TTY终端用你的用户名密码登录。在TTY里看一下日志cat /var/log/Xorg.0.log | grep -i nvidia cat /var/log/Xorg.0.log | grep -i error如果看到no devices detected或者Failed to load module nvidia基本就是驱动没加载成功。如果看到module ABI version mismatch等字样说明驱动版本与当前内核模块不一致需要重新编译安装驱动。从TTY里重新安装驱动或卸载驱动后回到桌面常用操作是sudo apt purge nvidia-* sudo apt autoremove sudo reboot回到基础驱动状态后再检查上面几个关键点重新按流程装一遍驱动。6.2 nvidia-smi报错“NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver”这个问题在重启后随机出现重启一次好一次坏非常折磨人。核心原因基本是一条驱动编译出来的内核模块与当前运行的内核版本不匹配。大多数人不知道的是Ubuntu 22.04自动更新内核时NVIDIA驱动模块需要重新编译这个过程由DKMS完成。如果dkms没装或者驱动安装时没有注册DKMS那么内核一更新驱动模块就默默失效了但系统自身不会提示任何错误。解决方式是重新注册或者手动执行sudo dkms autoinstall sudo modprobe nvidia如果modprobe报错说明模块和内核确实对不上这时用apt重装一遍nvidia-driver-550是最快的方式。说实话这个坑我踩过无数次后来我学乖了每次apt upgrade升级后都会顺手跑一次dkms status确认关键模块状态。6.3 有线网卡插线没反应或速率不对回到文章开头提到的网卡问题。Ubuntu 22.04下许多Realtek有线网卡驱动虽然已经进入内核主线但存在两个典型问题一是识别不了网卡设备lspci里能看到设备编号但没有对应驱动绑定二是插上网线后协商速率只有百兆而不是该有的千兆或2.5G。先看网络设备状态ip link show lspci | grep -i ethernet如果看到芯片型号再去确认内核有没有自动加载对应模块lsmod | grep r8169如果是RTL8125系列Ubuntu 22.04默认用r8169驱动有时只能识别但协商速率不对更稳定的是安装Realtek官方提供的r8168驱动源码自己编译安装。源码包一般在Realtek官网能下载到编译依赖gcc make和内核头文件编译安装命令一般是make clean modules sudo make install这里也提醒一句安装第三方网卡驱动前最好把Ubuntu自带的r8169模块禁用掉通过/etc/modprobe.d/blacklist.conf加一行blacklist r8169就能实现。不然两个驱动同时存在反而会冲突导致彻底断网。这类问题排查时最容易忽视的就是“驱动冲突”宁可只留一个驱动也不要两个都存在。6.4 风扇狂转、待机功耗高、显卡温度下不来3090装完驱动后如果没有设置好电源管理可能会出现这样的现象桌面什么都不干显卡风扇却呼呼转功耗甚至在50W以上。这个在很多深度学习工作站上非常普遍原因是NVIDIA默认没有开启MIG和电源管理持久模式显卡在桌面环境下也会自动把显存频率拉起来。设置持久模式sudo nvidia-smi -pm 1这个命令让驱动后台持续运行避免每次调用都重新初始化。另外建议把电源模式设置成最高性能还是自适应根据自己的使用场景来定。如果只做开发调试、不是长时间训练模型用自适应模式就好。如果是专门跑训练的机器开机时自动设置sudo nvidia-smi -pl 350把功耗限制设在3090的默认350W避免瞬时功耗过高导致系统不稳。当然3090本身功耗墙出厂就是350W这个命令更多是防止某些主板供电不稳定时的瞬时峰值。6.5 一体机和笔记本的混合显卡问题只要你不是台式机而是笔记本或者一体机大概率会遇到混合显卡的问题机器既有Intel核显又有NVIDIA独显。纯Ubuntu系统下默认的显示输出很可能走的是Intel核显NVIDIA独显则变成了仅计算设备或者反过来。检查当前正在用的GPU渲染设备glxinfo | grep OpenGL renderer如果没有装glxinfo先sudo apt install mesa-utils。如果输出是NVIDIA说明系统正在用独显输出一切正常如果是Intel或llvmpipe说明独显没有作为显示设备参与工作。深度学习训练其实不依赖显示输出就算系统显示走核显PyTorch照样能调用独显做计算所以“显示器接在哪个口”不影响训练。但如果你想在笔记本上玩游戏或者做图形工作需要到NVIDIA X Server Settings里切换PRIME配置文件为NVIDIA Performance Mode。这些在台式机上完全不用管越少一个变量系统越稳定。6.6 关于双系统时间问题的最后叮嘱虽然这篇讲的是纯Ubuntu但周围经常有人问我“之前装了双系统后来删了Windows现在Ubuntu时间还是不对怎么办”。如果你经历过这个场景大概率是之前双系统时把Ubuntu的硬件时钟改成了UTC时间模式后来Windows系统被删了而BIOS的实时时钟还是按本地时间存储的导致每次开机时间都会跑偏。纯Ubuntu系统只需一个命令恢复正常sudo timedatectl set-local-rtc 0然后手动校准一次时间。这也是纯Ubuntu相比双系统省心的又一个例子——没有Windows那边的时间约定干扰系统维护起来逻辑更统一。写在最后的实操体会回头看看装纯Ubuntu加3090这台机器真正难的从来不是显卡驱动本身而是上游一堆看起来“小事一桩”的系统配置。网卡驱动、Secure Boot、内核头文件、DKMS、conda源、CUDA版本匹配每一环拧不紧后面都会还债。我在实际安装过程中最大的一个转变是以前喜欢把驱动、CUDA、PyTorch全部追到最新版后来发现稳定压倒一切。Ubuntu 22.04配550驱动、CUDA 12.4、PyTorch 2.x这个组合我装了很多台机器都没有中途翻车过。如果这篇补充教程能帮你少走几次弯路那这些踩坑记录就算没白写。