Linux 网卡驱动安装终极指南
在 Linux 中,安装网卡驱动的核心思路是:先识别网卡型号,再找到对应的驱动,最后进行安装,Linux 内核已经包含了大量常用网卡的驱动,因此大多数情况下,我们只需要加载对应的内核模块即可,无需手动编译。

本教程将按照从易到难的顺序,介绍多种方法。
第一步:如何识别你的网卡型号?
这是最关键的一步,在安装驱动之前,你必须知道你的网卡是什么型号。
使用 lspci 命令(最常用)
lspci 命令可以列出所有的 PCI 设备,包括网卡。
-
打开终端。
(图片来源网络,侵删) -
运行以下命令:
lspci -nnk -d 10ec: # 查看所有 Realtek 网卡 lspci -nnk -d 8086: # 查看所有 Intel 网卡 lspci -nnk -d 14e4: # 查看所有 Broadcom 网卡
-nnk参数会显示设备的 ID、名称和内核模块信息。-d <VendorID>:<DeviceID>是可选的,用于过滤特定厂商的设备。
-
通用命令(推荐): 如果你不确定厂商,可以直接运行:
lspci -nnk | grep -i 'network\|ethernet'
这个命令会列出所有网络/以太网设备,并显示其详细信息。
输出示例:

03:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
Subsystem: Micro-Star International Co., Ltd. MSI B450M MORTAR MAX [1462:7960]
Kernel driver in use: r8169
Kernel modules: r8169
从上面的输出中,我们可以得到关键信息:
- 型号: Realtek RTL8111/8168/8411
- ID:
10ec:8168(Vendor:Device) - 当前使用的驱动:
r8169
使用 lsusb 命令
如果你的网卡是 USB 接口的,则需要使用 lsusb。
lsusb
输出示例:
Bus 001 Device 005: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
这里我们得到了 USB 网卡的型号和 ID:Realtek RTL8153。
第二步:如何查找和安装驱动?
根据第一步获取的网卡信息,我们可以选择以下几种方法来安装驱动。
让系统自动加载驱动(最简单,成功率最高)
现代 Linux 发行版(如 Ubuntu, Debian, Fedora, CentOS)的内核已经包含了绝大多数网卡的驱动,系统启动时会自动加载。
-
检查驱动是否已加载: 运行
ip a或ifconfig,看看你的网卡(如eth0,enp3s0)是否已经显示出来。ip a
如果能看到类似
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000的输出,并且有 IP 地址,说明驱动已经正常工作。 -
如果网卡未识别:
- 检查 BIOS/UEFI 设置:进入电脑的 BIOS/UEFI,确保 "Onboard LAN" 或 "Network Interface" 选项是
Enabled(启用)状态。 - 重新加载驱动模块:
- 查看你的网卡对应的内核模块名(从
lspci的输出中可以看到,如r8169)。 - 使用
modprobe命令手动加载:sudo modprobe <module_name> # sudo modprobe r8169
- 然后再次使用
ip a查看是否识别。
- 查看你的网卡对应的内核模块名(从
- 检查 BIOS/UEFI 设置:进入电脑的 BIOS/UEFI,确保 "Onboard LAN" 或 "Network Interface" 选项是
-
使用
dkms: 有些驱动(如NVIDIA显卡或某些Broadcom无线网卡)使用DKMS(Dynamic Kernel Module Support),它会自动在内核更新后重新编译并安装驱动,非常方便。- 安装
dkms:# Ubuntu/Debian sudo apt install dkms # CentOS/RHEL/Fedora sudo yum install dkms
- 如果你的驱动是通过
dkms包安装的,它会自动处理后续的更新问题。
- 安装
使用 ndiswrapper(仅限部分 Broadcom 无线网卡)
ndiswrapper 是一个工具,它允许你在 Linux 中使用 Windows 的 .inf 驱动文件。此方法仅适用于某些无法找到原生 Linux 驱动的老旧 Broadcom 无线网卡,并且强烈不推荐新手使用,因为兼容性差且不稳定。
前提:你必须从 Windows 官网下载到对应网卡的 .inf 和 .sys 文件。
-
安装
ndiswrapper:# Ubuntu/Debian sudo apt install ndiswrapper-utils ndiswrapper-dkms # CentOS/RHEL (需要 EPEL 源) sudo yum install ndiswrapper
-
安装 Windows 驱动:
# 假设你的驱动文件在 Windows 的某个文件夹中,并已复制到 Linux sudo ndiswrapper -i /path/to/your/driver/net5211.inf
-
查看安装状态:
ndiswrapper -l # 应该显示你的设备名称 和 installed (native) 状态
-
加载驱动:
sudo modprobe ndiswrapper
-
设置为开机自启:
sudo ndiswrapper -m
从源码编译安装(最复杂,最后手段)
如果以上方法都无效,或者你使用的是非常新的网卡,内核可能还没有支持,那么就需要从源码编译安装。
通用流程:
-
下载驱动源码:从网卡芯片制造商(如 Intel, Realtek)的官网下载最新的 Linux 驱动源码包(通常是
.tar.gz格式)。 -
安装编译工具:Linux 内核模块需要用
gcc和make来编译。# Ubuntu/Debian sudo apt install build-essential linux-headers-$(uname -r) # CentOS/RHEL sudo yum groupinstall "Development Tools" sudo yum install kernel-devel kernel-headers
注意:
linux-headers-$(uname -r)中的$(uname -r)会自动获取当前内核版本号,确保安装与当前内核匹配的头文件。 -
编译和安装: 以安装 Intel
iwlwifi驱动为例(假设你下载了iwlwifi-8000C-ucode-39.31.5.1.tgz):# 1. 解压 tar xvf iwlwifi-8000C-ucode-39.31.5.1.tgz # 2. 进入解压后的目录 cd iwlwifi-8000C-ucode-39.31.5.1 # 3. 复制固件文件到系统固件目录 sudo cp iwlwifi-8000C-ucode-39.31.5.1.ucode /lib/firmware/ # 4. 重启系统 # 内核会在启动时自动加载新的固件和驱动模块 reboot
对于需要编译
.ko内核模块的驱动,步骤会更复杂一些,通常会包含make和sudo make install命令,请务必仔细阅读源码包中的README或INSTALL文件。
常见问题与解决方案 (FAQ)
Q1: 我的 Realtek 网卡很卡或不稳定怎么办?
A1: 这很常见,因为 r8169 驱动性能不佳,你的 Realtek 网卡(如 RTL8111, RTL8125)通常有一个性能更好的 r8168 驱动。
- 卸载旧驱动:
sudo rmmod r8169
- 安装
r8168驱动:- Ubuntu/Debian:
sudo apt install r8168-dkms
- 从源码安装:
去 Realtek 官网下载
r8168驱动源码,然后按照上文“方法三”的步骤编译安装。
- Ubuntu/Debian:
- 重启电脑。
Q2: 我有两个网卡,一个有线一个无线,但无线无法使用,有线可以。
A2: 这通常意味着有线网卡的驱动已加载,但无线网卡的驱动没有。
- 使用
lspci或lsusb仔细识别你的无线网卡型号。 - 根据型号,搜索对应的 Linux 驱动名称(
Intel的iwlwifi,Broadcom的broadcom-wl,Realtek的rtl8723be等)。 - 使用
apt或dnf安装对应的驱动包,对于 Intel 无线网卡:# Ubuntu/Debian sudo apt install firmware-iwlwifi # CentOS/RHEL sudo dnf install iwlwifi-firmware
- 安装后重启。
Q3: 安装驱动后,系统无法联网,无法更新软件怎么办?
A3: 这是一个经典的“鸡生蛋,蛋生鸡”问题,你需要网络来下载驱动,但没有驱动又无法联网。
解决方案:使用临时网络连接
- 使用 USB 网卡或手机共享网络:这是最简单的方法,找一个 USB 有线网卡插上,或者用手机开热点连接电脑,USB 网卡通常有良好的 Linux 兼容性(如基于 ASIX 芯片的)。
- 使用 Live CD/USB:制作一个 Linux 的安装 U 盘(如 Ubuntu Live USB),从 U 盘启动,Live 环境通常会加载大量驱动,你可以先在这里下载好
.deb或.rpm驱动包,然后复制到你电脑的硬盘中进行离线安装。
驱动安装流程图
graph TD
A[开始] --> B{识别网卡型号};
B -- lspci/lsusb --> C[获取芯片型号和ID];
C --> D{系统是否已识别网卡?};
D -- 是 --> E[网络正常,无需操作];
D -- 否 --> F{检查BIOS/UEFI设置};
F --> G{设置正确?};
G -- 否 --> H[进入BIOS/UEFI启用网卡];
G -- 是 --> I{尝试手动加载驱动};
I -- modprobe --> J{是否成功?};
J -- 是 --> E;
J -- 否 --> K{查找原生Linux驱动};
K -- 搜索发行版仓库 --> L[安装dkms/固件包];
K -- 无原生驱动 --> M{考虑ndiswrapper或源码编译};
M -- ndiswrapper --> N[下载Windows驱动, 使用ndiswrapper安装];
M -- 源码编译 --> O[下载源码, 安装编译工具, make & make install];
L --> P[重启电脑];
N --> P;
O --> P;
P --> E;
希望这份详尽的教程能帮助你成功解决 Linux 网卡驱动问题!先识别,再搜索,最后才考虑编译,这是解决问题的黄金法则。
