- 作者:
- 分类:知识&开发->OS->Linux基本
- 阅读:19
- 点赞:0
- 版权:CC BY-SA 4.0
- 创建:2026-05-15
- 更新:2026-05-22
原文链接(持续更新):https://neucrack.com/p/622
以下是让 AI 帮忙安装 AI总结的内容,按照这个步骤就能安装网卡驱动。
另外参考 https://neucrack.com/p/582
Linux Wi-Fi 驱动排查与安装指南
这份文档不是某一台机器的操作记录,而是一套更正规的 Linux Wi-Fi 排查和安装流程。
目标是回答下面几个问题:
- 现在这台电脑为什么没有 Wi‑Fi。
- 缺的是内核驱动,还是固件,还是只是网络服务没起来。
- 固件文件名是怎么确定的。
- 什么时候只需要补固件,什么时候必须装驱动、装 DKMS、或者升级内核。
- 像 Intel AX/BE 系列这种新网卡,在老系统上应该按什么逻辑处理。
本文默认是在本机直接操作,不讨论 SSH、代理、远程传文件这些问题。
1. 先理解原理
Linux 下 Wi‑Fi 正常工作,一般要经过这几层:
- 硬件先被总线识别到。
- 内核里要有对应驱动模块。
- 驱动模块加载后,要能找到匹配的固件文件。
- 固件加载成功后,内核才会创建设备接口,比如
wlan0、wlp*、wlo*。 - NetworkManager、
wpa_supplicant之类用户态服务再去扫描和连接热点。
所以“没有 Wi‑Fi”并不一定是“没装驱动”,常见情况有四类:
- 硬件都没识别到。
- 识别到了,但内核没有驱动支持。
- 驱动有了,但缺固件。
- 驱动和固件都好了,只是接口被屏蔽、没启动或网络服务没起来。
驱动和固件的区别
这两个最容易混淆。
驱动:
- 是内核模块,比如
iwlwifi、rtw88、mt76、brcmfmac。 - 负责让内核知道怎么和网卡通信。
- 通常来自 Linux 内核本身,或者来自 DKMS/backport 这类额外模块包。
固件:
- 是驱动加载后再喂给网卡的一段二进制文件。
- 一般放在
/lib/firmware/下面。 - 对 Intel 来说常见是
iwlwifi-*.ucode、*.pnvm这类文件。 - 固件不是“替代驱动”,而是“驱动运行时依赖的数据文件”。
所以:
- 内核没有对应驱动时,只补固件没有用。
- 驱动有了但缺固件时,只补固件通常就够。
2. 正规排查顺序
建议永远按这个顺序来,不要一上来就盲目下载一堆东西。
第一步:先保证临时联网能力
如果本机当前没有网络,先准备一个临时联网手段:
- 有线网。
- 手机 USB 共享网络。
- 另一块可用 USB 网卡。
这一步只是为了后续安装内核包、固件包或 DKMS 包。
第二步:确认系统版本和内核版本
uname -rcat /etc/os-release
这一步非常重要,因为很多问题其实是“网卡太新,系统太老”。
例如:
- Intel BE200 在 Ubuntu 20.04 这类较老系统上,很可能同时缺“驱动支持”和“新固件”。
- Intel AX201/AX211/BE200 这类新卡,经常要求更高版本的内核和
linux-firmware。
第三步:确认硬件型号
PCIe 网卡看:
lspci -nnk | grep -A3 -Ei "network|wireless|wifi"
USB 网卡看:
lsusb
你要拿到的信息是:
- 厂商和型号,比如 Intel BE200、AX200、Realtek 8852BE、MT7921。
- PCI/USB ID,比如
8086:272b、0bda:b852之类。 Kernel driver in use或Kernel modules是什么。
如果怀疑驱动模块根本不存在,可以再查两步:
modinfo iwlwifi 2>/dev/null | headmodinfo rtw88 2>/dev/null | head
或者直接尝试:
sudo modprobe iwlwifi
如果 modinfo 查不到,或者 modprobe 明确提示模块不存在,这就更像是“当前内核没有这个驱动”,而不是单纯缺固件。
例如 Intel 常见会看到:
Kernel modules: iwlwifi
如果这里完全看不到无线网卡,先不要谈驱动安装,应该优先检查:
- BIOS/UEFI 里无线设备是否被关闭。
- 硬件是否损坏或没接好。
- M.2 网卡是否被系统屏蔽。
第四步:看接口有没有出来
ip -br linknmcli dev status
如果驱动和固件正常,通常会出现:
wlan0wlp2s0wlo1
这类无线接口。
如果 lspci 看到了网卡,但这里没有无线接口,就继续往下查内核日志。
第五步:确认是不是被屏蔽
rfkill list all
如果看到:
Soft blocked: yesHard blocked: yes
说明未必是驱动问题,也可能是:
- 飞行模式。
- BIOS 禁用了无线。
- 机身无线开关关闭。
第六步:看内核日志,这是最关键的一步
sudo dmesg | grep -Ei "wifi|wlan|iwlwifi|rtl|rtw|ath|brcm|mt76|firmware" | tail -n 200
你要重点看下面几类信息。
情况 A:缺固件
典型日志类似:
Direct firmware load for iwlwifi-bz-b0-hr-b0-100.ucode failed with error -2no suitable firmware found
这说明:
- 驱动已经开始工作了。
- 驱动明确告诉你它要找哪个固件文件。
- 这时优先补固件,而不是重新找驱动。
情况 B:驱动模块不存在或不支持这张卡
典型表现是:
lspci看到设备。- 但
Kernel driver in use没有对应驱动。 modprobe 某驱动失败。dmesg没有进入正常初始化流程。
这通常说明是内核版本太老,或者需要额外 DKMS/backport 模块。
情况 C:驱动和固件都正常,但设备还是起不来
例如:
- 接口已经出现。
rfkill也没屏蔽。- 但是扫不到热点或无法连接。
这时已经不是“驱动安装”问题,应该转去查:
- 天线。
- 路由器兼容性。
- 区域码。
NetworkManager、wpa_supplicant。
3. 固件文件名是怎么来的
这个问题需要单独说明。
最正规的来源有三个,优先级如下。
来源 1:dmesg 直接报错
这是最准确的来源。
比如日志写:
Direct firmware load for iwlwifi-bz-b0-hr-b0-100.ucode failed
那就说明当前驱动正在找这个文件。
如果还伴随:
Direct firmware load for iwlwifi-bz-b0-hr-b0.pnvm failed
那就说明除了 ucode 还需要 pnvm。
来源 2:modinfo 查看驱动声明的固件依赖
modinfo iwlwifi | grep '^firmware:'
这一步能看到驱动支持的一批固件名,但通常比较多。
作用是:
- 帮你确认驱动家族在找什么命名模式。
- 辅助判断是不是确实缺
iwlwifi这组固件。
但真正“当前这张卡到底缺哪一个”,还是以 dmesg 为准。
来源 3:上游固件仓库和发行版固件包
Linux 固件通常来自:
- 发行版的
linux-firmware包。 - 上游
linux-firmware仓库。
Intel 的固件一般在上游仓库的 intel/iwlwifi/ 目录里。
所以完整逻辑是:
- 先从
dmesg确认缺哪个文件名。 - 再去发行版固件包或上游仓库里找这个文件。
- 找到了就安装到
/lib/firmware/。
而不是一开始就盲目复制整目录。
4. 到底要不要安装“驱动”
这个判断要严格区分,不然很容易装错。
只需要补固件的情况
满足下面特征时,通常只补固件:
- 网卡已经被识别到。
- 对应驱动模块已经存在,比如
iwlwifi。 dmesg明确报某个固件文件缺失。
这种情况常见于:
- 你装了较新的内核。
- 但系统里的
linux-firmware包比较旧。
必须补驱动、DKMS 或升级内核的情况
满足下面特征时,通常不只是补固件:
- 网卡型号太新。
- 当前内核没有这个设备 ID 的支持。
Kernel driver in use为空,或者驱动根本加载不了。- 老系统的内核版本明显过低。
这种情况更正规、优先级更高的解决方案是:
- 升级到更新的发行版。
- 或安装更高版本内核/HWE 内核。
- 仍不够时,再考虑 DKMS/backport。
DKMS/backport 不应当是第一选择,而应当是“系统不方便升级,但确实需要新网卡支持”时的补救方案。
4.1 驱动和固件应该去哪里找
这件事最好也按正规优先级来。
驱动来源的优先顺序
- 当前发行版自带内核。
- 发行版提供的更新内核或 HWE 内核。
- 发行版官方仓库提供的 DKMS/backport 包。
- 厂商或项目方明确维护的外部驱动。
对 Intel 来说,优先逻辑通常是:
- 先看当前内核是否已经自带
iwlwifi。 - 不够新时先升级内核或系统。
- 仍然不够时,再考虑
backport-iwlwifi-dkms。
Intel 官方页面更适合用来确认支持情况、参考版本要求和阅读说明;真正安装时,优先还是走发行版的内核和包管理系统。
固件来源的优先顺序
- 发行版自己的
linux-firmware包。 - 上游
linux-firmware仓库中对应文件。
固件尽量不要从来历不明的博客附件、网盘或第三方压缩包里拿。
如果博客文章提供了思路,可以参考思路,但文件本身最好回到:
- 发行版官方仓库。
- 上游
linux-firmware仓库。 - 厂商官方说明页。
5. Intel 网卡的正规处理方式
Intel 是最典型的一类,因为它经常同时涉及 iwlwifi 驱动和 iwlwifi-*.ucode 固件。
情况 1:老内核 + 新 Intel 网卡
例如:
- Ubuntu 20.04
- 网卡是 BE200
这时高概率同时存在两个问题:
- 内核里的
iwlwifi太老,不认这张卡,或者支持不完整。 - 固件包太旧,没有对应
iwlwifi-*.ucode。
这时正确顺序是:
- 先确认内核是否已经支持该网卡。
- 如果内核不支持,优先升级内核或系统。
- 只有在不能升级系统时,才考虑
backport-iwlwifi-dkms之类的兼容包。 - 驱动问题解决后,再补齐新固件。
情况 2:内核已经支持,但缺少新固件
这时常见表现是:
iwlwifi已经开始初始化。- 日志里直接报
iwlwifi-xxx.ucode缺失。
这种情况通常不需要额外装 DKMS,只要补对应固件文件。
6. 从头执行的一套标准流程
下面给出一套更标准的执行模板。
6.1 基础环境准备
sudo apt updatesudo apt upgrade -ysudo apt install -y build-essential pciutils usbutils rfkill network-manager linux-firmware
说明:
upgrade要么不做,要做就完整做完,不要中途打断。linux-firmware是标准固件包,应该先保证系统自带的它是最新可用版本。
6.2 识别硬件和当前状态
uname -rcat /etc/os-releaselspci -nnk | grep -A3 -Ei "network|wireless|wifi"lsusbip -br linknmcli dev statusrfkill list all
6.3 看内核日志决定走哪条分支
sudo dmesg | grep -Ei "wifi|wlan|iwlwifi|rtl|rtw|ath|brcm|mt76|firmware" | tail -n 200
然后分情况处理。
7. 分支处理
分支 A:设备没被识别到
先检查:
- BIOS/UEFI 无线开关。
- M.2 网卡接触。
- USB 网卡是否损坏。
这时不要先折腾固件和 DKMS。
分支 B:设备识别到了,驱动也在,但缺固件
这时流程是:
- 从
dmesg记下缺失的固件文件名。 - 先确认系统仓库里的
linux-firmware是否已经足够新。 - 如果系统包没有,再去上游
linux-firmware仓库找对应文件。 - 把文件放进
/lib/firmware/。 - 重载驱动或重启。
例如 Intel:
sudo cp iwlwifi-xxx.ucode /lib/firmware/sudo cp iwlwifi-xxx.pnvm /lib/firmware/sudo modprobe -r iwlmvm iwlwifi || truesudo modprobe iwlwifi
然后验证:
ip -br linknmcli dev statusnmcli dev wifi list
分支 C:设备识别到了,但当前内核没有合适驱动
这时优先级是:
- 升级系统。
- 或安装更新的内核/HWE 内核。
- 最后才是安装 DKMS/backport。
对于 Intel 老系统兼容,backport-iwlwifi-dkms 可以作为方案,但它的定位是:
- 给旧系统补较新的 Intel 无线驱动。
- 不是所有机器都必须装。
安装前要确认:
- 你的系统版本是否有对应构建包。
- 当前内核头文件是否已安装。
常用准备:
sudo apt install -y dkms linux-headers-$(uname -r)
装完对应 deb 后:
sudo dpkg -i your-backport-iwlwifi-dkms.debsudo apt --fix-broken install
之后再重启或重载模块。
8. 你的 BE200 经验,哪些是对的,哪些该规范化
你之前那份经验整体方向是对的,但可以整理得更正规一些。
对的地方
- 先想办法临时联网。
- 先
apt update,保证基础环境完整。 - 知道旧系统上 BE200 很可能需要额外驱动支持。
- 知道 Intel 网卡还依赖
iwlwifi固件。
不够正规的地方
1. 直接把 linux-firmware/intel/iwlwifi/* 整个复制进去
这能救急,但不是最规范的做法。
更正规的方式是:
- 先从
dmesg明确缺的是哪些文件。 - 再补对应文件。
整目录复制的问题是:
- 你并不知道真正需要的是哪几个文件。
- 可能引入过多不相关文件。
- 排障记录不够可解释。
不过如果是临时恢复机器,且明确就在 iwlwifi 家族里,这种做法可以作为应急方案,不算离谱,只是不够精确。
2. 没先明确“到底是缺驱动还是缺固件”
BE200 在老系统上最关键的问题,往往不是单纯缺固件,而是:
- 内核驱动本身太老。
- 即便固件齐了,旧驱动也可能认不全新设备。
所以更正规的是先判定:
- 当前内核是否支持这张卡。
- 如果不支持,优先升级内核或装 backport/DKMS。
- 再处理固件。
3. backport-iwlwifi-dkms 是兼容手段,不是默认答案
它在旧系统上确实常用,但逻辑上应当放在:
- “当前系统不方便升级”
- “而网卡又太新”
这种场景下使用。
更标准的路线永远还是:
- 新系统 + 新内核 + 新版
linux-firmware
9. 一个更推荐的 Intel/BE200 处理模板
如果今天你拿到一台旧系统机器,Wi‑Fi 网卡是 Intel BE200,可以按下面逻辑执行。
步骤 1:确认系统和内核是否过老
uname -rcat /etc/os-release
如果是 Ubuntu 20.04、内核又比较老,那就先假设:
- 可能缺驱动支持。
- 也可能缺固件。
步骤 2:确认硬件已被识别
lspci -nnk | grep -A3 -Ei "network|wireless|wifi"
步骤 3:确认当前有没有无线接口
ip -br linknmcli dev statusrfkill list all
步骤 4:看 dmesg
sudo dmesg | grep -Ei "iwlwifi|firmware|wifi" | tail -n 200
步骤 5:做判断
如果看到明确缺固件文件:
- 补固件。
如果根本没有正常进入 iwlwifi 初始化,或者设备太新不被当前内核识别:
- 优先升级内核或系统。
- 升不了再用
backport-iwlwifi-dkms。
步骤 6:补固件后重载驱动或重启
sudo modprobe -r iwlmvm iwlwifi || truesudo modprobe iwlwifi
步骤 7:最终验证
ip -br linknmcli dev statusnmcli dev wifi list
10. 最后总结成一句话
正规逻辑不是“没 Wi‑Fi 就去找驱动包”,而是:
- 先确认硬件有没有被识别。
- 再确认内核有没有驱动支持。
- 再确认驱动是不是缺固件。
- 固件文件名优先从
dmesg来。 - 只有当内核太老不支持新网卡时,才需要 DKMS/backport 或升级内核。
对于 Intel AX/BE 系列尤其如此:
iwlwifi是驱动。iwlwifi-*.ucode/*.pnvm是固件。- 新卡在老系统上,经常是“驱动支持 + 固件版本”两个问题同时存在。
按这个顺序排查,基本就不会走偏。
