☰
Ubuntu 20.04 安装 Intel AX211 网卡驱动:iwlwifi 固件与内核排坑指南
2026/9/28 5:47:39 网站建设 项目流程

说句实在话,Intel AX211这块网卡在Windows下几乎不用管,装好系统就能用。但到了Ubuntu 20.04上,它就是另一回事了——装完系统打开Wi-Fi列表一片空白,右上角网络图标一直转圈,你第一反应是网卡坏了,第二反应是系统没识别,实际问题是驱动和固件的匹配链路没打通。这篇文章就是我为解决“Ubuntu20.04 + Intel AX211 网卡驱动”折腾两三天后整理出来的完整记录,覆盖硬件识别、固件更新、驱动编译、安全启动、双系统冷启动等常见坑。如果你手里正好是搭载AX211的新笔记本,或者你只是想搞明白iwlwifi驱动的加载逻辑,这篇都能给你省不少时间。

1. 装之前先弄明白:为什么Ubuntu 20.04认不出AX211

1.1 先确认你拿到的确实是AX211

很多同学一上来就执行各种命令,结果折腾半天发现网卡型号根本不是AX211。我建议第一步就做硬件识别,否则后面全是无用功。

打开终端执行:

lspci | grep -i network lspci -nn | grep -i network

如果看到类似这样的输出:

00:14.3 Network controller [0280]: Intel Corporation Device [8086:51f0]

那基本就是Intel的无线网卡,但具体是AX201、AX210还是AX211,光看lspci的文本不一定能分辨。AX211的PCI ID在不同平台上有差异,常见的是8086:51f0,对应Alder Lake平台;也有8086:54f0(Raptor Lake)和8086:7af0(Meteor Lake)。不放心的话,可以用:

sudo dmesg | grep -i iwlwifi sudo dmidecode -t system 2>/dev/null | grep "Product Name"

配合笔记本型号判断。一般来说,2022年以后发布的Intel 12代、13代平台轻薄本,板载的无线网卡大概率就是AX211,它是CNVi接口,焊在主板上,无法像AX210那样随便拆换。这一点对后续的驱动选择很重要,因为固件名、模块参数都要按AX211去匹配。

1.2 驱动和固件是两回事:iwlwifi的加载链路

很多人把“驱动”和“固件”混为一谈,这在Intel无线网卡上特别容易踩坑。Linux内核里的iwlwifi是驱动模块,它负责和硬件通信;而真正让网卡硬件“跑起来”的,是一段存放在/lib/firmware目录下的ucode固件文件,可以把它理解成网卡的“大脑”。驱动模块只是一个搬运工,没有固件,网卡就算被识别了也无法工作。

查看驱动和现有固件:

modinfo iwlwifi | grep version ls /lib/firmware | grep iwlwifi-ty

注意,AX211对应的固件文件以iwlwifi-ty-a0-gf-a0-*.ucode命名,其中ty代表Type Z(即AX210系列所用的内部代号),gf-a0是独立硬件版本标识。如果你的系统里连iwlwifi-ty开头的文件都没有,那基本可以断定Ubuntu 20.04默认源里的linux-firmware包太旧,覆盖不到AX211。这也是我在最初排查时最头疼的一点——硬件明明能被lspci看到,dmesg里却一直刷固件加载失败。

1.3 为什么Ubuntu 20.04默认装不上AX211

Ubuntu 20.04的GA内核是5.4,HWE内核是5.15,这两个版本对AX211的支持程度完全不同。AX211需要Linux内核的iwlwifi驱动匹配到对应硬件ID,同时还需要新的ucode固件。5.4内核根本不在支持范围内,5.15内核虽然理论上可以,但Ubuntu 20.04自带的linux-firmware快照还停留在2020年左右,没有为AX211提供新固件,所以默认装完必然出问题。

再加上厂商的BIOS、Intel的无线网卡固件迭代节奏和Ubuntu发布节奏并不同步,新硬件很难立刻被老发行版支持。所以我的建议是:2022年以后的新笔记本,如果你非要用Ubuntu 20.04,前提条件就是升级HWE内核到5.15,然后手动更新固件。下面第二章就是环境准备。

2. 安装前准备:换源、装编译工具、固定内核

2.1 先换源再升级,别一上来就编译

