Fedora 44 安装 NVIDIA 专有驱动后 Wi-Fi 消失:一次由不完整内核安装引发的排障记录

前言

最近在 Fedora 44 上给 Lenovo Legion Y7000P 2024 安装 NVIDIA 专有驱动时,遇到了一个相当诡异的问题。

安装完成并重启后,Wi-Fi 直接消失。

更糟糕的是,当时我甚至没有意识到系统已经切换到了新的 Linux 7.0.11 内核。在我的认知里,我只是安装了 NVIDIA 驱动。

整个排查过程持续了数个小时。期间我怀疑过 NVIDIA 驱动、怀疑过 RTL8852CE 网卡、怀疑过 Linux 7.0 的兼容性,甚至一度准备放弃 NVIDIA 专有驱动。

最终发现,真正的问题既不是显卡驱动,也不是网卡驱动,而是一个安装不完整的 Linux 内核。

环境

硬件:

  • Lenovo Legion Y7000P 2024
  • NVIDIA RTX 4060 Laptop
  • Realtek RTL8852CE Wi-Fi

软件:

  • Fedora Workstation 44
  • GNOME Wayland

问题出现

我的目标非常简单:

安装 NVIDIA 专有驱动。

按照 RPM Fusion 的常规流程完成安装后重启系统。

结果刚进入桌面就发现:

  • Wi-Fi 图标消失
  • 无法搜索无线网络
  • 系统检测不到无线设备

由于问题恰好发生在安装 NVIDIA 驱动之后,因此我的第一反应自然是:

NVIDIA 驱动安装过程中出了问题。

此时我完全没有意识到系统已经升级到了新的内核。

一个意料之外的发现

在后续排查过程中,我发现当前运行的内核已经不是之前使用的版本。

系统从:

Linux 6.19.x

变成了:

Linux 7.0.11

直到这时我才意识到:

安装 NVIDIA 驱动时,dnf 不仅安装了驱动相关软件包,同时还拉取并安装了新的内核。

问题链路开始变成:

安装 NVIDIA 驱动
↓
系统升级到 Linux 7.0.11
↓
Wi-Fi 消失

虽然还不知道具体原因,但至少找到了一个明确的变化点。

回到 6.19

为了验证问题是否与新内核有关,我从 GRUB 启动菜单切回旧的 6.19 内核。

结果很直接:

Wi-Fi 恢复了。

无线网络重新出现。

这进一步强化了我的猜测:

6.19 正常
7.0.11 异常

如果只看这里,任何人都会怀疑 Linux 7.0。

我也不例外。

事情开始变复杂

然而新的问题很快出现。

切回 6.19 后,Wi-Fi 虽然恢复了,但桌面环境却开始表现异常。

应用程序能够启动。

任务栏能够看到程序正在运行。

但窗口根本不会出现。

包括:

  • 设置
  • 常见 GNOME 应用

在内的大部分程序都无法正常显示窗口。

随着使用时间增加,鼠标甚至会出现卡死现象。

最后只能切换到 TTY 进行操作。

整个系统处于一种很奇怪的状态:

应用在运行
↓
系统有响应
↓
窗口不出现

当时唯一比较特殊的是 Firefox。

它似乎仍然能够正常弹出窗口。

但由于问题已经足够混乱,我并没有进一步测试更多软件。

尝试回到 6.19 方案

此时我的想法很简单:

既然 6.19 下 Wi-Fi 正常,那么干脆删除 7.0。

然后在 6.19 环境中重新配置 NVIDIA 驱动。

于是开始删除新内核。

重新安装相关驱动。

尝试让 NVIDIA 在 6.19 环境下重新工作。

结果又出现了新的问题。

每次安装 NVIDIA 驱动相关软件包时,dnf 都会再次把新的 7.0 内核拉回来。

整个过程变成:

删除 7.0
↓
回到 6.19
↓
安装 NVIDIA 驱动
↓
dnf 拉取 7.0
↓
系统再次出现 7.0

到这里我意识到:

继续围绕 6.19 打转并不是长久方案。

迟早还是得解决 7.0。

我开始怀疑 Linux 7.0

由于:

6.19
Wi-Fi 正常

7.0
Wi-Fi 消失

这个现象过于明显。

再加上设备使用的是 Realtek RTL8852CE。

