Linux网卡“丢失”实为硬件未识别或固件缺失:先用lspci/lsusb确认设备是否存在,再查dmesg中firmware错误,最后按芯片型号安装对应固件而非盲目编译驱动。

Linux下网卡驱动丢失,设备管理器(lspci 或 lsusb 都看不到网卡,ip link 无对应接口)——这通常不是“驱动丢了”,而是内核根本没加载对应模块,或固件缺失、芯片太新未被默认支持。直接重装驱动前,先确认是不是连硬件都“隐身”了。
用 lspci 和 lsusb 确认网卡是否被系统识别
很多用户一上来就找驱动源码编译,结果发现 lspci | grep -i net 或 lsusb | grep -i realtek 根本没输出。这意味着问题出在更底层:PCIe枚举失败、USB口供电异常、或BIOS/UEFI中禁用了板载LAN/Wi-Fi。
- 有线网卡优先跑
lspci -nnk | grep -A3 -i ethernet:看有没有Network controller或Ethernet controller行,以及它关联的Kernel driver in use是什么(比如r8169、igb、unknown) - USB无线网卡必须插紧,然后执行
lsusb;如果没出现,换USB口、换线、进BIOS检查“USB Legacy Support”是否开启 - 若
lspci完全不显示网卡,但物理上确定存在(如主板自带千兆口),需进BIOS确认 “Onboard LAN Controller” 或 “PCH LAN” 是否设为Enabled
查 dmesg 日志定位具体失败原因
dmesg 是 Linux 驱动加载过程的“黑匣子”。网卡识别失败时,错误信息往往藏在这里,比 lspci 更早、更准。
- 执行
dmesg | grep -i "firmware\|rtl\|intel\|ath\|failed\|error",重点关注含firmware request failed的行——这说明固件(.bin文件)缺失,不是驱动代码问题 - 看到
rtl8188eu: Unknown symbol in module?说明你编译的驱动模块依赖的内核符号未导出,大概率是内核版本不匹配或未安装对应linux-headers - 出现
device descriptor read/64, error -71?这是 USB 通信异常,和驱动无关,优先排查硬件连接或 USB 控制器驱动(xhci_hcd)
根据芯片型号选对驱动方式:别硬编译 rtl8188eu 却忘了 rtl8852be 要用不同仓库
Realtek 不同芯片的开源驱动维护分散,用错仓库=白忙活。尤其 RTL8188EU、RTL8192EU、RTL8821AU、RTL8852BE 各自独立,不能混用。
- RTL8188EU / RTL8192EU:必须用
https://gitcode.com/gh_mirrors/rt/rtl8188eu(官方明确只支持git clone,zip 包缺补丁) - RTL8812AU/RTL8814AU:用
aircrack-ng/rtl8812au-aircrack-ng,新版内核需加CONFIG_CFG80211_WEXT=y - RTL8852BE(Wi-Fi 6):官方驱动已合入主线内核 5.15+,但需确认固件 —— 运行
sudo apt install firmware-realtek(Debian/Ubuntu)或sudo dnf install linux-firmware(Fedora/RHEL) - Intel AX200/AX210:内核 5.10+ 原生支持,但需确保
iwlwifi模块加载且固件完整;modinfo iwlwifi | grep firmware查路径,再确认/lib/firmware/iwlwifi-*.ucode存在
手动注入固件比重装驱动更关键
多数“识别不到”问题,根源是固件缺失。Linux 内核加载驱动模块后,会按名称去 /lib/firmware 下找对应 .bin 文件。找不到就静默失败,lspci 显示设备,dmesg 报错,但 ip link 就是没接口。
- 先查缺哪个固件:
dmesg | grep "firmware"输出类似Direct firmware load for rtl_nic/rtl8168g-3.fw failed with error -2 - 去
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git找对应文件,或用发行版包管理器安装完整固件包(如 Ubuntu 的firmware-realtek) - 手动复制时注意路径层级:
rtl8188eufw.bin要放到/lib/firmware/rtlwifi/,不是根目录;iwlwifi-cc-a0-77.ucode必须在/lib/firmware/直接路径下 - 复制完执行
sudo modprobe -r r8188eu && sudo modprobe r8188eu(替换为你实际模块名),再看ip link是否出现wlan0
真正卡住人的,从来不是“怎么编译”,而是没看 dmesg 就动手 clone;不是驱动写得不对,而是固件放错了子目录;不是芯片不支持,而是 BIOS 里关掉了控制器。Linux 网卡驱动修复,本质是层层排除:硬件可见 → 内核识别 → 固件到位 → 模块加载 → 接口生成。漏掉任何一层,“重装驱动”都是在给空气打补丁。



