我知道很多人习惯拿到系统先换源,这不是洁癖,而是因为后续安装build-essential、linux-firmware、dkms这些包时,如果从官方源拉取,速度慢还容易超时,最后导致依赖不完整。Ubuntu 20.04的源文件是/etc/apt/sources.list,可以直接用sed替换成国内镜像:

sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.aliyun.com@g' /etc/apt/sources.list sudo sed -i 's@security.ubuntu.com@mirrors.aliyun.com@g' /etc/apt/sources.list sudo apt update && sudo apt upgrade -y

这里说明一下,换源并不是驱动安装的必要步骤,但它能显著降低后续操作中因为网络原因出现的“包没装上”或“依赖缺失”概率。实测下来,换了阿里云镜像后,apt upgrade的速度能提升好几倍,尤其是更新linux-firmware这类体积较大的包时感觉特别明显。

2.2 安装编译环境和dkms

后面编译backport-iwlwifi驱动时会用到gcc、make、内核头文件,这些都要提前装好。顺手把dkms也装上,它可以在内核升级后自动重建第三方模块,避免每次升级内核都手动重编一次。

sudo apt install -y build-essential git curl dkms linux-headers-$(uname -r)

dkms的核心作用大家要理解:Linux内核模块和内核版本是绑定的,如果直接用make install装模块,下次内核一升级,模块就加载不了了。dkms则会在内核变更后自动重新编译模块,对于长期使用Ubuntu 20.04并经常做系统升级的人来说,这是必须的。后面我编译backport-iwlwifi时就是走dkms路线,省了很多事。

2.3 内核版本至少要5.15

在动手之前,先看一下当前内核:

uname -r

如果结果还是5.4或者5.8,AX211即使固件到位大概率也没法工作。建议直接安装HWE内核:

sudo apt install -y linux-generic-hwe-20.04 sudo reboot

HWE内核对应的是Ubuntu 20.04后期补丁版本,内核版本会升到5.15。AX211在5.15内核下能正常识别硬件ID,剩下的主要就是固件问题。如果装完之后还想要更保险,也可以继续升级到6.x系列主线内核,但稳定性不好保证,我建议日常使用还是走5.15 HWE更稳妥。

3. 核心实操:AX211驱动安装完整流程

3.1 路线一:只更新固件,先试最省事的办法

如果你的内核已经是5.15 HWE,那很大概率不需要编译驱动,只是缺固件。可以在dmesg里看到类似:

iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-ty-a0-gf-a0-72.ucode failed with error -2

这就说明驱动已经把网卡认出来了,只是找不到对应固件。解决办法是手动从linux-firmware仓库中拉取最新版固件文件。