因此我逐渐形成了一个看似合理的判断:

Linux 7.0 可能缺少 RTL8852CE 对应驱动,或者驱动存在兼容性问题。

现在回头看,这个判断是错误的。

但在当时掌握的信息条件下,它几乎是最自然的结论。

为什么继续查下去

排查到这里时,我其实已经有一个勉强能接受的方案。

卸载 NVIDIA 驱动。

回到:

Linux 6.19

此时:

  • Wi-Fi 正常
  • 桌面环境正常
  • 日常使用基本没有问题

我一度准备就这样结束这次折腾。

但后来查阅资料时发现了一件事。

系统能够检测到 RTX 4060:

lspci
↓
显示设备存在

并不意味着显卡正在工作。

没有 NVIDIA 专有驱动时,独显更多只是:

被系统识别
↓
但无法真正利用

对于一台搭载 RTX 4060 的游戏本来说:

看得到
↓
用不了

本质上和没有差别。

我并不希望花钱买来的独立显卡最终变成一张“死卡”。

为了不浪费这块 RTX 4060,我还是决定硬着头皮继续查下去。

转折点:发现内核软件包对不上

由于不断在:

6.19
↕
7.0.11

之间来回切换。

安装、删除、检查内核已经变成了日常操作。

因此查看内核相关软件包也成了习惯。

真正的转折点恰恰是在这个过程中出现的。

某次对照软件包时,我突然发现:

两边的软件包列表对不上。

旧内核拥有完整的软件包组合:

kernel-core
kernel-modules
kernel-modules-extra

而 7.0.11 对应的软件包却明显不完整。

这并不是我主动去检查什么驱动。

而是在反复安装、删除内核的过程中,无意间发现了异常。

看到这里,我第一次产生了新的怀疑:

会不会不是 Linux 7.0 不支持 RTL8852CE,而是我的 7.0.11 内核根本没有安装完整?

这个想法彻底改变了排查方向。

因为如果内核本身都不完整,那么很多看起来像驱动兼容性的问题,其实都可能只是安装状态异常带来的连锁反应。

重新安装完整内核

既然已经开始怀疑内核安装状态异常。

我决定不再继续纠结网卡驱动本身。

而是直接安装一个新的完整内核。

安装完成后重启系统。

重新进入 Linux 7.0。

结果非常直接:

  • Wi-Fi 恢复
  • RTL8852CE 正常工作
  • NVIDIA 驱动正常工作
  • 图形环境恢复正常

此前所有看似毫无关联的问题同时消失了。

根因

回头复盘整个过程。

问题既不是:

RTL8852CE 驱动缺失

也不是:

Linux 7.0 不兼容

真正的问题是:

系统中的 Linux 7.0.11 内核安装不完整。

由于内核相关软件包缺失,导致驱动模块无法正常提供。

而无线网卡只是最早暴露问题的硬件。

随后 NVIDIA 驱动和图形环境也受到了影响。

一些思考

回头看整个排障过程,最有意思的一点是:从头到尾,我都在和一些并不存在的问题战斗。

Wi-Fi 消失时,我怀疑 RTL8852CE。

窗口打不开时,我怀疑 NVIDIA 驱动。

切换到 Linux 7.0 后问题出现,我又开始怀疑新内核的兼容性。

这些推断都很合理,甚至一度能够被现象所支持。

但最终证明:

RTL8852CE 没有问题
NVIDIA 驱动没有问题
Linux 7.0 也没有问题

真正异常的,是一个更底层、也更难被直接观察到的状态——一个安装不完整的 Linux 内核。

这让我想到,在复杂系统中,我们最先看到的往往不是问题本身,而是问题产生的结果。

由于结果是可见的,而底层状态通常是不可见的,因此人会天然地把现象当作原因。

于是:

Wi-Fi 消失
≠ 网卡有问题

窗口打不开
≠ 显卡有问题

驱动加载失败
≠ 驱动本身有问题

很多时候,它们只是同一个底层异常在不同位置留下的痕迹。

这次排障最大的收获或许并不是修好了 Wi-Fi,而是再次意识到:

当多个组件同时出现异常时,与其分别怀疑每一个组件,不如先寻找它们共同依赖的东西。

因为真正的问题,往往隐藏在那里。