前阵子晚上帮朋友装一台新机器,配置是 Z890M 主板、U7 265KF 处理器、RTX 5070 Ti 显卡,系统要求指定 Ubuntu 22.04.5。结果U盘引导刚进入 GRUB 菜单,一选“Install Ubuntu”,屏幕就直接黑了。风扇在转、电源灯亮着,但显示器没有任何信号。那会儿我就意识到,这注定不是一次“装上就完事”的安装,而是一条贯穿黑屏排查、网卡驱动、显卡驱动全流程的折腾路线。
这篇文章就是这次实战记录的完整复盘。如果你也准备在比较新的 Z890M 平台上使用旧版 Ubuntu 22.04.5,或者正在被“装完系统黑屏、网卡不识别、RTX 5070 Ti 驱动装不上”这些问题卡住,这篇应该能帮你省掉大量试错时间。文章的核心思路很简单:把黑屏问题拆成安装阶段、系统启动阶段、显卡驱动接管阶段分别处理,把网卡和显卡驱动全部通过源码/DKMS 方式手动接上,最后锁住内核版本,让这套老系统在新硬件上长期稳定跑。
1. 新平台装旧系统的动机:为什么顶着黑屏也非要用 22.04.5
很多人第一反应肯定是:为什么不是 Ubuntu 24.04 或者 25.04?都 2025 年了,新硬件装新系统不是应该顺理成章吗?有这个疑问很正常,但现实中确实存在一批人,环境被迫锁定在 Ubuntu 22.04.5,我这次就是典型的场景。
1.1 这台机器的尴尬程度
先看硬件层面。Z890M 是 Intel 800 系列芯片组里比较新的板子,搭配 U7 265KF(Arrow Lake-S 架构),显卡是 RTX 5070 Ti(Blackwell 架构)。这套组合放现在是妥妥的“新平台”,但 Ubuntu 22.04.5 默认内核是 5.15,发布于 2022 年。等于让一个两年前的内核去驱动两年后的硬件,尤其是显卡和网卡这种对驱动版本高度敏感的部件。
5.15 内核遇到 RTX 5070 Ti,基本就是“不认”。nouveau(NVIDIA 开源驱动)对 Blackwell 架构的支持非常不完善,初始化时很容易直接崩掉,表现就是黑屏。而 Z890M 常见的 Realtek RTL8125BG 2.5G 网卡,在 5.15 内核里也没有原生驱动模块,系统装完以后根本发现不了网卡。这两个问题叠加,让整个安装过程变得非常不顺。
1.2 什么样的人需要这条路线
我总结下来,坚持在 Z890M + U7 265KF + RTX 5070 Ti 上用 Ubuntu 22.04.5 的基本是下面这几类:
- 企业/实验室环境里,CUDA 工具链、ROS、EDA 软件等对系统版本有硬性要求,统一锁定在 22.04。
- 某些老项目的编译环境、glibc 版本、Python 版本已经在 22.04 上跑通,迁移成本高。
- 客户验收环境指定了 Ubuntu 22.04.5 LTS,不能随意换。
如果你是桌面用户、游戏玩家,或者只是尝鲜,那真的没必要走这条路。直接装 Ubuntu 24.04.2 LTS 或者 25.04,硬件兼容性好得多,网卡和显卡驱动的坑会少一半以上。但在必须锁死 22.04.5 的前提下,这套方案是可行的,而且只要按顺序处理,稳定性和性能都不会差。
1.3 开工前先看清现场风险
开始之前,我先列了一下可能踩的坑,后面也基本都踩到了:
| 风险点 | 主要原因 | 影响 |
|---|---|---|
| 安装引导黑屏 | kernel 5.15 下 nouveau/vesafb 无法正常初始化 Blackwell 显卡 | U盘引导、系统安装阶段直接黑屏 |
| 网卡不识别 | RTL8125BG 在 5.15 内核没有 r8125 模块 | 系统装完没有网络,无法直接 apt |
| 显卡驱动装不上 | RTX 5070 Ti 需要 NVIDIA 570 系列驱动,官方源和默认驱动都没有 | 分辨率异常、无法使用 CUDA、反复黑屏 |
| Secure Boot 拦截 | NVIDIA 官方 runfile 的第三方内核模块未签名 | 驱动明明装了,重启后却加载失败/黑屏 |
| 内核升级导致驱动丢失 | 网卡模块未注册 DKMS、显卡模块未注册 DKMS | apt upgrade 后网卡或显卡失效 |
这个清单基本决定了我后续的干活顺序:先解决引导阶段的“显示”问题,再解决系统内的“网络”问题,最后解决“显卡驱动”问题,全部搞定后再花时间做稳定性加固。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装阶段的黑屏现场:从 U 盘引导到桌面前的重重关卡
2.1 现象:风扇转了,屏幕却没有任何信号
我当时的完整现象是:开机进 BIOS 一切正常,选择 UEFI U盘启动后,GRUB 菜单正常显示,但选中“Install Ubuntu”敲下回车,屏幕立刻黑掉。不是那种“闪一下然后进入安装界面”的正常黑屏,而是彻底无信号,显示器提示“无信号输入”,只有主机还在运行。
这个现象如果你也遇到,先别怀疑硬件坏了。在 B650/Z890 这类新主板上装旧版 Ubuntu,这是非常经典的内核与显卡不兼容导致的问题。
2.2 根因:5.15 内核确实不认识 RTX 5070 Ti
屏幕黑掉的本质是:内核在启动时,需要初始化显卡并设置显示输出。但由于显卡太新,5.15 内核自带的 nouveau 驱动对它支持不足,VESA/VBE 标准显示模式也拿不到正确的 framebuffer,系统在启动早期就卡死了。
这里要特别说明一下。U7 265KF 虽然属于 Arrow Lake-S 架构,但它本身没有核显,所以主板上 HDMI/DP 直连 CPU 的视频输出口在这个平台上实际是没有图像的。所有显示输出都必须经过 RTX 5070 Ti。而这块显卡在系统里如果没有可用驱动,就等于没有显示设备,屏幕自然一片黑。
2.3 第一道解法:GRUB 里加 nomodeset 再安装
解决办法也不复杂——在 GRUB 启动项里临时加上 nomodeset 参数,让内核不要做 Kernel Mode Setting,也不要尝试加载显卡驱动,先用最基础的 VESA 低分辨率模式把系统带起来。
具体操作:
- 在 GRUB 菜单界面,选中“Install Ubuntu”这一项,按
e进入编辑模式。 - 找到以
linux开头的那一行,在末尾的空格后面输入nomodeset。 - 按
Ctrl+X或F10启动,系统就会以无显卡驱动模式进入安装界面。
进入安装界面后,分辨率会比较低,大概 1024x768 左右,但没有黑屏,安装流程可以正常走完。这一步是整个安装流程的“第一把钥匙”,没有它,后面所有动作都无从谈起。
2.4 系统装完仍然黑屏时的兜底操作
系统装完、第一次重启,同样会遇到黑屏。处理方式和安装时一样:开机进 GRUB,按 e,在 linux 行加 nomodeset,然后 Ctrl+X 进入系统。进入桌面之后,把参数持久化到 GRUB 配置文件里:
bash复制sudo nano /etc/default/grub
找到这一行:
code复制GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
改成:
code复制GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
保存后执行:
bash复制sudo update-grub
然后再重启,系统就能带着 nomodeset 参数稳定进入桌面了。
有一点必须提前说清楚:nomodeset 只是“保命”参数,不是最终状态。它能让系统显示,但也会让 NVIDIA 官方驱动无法正常工作。后面装完显卡驱动,需要把它移除,换成 nvidia-drm.modeset=1,这个在第四节详细说。
另外,如果你开机时连 GRUB 菜单都看不到,多半是主板“Fast Boot”或“Launch CSM”配置问题。进 BIOS,把 Fast Boot 关闭,确保 Boot Mode 是 UEFI,GRUB 菜单就会正常出现。
3. 网卡驱动攻坚:RTL8125BG 的离线源码编译与 DKMS 注册
系统装好、能进桌面,下一步就面临一个更现实的问题:网卡没驱动,上不了网。对于 Ubuntu 22.04.5 + Z890M 这个组合,网卡问题几乎必然会出现,而且处理起来比想象中更麻烦一些。
3.1 先搞清楚你的网卡到底是哪一颗
在开始折腾之前,先确认网卡型号。终端执行:
bash复制lspci -nnk | grep -i ethernet
我当时看到的是:
code复制05:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125BG 2.5GbE Controller [10ec:8125] (rev 05)
Z890M 主板上常见的 2.5G 网卡基本就是两种:Realtek RTL8125BG 或者 Intel I226-V。这两者的处理方式完全不同。
- 如果是 RTL8125BG,5.15 内核没有对应驱动,必须自己编译 r8125 模块。
- 如果是 Intel I226-V,5.15 内核里有
igc驱动,但可能需要额外安装linux-firmware包才能让固件正常加载。
我这次遇到的是 RTL8125BG,所以重点讲一下源码编译这条路。后面所有步骤,都是基于这颗网卡。
3.2 离线环境下的编译依赖准备
最麻烦的点在于:网卡没驱动,系统上不了网,那么编译驱动需要的工具包怎么装?
理论上,编译 r8125 需要 gcc、make、build-essential、linux-headers-$(uname -r)。如果这些都没装,就会陷入“没网就不能装工具,没工具就不能编译网卡驱动”的死循环。
我的解决办法是:在有网的另一台机器上,把需要的 deb 包全部下载下来,拷到 U 盘里,再离线安装。具体做法:
bash复制# 在一台能上网的 Ubuntu 22.04 机器上执行
sudo apt-get update
sudo apt-get install --download-only build-essential dkms linux-headers-$(uname -r)
sudo cp /var/cache/apt/archives/*.deb /usb/debs/
然后把整个 debs 目录拷贝到目标机器的 U 盘上,进入目标机器后执行:
bash复制cd /media/用户名/U盘目录/debs
sudo dpkg -i *.deb
如果报依赖顺序错误,没关系,多执行几次 sudo dpkg -i *.deb,dpkg 会把前面缺失的依赖逐个补上,通常重复两三次就能全部装上。
另一种思路是:在安装 Ubuntu 时,安装器界面有“Download updates while installing”和“Install third-party software for graphics and Wi-Fi hardware”这两个勾选项,如果网络环境允许,可以把“third-party software”勾上,有时会把编译工具链一并带上。但实测下来,“有时”这个词很不靠谱,所以我推荐还是离线 deb 包方案,可控性高。
3.3 编译安装与 DKMS 绑定
依赖就绪后,下载 Realtek 官方 r8125 驱动源码包。型号版本我记得我当时用的是 r8125-9.012.03.tar.bz2,可以从 Realtek 官网驱动下载页面找到 Linux 版的 2.5G Ethernet LINUX driver。拷到目标机器后,执行:
bash复制tar -xvf r8125-9.012.03.tar.bz2
cd r8125-9.012.03
sudo ./autorun.sh
autorun.sh 会完成 make、make install、modprobe r8125 一系列操作。执行完检查一下:
bash复制ip link show
正常情况下,会看到 eth0 或 enp5s0 这样的有线网口出现。再用 ethtool 确认速率:
bash复制sudo ethtool enp5s0 | grep Speed
输出 Speed: 2500Mb/s 就说明 2.5G 协商成功。
不过,直接用 autorun.sh 装有一个隐患:它只是把模块装进当前内核的模块目录,没有注册 DKMS。将来内核一升级,模块目录被替换,网卡驱动就没了,网络会再次消失。
所以我强烈建议,在 autorun.sh 执行完之后,再手动注册一次 DKMS:
bash复制sudo cp -r r8125-9.012.03 /usr/src/r8125-9.012.03
sudo dkms add -m r8125 -v 9.012.03
sudo dkms build -m r8125 -v 9.012.03
sudo dkms install -m r8125 -v 9.012.03
注意:/usr/src/r8125-9.012.03 这个目录里不能再有 autorun.sh 编译后生成的 r8125.ko、*.o 等中间文件,否则 DKMS 会报“could not find the module source directory”或者编译失败。保险的做法是把之前解压出来的源码目录先 make clean,或者重新解压一份干净源码再复制到 /usr/src。
DKMS 注册成功后,内核升级时会自动重新编译 r8125,网卡不会再神秘消失。
3.4 网络配置与网卡消失问题的处理
模块加载成功后,网络配置可以继续沿用 Ubuntu 的 netplan。默认安装完 22.04.5 后,/etc/netplan 下会有一个 01-network-manager-all.yaml,内容通常只有:
yaml复制network:
version: 2
renderer: NetworkManager
如果桌面环境托管网络,按理说右上角会出现网络图标。但 netplan 有时不会自动识别新出现的网卡,所以我习惯直接写一个明确的配置:
bash复制sudo nano /etc/netplan/01-netcfg.yaml
内容按实际情况写,例如 DHCP:
yaml复制network:
version: 2
ethernets:
enp5s0:
dhcp4: true
静态 IP 就加上 addresses、routes、nameservers。我用的是静态 IP:
yaml复制network:
version: 2
ethernets:
enp5s0:
dhcp4: false
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 223.5.5.5
- 8.8.8.8
执行:
bash复制sudo netplan apply
然后 ping 一下网关,通了就说明网络已经恢复。
这里再提一个后来遇到的坑。有一次我执行 sudo apt upgrade,内核小版本从 5.15.0-86 升到了 5.15.0-91,重启后网卡又没了。检查才发现是因为当时只在 /lib/modules/$(uname -r) 里装了一次 r8125,没有做 DKMS。后来补了 DKMS 注册,再升级内核就再没出过问题。这个教训后面第五节的“内核锁版”部分还会碰到,两者是相辅相成的。
4. RTX 5070 Ti 显卡驱动:从禁用 Nouveau 到 nvidia-smi 亮出型号
网卡通了,接下来就是重头戏:显卡驱动。RTX 5070 Ti 在 Ubuntu 22.04.5 上必须用 NVIDIA 官方 570 系列驱动,不管是用官网 runfile 还是其他途径,Blackwell 架构的显卡驱动都不能靠系统自带的 Noveau 或者旧版 NVIDIA 驱动。
4.1 为什么第一步是禁 Nouveau 而不是装驱动
这是很多人容易搞反的一步。如果你直接执行 NVIDIA 官方 runfile,安装器大概率会报错:The Nouveau kernel driver is currently in use by your system。因为 nouveau 与 NVIDIA 官方驱动不能共存,安装器检测到 nouveau 模块还在加载,就会拒绝继续。
所以顺序必须是:先禁用 nouveau,重启,再装 NVIDIA 驱动。
创建黑名单配置:
bash复制sudo bash -c "echo 'blacklist nouveau' > /etc/modprobe.d/blacklist-nouveau.conf"
sudo bash -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nouveau.conf"
重新生成 initramfs:
bash复制sudo update-initramfs -u
重启后确认 nouveau 没有被加载:
bash复制lsmod | grep nouveau
没有任何输出就说明禁用成功。
4.2 Secure Boot 是很多人忽略的黑屏元凶
这一步非常关键。很多同学在装 NVIDIA 驱动时,明明什么都装好了,nvidia-smi 当时也能跑,但一重启,系统不是黑屏就是卡在登录界面循环。排查到最后,问题出在 Secure Boot 上。
Ubuntu 22.04.5 在 UEFI 模式下默认开启 Secure Boot。而 NVIDIA 官方 runfile 装的是一个自编译的内核模块,没有经过主板 Secure Boot 信任链的签名,内核在启动加载这个模块时会被直接拒绝。
有两种处理方式:
第一种,直接进 BIOS 关闭 Secure Boot。Z890M 主板的路径一般是 Boot -> Secure Boot -> Secure Boot Control,设置为 Disabled。这个方法最省事,适合纯 Ubuntu 单系统环境。
第二种,保留 Secure Boot,但在安装 NVIDIA runfile 的过程中注册 MOK(Machine Owner Key)。NVIDIA 安装器在检测到 Secure Boot 开启时,会提示设置一个 MOK 密码。设置完之后,重启会进入一个蓝底的 MOK Management 界面,选择 Enroll MOK,确认,输入刚才设置的密码,再重启,驱动模块就完成签名,可以被加载了。
如果你的机器还装着 Windows 11,或者开了 BitLocker,那不建议直接关 Secure Boot。我当时这台机器是单系统,就直接关了,改完瞬间清净。但如果你必须保留 Secure Boot,就走 MOK 签名流程,不要跳过。
4.3 570 系列驱动的安装完整流程
先说驱动版本。RTX 5070 Ti 需要 NVIDIA 570 系列驱动,我当时装的是 NVIDIA-Linux-x86_64-570.124.04.run。这个版本可以从 NVIDIA 官网驱动下载页选型号后获取。
安装前,先把可能残留的旧驱动清理干净。如果之前用 apt 装过任何 nvidia-driver-* 的包,先移除:
bash复制sudo apt purge '^nvidia-.*' '^libnvidia-.*'
sudo apt autoremove
然后执行安装。这里有一个值得注意的操作习惯:不要在图形界面还跑着的情况下直接 runfile,最好先切换到一个纯文本终端:
bash复制sudo systemctl isolate multi-user.target
这会停止显示管理器,释放显卡资源,然后登录 tty,再执行:
bash复制chmod +x NVIDIA-Linux-x86_64-570.124.04.run
sudo ./NVIDIA-Linux-x86_64-570.124.04.run
安装过程中交互选项我按实际需求选的是:
- Accept License -> Yes
- 32-bit compatibility libraries -> 如果不用 32 位 OpenGL,可以 No,但如果要跑旧版 Steam 或 32 位 CUDA 程序,建议 Yes。
- Register the kernel module sources with DKMS -> Yes。这个必选,不然内核升级后显卡驱动也会失效,和网卡 r8125 的问题一模一样。
- Run nvidia-xconfig -> No。我习惯自己写启动参数,nvidia-xconfig 生成的 xorg.conf 有时候反而会把事情搞复杂。
安装完成后,会提示模块已加载。切回图形界面:
bash复制sudo systemctl isolate graphical.target
然后验证:
bash复制nvidia-smi
看到类似下面这样的输出,说明驱动已经正常:
code复制+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.124.04 Driver Version: 570.124.04 CUDA Version: 12.8 |
|-------------------------------+----------------------+----------------------+-----------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| 0 NVIDIA GeForce RTX 5070 Ti | 00000000:01:00.0 On | N/A |
+-------------------------------+----------------------+----------------------+-----------+
4.4 装完驱动还是黑屏时的自救顺序
驱动装完,如果重启黑屏,不要慌,按下面顺序排查:
- 检查 GRUB 参数里是否还有
nomodeset。如果有,删掉,换成nvidia-drm.modeset=1 nvidia-drm.fbdev=1,然后update-grub。带着nomodeset时,NVIDIA 官方驱动会被禁用,系统当然黑屏或无法获得正常图形输出。 - 检查 Secure Boot。如果 BIOS 里 Secure Boot 是开启的,NVIDIA 模块又没签名,就会加载失败。此时可以临时进 BIOS 关掉 Secure Boot 测试。
- 尝试进入 tty:按
Ctrl+Alt+F2或Ctrl+Alt+F3。如果 tty 能进去,执行sudo dmesg | grep -i nvidia看 NVRM 日志,确认是初始化失败还是权限/签名失败。 - 如果 GDM 反复重启,可以尝试关闭 Wayland,改用 Xorg。编辑
/etc/gdm3/custom.conf:
code复制[daemon]
WaylandEnable=false
然后重启 GDM:
bash复制sudo systemctl restart gdm
- 如果以上都试过还不行,重新运行 runfile,选择
Uninstall,再重新安装一次,安装时留意有没有报错。
说到底,RTX 5070 Ti 的驱动安装黑屏,百分之八九十就是下面三个原因之一:GRUB 参数还带着 nomodeset、Secure Boot 签名没通过、或者驱动编译时内核头文件不匹配。逐个排查,基本都能解决。
4.5 验证不只是 nvidia-smi
nvidia-smi 显示 GPU 型号只是第一步。真正要确认驱动完整、图形加速正常,还需要看 OpenGL 渲染器。先装个工具:
bash复制sudo apt install mesa-utils
然后执行:
bash复制glxinfo | grep "OpenGL renderer"
正常情况下会输出类似:
code复制OpenGL renderer string: NVIDIA GeForce RTX 5070 Ti/PCIe/SSE2
如果显示的是 llvmpipe 这类软件渲染器,说明 OpenGL 没有走 NVIDIA 驱动,通常是因为 Xorg 起在 VESA 模式或者配置有问题。
再一个实用工具是 nvtop,可以实时看 GPU 占用、温度、显存频率:
bash复制sudo apt install nvtop
nvtop
这套组合在 22.04.5 上跑 CUDA 也没问题。驱动装好后,PyTorch 或 CUDA 工具链基本可以直接调度 GPU。
5. 稳定运行的关键操作:启动参数、内核锁版与 BIOS 调优
驱动装完、能进桌面、能上网,很多人就以为大功告成。但说实话,新硬件装旧系统的最大风险从来不是“刚装好的那一小时”,而是后续每次 apt upgrade 之后能不能继续稳定跑。这一节的内容,是我后来几个月持续使用中沉淀下来的关键加固操作。
5.1 移除 nomodeset,换成 nvidia-drm 参数
前面我们为了进系统加了 nomodeset,装完 NVIDIA 驱动之后,这个参数必须移除,否则 NVIDIA 模块虽然安装了,但不会被正确使用,nvidia-smi 甚至可能报错:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver。
所以最终稳定的 GRUB 参数应该是这样:
bash复制sudo nano /etc/default/grub
设置:
code复制GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1 nvidia-drm.fbdev=1"
然后更新:
bash复制sudo update-grub
解释一下这两个参数:nvidia-drm.modeset=1 让 NVIDIA 驱动接管 DRM 显示系统,Wayland/Swapchain 等现代显示栈才正常;nvidia-drm.fbdev=1 可以解决部分场景下的 framebuffer 控制台和鼠标光标异常问题,是 NVIDIA 驱动在 555+ 版本开始推荐加的。
改完重启,再 nvidia-smi 确认一次,看到正常输出就没问题。
5.2 内核版本锁死与解锁
这是整套方案里我个人认为最重要、也最容易被忽略的一步。
Ubuntu 22.04.5 的 apt 源默认会推送 5.15 内核的小版本更新,比如从 5.15.0-86 升到 5.15.0-91。即使我们给网卡和显卡都注册了 DKMS,内核升级时 DKMS 会自动重新编译模块,但问题是:DKMS 编译需要对应的 linux-headers 包,如果某个 `linux-head