git clone --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git cd linux-firmware sudo mkdir -p /lib/firmware-backup sudo cp -r /lib/firmware/* /lib/firmware-backup/ # 备份旧固件,方便回滚 sudo cp iwlwifi-ty-a0-gf-a0-*.ucode /lib/firmware/ sudo update-initramfs -u sudo reboot

备份这一步一定不能省。我之前有一次直接在原目录覆盖,结果新固件和内核驱动不匹配,反而把原本能用的旧网卡搞失效了。备份后如果出现问题,恢复原目录再重新生成initramfs就行。

重启后执行:

dmesg | grep iwlwifi | tail -n 20

如果看到类似iwlwifi 0000:00:14.3: Detected Intel Wi-Fi 6E AX211或者固件加载成功的信息,说明已经好了一大半。

3.2 路线二:固件更新无效时,编译安装backport-iwlwifi-dkms

如果你更新了固件之后dmesg仍然提示加载失败,或者modinfo iwlwifi显示的版本太老,根本匹配不上AX211的硬件ID,那就需要换驱动本身了。Intel官方会维护一份backport-iwlwifi,专门给老内核提供新驱动。

git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git cd backport-iwlwifi make defconfig-iwlwifi make -j$(nproc) sudo make install

这一步会编译并安装新的iwlwifi系列模块到/lib/modules/$(uname -r)/updates/dkms之类的目录中。编译时间取决于CPU,一般5到10分钟能完成。

如果你希望后续升级内核时模块自动重建,推荐用dkms方式管理:

sudo mkdir -p /usr/src/backport-iwlwifi-20240901 sudo cp -a * /usr/src/backport-iwlwifi-20240901/ cd /usr/src/backport-iwlwifi-20240901 sudo dkms add -m backport-iwlwifi -v 20240901 sudo dkms build -m backport-iwlwifi -v 20240901 sudo dkms install -m backport-iwlwifi -v 20240901

版本号可以自己定,关键是每次内核更新后执行sudo dkms autoinstall或者让它自动触发。装完后卸载旧模块再重新加载:

sudo modprobe -r iwlmvm iwlwifi 2>/dev/null sudo modprobe iwlwifi

此时再查看:

lsmod | grep iwlwifi lspci -k | grep -A 1 Network

lspci -k如果显示Kernel driver in use: iwlwifi,就说明驱动已经正确绑定。

3.3 设置开机自动加载

手动modprobe只是临时让模块跑起来,重启后如果没自动加载还是会回到原点。正常来说,不管是make install还是dkms安装,都会执行depmod并注册模块,开机时udev会根据硬件ID自动加载iwlwifi。但为了保险,可以手动创建一个加载配置:

echo iwlwifi | sudo tee /etc/modules-load.d/iwlwifi.conf sudo depmod -a sudo update-initramfs -u

注意,/etc/modules-load.d/里的配置是给系统启动早期用的,如果你在模块加载前还有别的依赖顺序问题,这里可能会报错。不过实测下来iwlwifi模块的依赖关系很简单,直接加进去基本不会出问题。另外,如果grub里之前加过blacklist iwlwifi或者类似参数,一定要去掉,否则即使模块装好也会被禁掉。

3.4 验证连接:能扫到Wi-Fi只是第一步

驱动加载成功后,用ip link看一下无线网卡接口是否出现,正常情况下叫wlan0或者wlxxxxxxxxxxxx:

ip link show nmcli radio wifi on nmcli dev wifi list

能扫到Wi-Fi信号后,就可以用nmcli连网了:

nmcli dev wifi connect "你的SSID" password "你的密码"

个人建议先用网络管理器连接,不要急着改/etc/network/interfaces,因为NetworkManager和netplan的配置方式在20.04里很容易冲突,新手容易改坏网络。连上之后:

ping -c 4 网关IP iperf3 -c 内网测速服务器地址

如果ping网关正常但上不了外网,那就是DNS或路由问题,和网卡驱动无关了。

4. 实战中踩过的坑:Secure Boot、双系统、休眠唤醒

4.1 Secure Boot:加载不了模块的隐形杀手

如果你编译安装了backport-iwlwifi,同时主板开启了Secure Boot,那么重启后很可能会发现网卡依然没起来。原因很简单:Secure Boot只允许加载经过签名的内核模块,而你手动编译的模块没有签名,内核直接拒绝加载。

dmesg里会看到类似Lockdown: iwlwifi: unsigned module loading is restricted的报错。解决办法有两种:

第一种是关闭Secure Boot,进BIOS找到Security菜单关掉即可,适合个人电脑。

第二种是给模块签名,走Ubuntu的MOK流程。首先需要生成一个签名密钥并导入:

sudo mokutil --generate-key sudo mokutil --import /var/lib/shim-signed/mok/MOK.der

执行第二条命令时会让你设置一个一次性密码,之后重启进蓝屏的MOK管理界面,选择Enroll MOK,输入刚才设置的密码,确认导入。再重启就能正常加载了。

如果你不想折腾签名,最简单的就是关掉Secure Boot。但要注意,有些笔记本的BIOS在关掉Secure Boot后Windows会提示BitLocker相关的问题,建议双系统用户提前处理好BitLocker恢复密钥再操作。

4.2 从Windows重启到Linux,网卡直接消失

这个坑我相信很多人都遇到过:Windows下重启进Linux,Wi-Fi怎么都扫不到,但冷关机后再开机进Linux就正常。问题出在Windows的快速启动(Fast Startup)机制,它会把包括无线网卡在内的设备固件置于一种半休眠状态,Linux加载时拿到的不是干净硬件状态,iwlwifi固件初始化失败。

解决办法有两条:

首选是在Windows下关闭快速启动:控制面板 -> 电源选项 -> 选择电源按钮的功能 -> 取消勾选“启用快速启动”,然后保存。

其次是每次从Windows进Linux时,先关机再开机,不要直接在系统菜单中选择“重启”进入Linux。实测发现Intel平台的CNVi网卡对这种情况特别敏感,AX211尤甚。后来我养成了习惯,双系统切换一律关机再开,问题彻底消失。

4.3 休眠唤醒后Wi-Fi消失或断流

Ubuntu 20.04下,笔记本合盖休眠再唤醒,无线网络经常出现“能连上但没网速”或者“直接找不到网卡”的情况。这一步多半是电源管理把无线网卡的射频状态搞乱了。

最直接的解决办法是关掉iwlwifi的电源管理:

echo 'options iwlwifi power_save=0' | sudo tee /etc/modprobe.d/iwlwifi-power.conf sudo update-initramfs -u

或者通过内核参数方式,在/etc/default/grub的GRUB_CMDLINE_LINUX_DEFAULT中加入:

iwlwifi.power_save=0

然后执行sudo update-grub重启。

如果休眠唤醒后还是断流,可以再加一个内核参数iwlmvm.power_scheme=1,把MVM层的电源策略调到省电模式,实测对AX211的断流问题改善明显。注意,修改内核参数后要重新生成initramfs,否则重启后参数不会生效。

4.4 常见问题速查表

现象可能原因排查命令/操作
开机后无线图标消失模块未加载或固件缺失dmesg | grep iwlwifi,检查lsmod | grep iwlwifi
Direct firmware load failedlinux-firmware太旧手动更新iwlwifi-ty-a0-gf-a0-*.ucode到/lib/firmware
Secure Boot拒绝加载模块未签名模块dmesg | grep Lockdown,关闭Secure Boot或MOK签名
从Windows重启进Linux没Wi-FiWindows快速启动Windows下关闭“启用快速启动”
休眠唤醒后无Wi-Fi电源管理关射频加内核参数iwlwifi.power_save=0
5GHz频段经常断流11ax模式兼容性问题加内核参数iwlwifi.disable_11ax=1
网卡未识别,硬件ID不在驱动表中内核版本太老升级HWE内核到5.15或以上

5. 升级内核后驱动失效的高频问题与维护建议

5.1 DKMS状态检查与重新编译

很多人在驱动好不容易装好后,某天执行了apt upgrade,内核从5.15.0-91升级到5.15.0-92,重启后网卡又没了。这时候第一反应不要是重新编译,先检查dkms状态:

dkms status

如果显示backport-iwlwifi是built状态但对应新内核版本缺失,直接执行:

sudo dkms autoinstall

如果dkms状态是error,那就要看日志。常见原因是内核头文件没装全,需要先安装新内核对应的linux-headers包,然后再dkms install。用dkms方式管理模块的最大好处就在这里:不需要每次手动重编,只要头文件在,几条命令就能恢复。

5.2 保留旧内核作为保险

如果你不是在虚拟机里折腾,而是真机安装Ubuntu 20.04,建议升级内核前先确认当前内核能稳定进入系统再动手。HWE内核升级过程中,也会自动保留旧内核作为启动项,所以不用急着清理。等新的内核跑了几天、网卡和休眠都正常之后,再考虑删除旧内核:

dpkg --list | grep linux-image sudo apt purge linux-image-5.15.0-xxx-generic

清理时注意别把正在运行的内核删掉。另外,手动编译过backport-iwlwifi的话,记得保留一份源码,方便后续dkms重建时直接从本地拷贝。

5.3 长期使用建议:定期更新linux-firmware

AX211这类新网卡的驱动问题,本质是上游固件迭代速度远超Ubuntu LTS版本固化周期。与其每次都手动拉linux-firmware仓库,不如把固件文件的更新养成习惯。我现在的方式是每两三个月拉一次linux-firmware仓库,对比一下iwlwifi-ty-a0-gf-a0-*.ucode有没有新版本,有就备份旧文件后复制进去,再update-initramfs -u。整个过程不超过两分钟,但能避免很多随机掉线问题。

一些个人经验

这套流程走完之后,我在Ubuntu 20.04下用了很长时间的AX211,期间也踩过无数次重启后网卡丢失、休眠唤醒断流之类的问题。比较实用的一个习惯是把修改过的内核参数、dkms版本、固件版本都记在一个小文件里,放在/home目录下,方便系统升级后快速排查。这类硬件驱动问题,很多时候不是单一的“没装驱动”那么简单,而是固件、内核、电源管理、Secure Boot、双系统协作等多个环节的叠加。你可以先把这篇文章里的基础流程走通,再根据实际日志逐条排错,会比自己瞎试高效得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询