杰瑞科技汇

linux安装网卡驱动教程

Linux 网卡驱动安装终极指南

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

linux安装网卡驱动教程-图1
(图片来源网络,侵删)

本教程将按照从易到难的顺序,介绍多种方法。


第一步:如何识别你的网卡型号?

这是最关键的一步,在安装驱动之前,你必须知道你的网卡是什么型号。

使用 lspci 命令(最常用)

lspci 命令可以列出所有的 PCI 设备,包括网卡。

  1. 打开终端。

    linux安装网卡驱动教程-图2
    (图片来源网络,侵删)
  2. 运行以下命令:

    lspci -nnk -d 10ec:  # 查看所有 Realtek 网卡
    lspci -nnk -d 8086:  # 查看所有 Intel 网卡
    lspci -nnk -d 14e4:  # 查看所有 Broadcom 网卡
    • -nnk 参数会显示设备的 ID、名称和内核模块信息。
    • -d <VendorID>:<DeviceID> 是可选的,用于过滤特定厂商的设备。
  3. 通用命令(推荐): 如果你不确定厂商,可以直接运行:

    lspci -nnk | grep -i 'network\|ethernet'

    这个命令会列出所有网络/以太网设备,并显示其详细信息。

输出示例:

linux安装网卡驱动教程-图3
(图片来源网络,侵删)
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)的内核已经包含了绝大多数网卡的驱动,系统启动时会自动加载。

  1. 检查驱动是否已加载: 运行 ip aifconfig,看看你的网卡(如 eth0, enp3s0)是否已经显示出来。

    ip a

    如果能看到类似 2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 的输出,并且有 IP 地址,说明驱动已经正常工作。

  2. 如果网卡未识别

    • 检查 BIOS/UEFI 设置:进入电脑的 BIOS/UEFI,确保 "Onboard LAN" 或 "Network Interface" 选项是 Enabled(启用)状态。
    • 重新加载驱动模块
      • 查看你的网卡对应的内核模块名(从 lspci 的输出中可以看到,如 r8169)。
      • 使用 modprobe 命令手动加载:
        sudo modprobe <module_name>
        # 
        sudo modprobe r8169
      • 然后再次使用 ip a 查看是否识别。
  3. 使用 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 文件。

  1. 安装 ndiswrapper

    # Ubuntu/Debian
    sudo apt install ndiswrapper-utils ndiswrapper-dkms
    # CentOS/RHEL (需要 EPEL 源)
    sudo yum install ndiswrapper
  2. 安装 Windows 驱动

    # 假设你的驱动文件在 Windows 的某个文件夹中,并已复制到 Linux
    sudo ndiswrapper -i /path/to/your/driver/net5211.inf
  3. 查看安装状态

    ndiswrapper -l
    # 应该显示你的设备名称 和 installed (native) 状态
  4. 加载驱动

    sudo modprobe ndiswrapper
  5. 设置为开机自启

    sudo ndiswrapper -m

从源码编译安装(最复杂,最后手段)

如果以上方法都无效,或者你使用的是非常新的网卡,内核可能还没有支持,那么就需要从源码编译安装。

通用流程

  1. 下载驱动源码:从网卡芯片制造商(如 Intel, Realtek)的官网下载最新的 Linux 驱动源码包(通常是 .tar.gz 格式)。

  2. 安装编译工具:Linux 内核模块需要用 gccmake 来编译。

    # 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) 会自动获取当前内核版本号,确保安装与当前内核匹配的头文件。

  3. 编译和安装: 以安装 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 内核模块的驱动,步骤会更复杂一些,通常会包含 makesudo make install 命令,请务必仔细阅读源码包中的 READMEINSTALL 文件。


常见问题与解决方案 (FAQ)

Q1: 我的 Realtek 网卡很卡或不稳定怎么办?

A1: 这很常见,因为 r8169 驱动性能不佳,你的 Realtek 网卡(如 RTL8111, RTL8125)通常有一个性能更好的 r8168 驱动。

  1. 卸载旧驱动
    sudo rmmod r8169
  2. 安装 r8168 驱动
    • Ubuntu/Debian:
      sudo apt install r8168-dkms
    • 从源码安装: 去 Realtek 官网下载 r8168 驱动源码,然后按照上文“方法三”的步骤编译安装。
  3. 重启电脑

Q2: 我有两个网卡,一个有线一个无线,但无线无法使用,有线可以。

A2: 这通常意味着有线网卡的驱动已加载,但无线网卡的驱动没有。

  1. 使用 lspcilsusb 仔细识别你的无线网卡型号。
  2. 根据型号,搜索对应的 Linux 驱动名称(InteliwlwifiBroadcombroadcom-wlRealtekrtl8723be 等)。
  3. 使用 aptdnf 安装对应的驱动包,对于 Intel 无线网卡:
    # Ubuntu/Debian
    sudo apt install firmware-iwlwifi
    # CentOS/RHEL
    sudo dnf install iwlwifi-firmware
  4. 安装后重启。

Q3: 安装驱动后,系统无法联网,无法更新软件怎么办?

A3: 这是一个经典的“鸡生蛋,蛋生鸡”问题,你需要网络来下载驱动,但没有驱动又无法联网。

解决方案:使用临时网络连接

  1. 使用 USB 网卡或手机共享网络:这是最简单的方法,找一个 USB 有线网卡插上,或者用手机开热点连接电脑,USB 网卡通常有良好的 Linux 兼容性(如基于 ASIX 芯片的)。
  2. 使用 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 网卡驱动问题!先识别,再搜索,最后才考虑编译,这是解决问题的黄金法则。

分享:
扫描分享到社交APP
上一篇
下一篇