Ubuntu服务器版怎么命令行安装无线网卡驱动

Mason
Mason
发布时间:2026-10-28 | 8人浏览过
原创

详解在Ubuntu服务器版(Ubuntu Server)纯命令行环境下,如何排查识别无线网卡硬件芯片、判断缺少固件还是内核模块、通过官方源或DKMS源码编译安装无线驱动,并使用Netplan配置Wi-Fi网络连接与排查Secure Boot常见问题。

在安装了纯命令行界面的 Ubuntu Server(服务器版)后,许多使用者会发现系统没有自动启用无线网卡,甚至执行网络配置命令时根本看不到 wlan0 或 wlp2s0 这样的无线接口。解决这一问题的标准路径非常明确:首先通过硬件总线命令定位具体的无线网卡芯片型号,其次判断内核是缺少驱动模块还是缺少硬件固件(firmware),随后通过官方 DKMS 软件包或源码编译安装驱动,最后通过 Netplan 写入 Wi-Fi 配置文件以实现开机自动连网。

一、命令行定位网卡硬件与诊断当前状态

与自带完整桌面环境和驱动集合的 Ubuntu Desktop 不同,Ubuntu Server 为了保证体积轻巧与服务端运行稳定,默认只包含了常见的数据中心有线网卡驱动,并未集成所有家用或消费级无线网卡所需的固件与非自由驱动。因此在开始安装前,第一步是明确无线网卡的物理芯片型号。

1. 查看物理网卡设备

如果无线网卡是插在主板上的内置 PCIe 网卡(如笔记本或台式机无线扩展卡),请执行以下命令查看网络控制器信息:

lspci -nnk | grep -iA3 net

输出结果示例:

02:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter [10ec:c821]
	Subsystem: Lenovo Device [17aa:c024]
	Kernel modules: rtw88_8821ce

请重点记录两项关键信息:芯片型号(例如 RTL8821CE)以及括号中的硬件厂商与设备识别码(例如 [10ec:c821])。如果输出中存在 Kernel driver in use,说明已有内核模块接管;若只有 Kernel modules 或完全无驱动项,则表明当前未加载有效驱动。

如果使用的是外置 USB 无线网卡,请执行:

lsusb

输出中通常会列出形如 ID 0bda:b812 Realtek Semiconductor Corp. RTL88x2bu [AC1200 Techkey] 的设备行,冒号前后的 0bda:b812 即为硬件指纹。

2. 检查系统网络接口与内核日志

执行 ip link 或 iw dev 检查操作系统当前识别到的接口列表:

ip link

如果只有 lo(本地回环)和 eth0 或 enp3s0(有线网卡),说明无线网卡尚未生成网络设备节点。此时需要进一步检索内核启动日志:

dmesg | grep -iE 'firmware|wifi|wlan|wireless'

如果日志中出现类似 rtw_8821ce: firmware failed to load 或 Direct firmware load for ... failed with error -2,说明内核中已有驱动代码,仅仅是缺少固件文件;如果日志完全没有无线网卡被初始化的记录,则说明内核缺少对应的驱动模块本身。

Ubuntu服务器版怎么命令行安装无线网卡驱动
图 1:Ubuntu Server 命令行无线网卡驱动排查与安装决策流程

二、理解 Linux 驱动结构:固件、驱动模块与 DKMS

在 Linux 体系中,无线网卡正常工作通常依赖两个核心组件:驱动模块(Kernel Module,通常为 .ko 文件)和微码固件(Firmware,位于 /lib/firmware 目录下)。

  • 内核驱动模块:负责与 Linux 内核的 cfg80211 / mac80211 无线网络子系统通信,向操作系统暴露标准网络接口。
  • 微码固件:许多现代无线芯片具有独立的片上微处理器,芯片启动时必须由操作系统将对应的二进制固件载入芯片内存,芯片才能开始收发射频信号。
  • DKMS(动态内核模块支持):当驱动代码不包含在官方标准内核中时,如果未来 Ubuntu 执行 apt upgrade 升级了内核版本,原本编译好的第三方驱动就会失效。DKMS 能够在系统升级新内核时,自动读取本地源码树并为新内核编译、签名驱动模块,免去了人工重新安装的繁琐。
Ubuntu服务器版怎么命令行安装无线网卡驱动
图 2:Linux 系统下无线驱动、固件与网络管理的分层架构

三、准备环境:解决“安装驱动前先要联网”的矛盾

安装驱动或编译工具往往需要通过 apt 下载软件包,但在网卡驱动装好之前服务器无法无线上网。解决这一环境准备问题,推荐采用以下三种实践方法之一:

  1. 临时连接有线网络:使用网线将服务器有线网口连接路由器,执行 sudo dhclient 即可直接获得 IP 上网。
  2. 手机 USB 网络共享:使用手机数据线连接服务器 USB 口,在手机设置中开启“USB 网络共享”。Ubuntu 内核通常内建 rndis_host 驱动,系统会自动识别出 usb0 有线网卡,直接即可临时上网。
  3. 完全离线环境(U盘拷贝):在另一台能上网的计算机上,根据网卡型号下载驱动源码压缩包与对应的 deb 依赖文件,通过 U 盘拷贝至服务器并在本地挂载安装。

确保服务器能够联网后,首先更新软件源并安装基础编译环境和内核头文件(非常关键):

sudo apt update
sudo apt install -y build-essential linux-headers-$(uname -r) dkms git wireless-tools rfkill
注意事项:linux-headers-$(uname -r) 是驱动编译的先决条件。头文件版本必须与当前运行内核完全匹配。如果使用离线安装,务必事先通过 uname -r 查看内核确切版本。

四、三种典型场景的驱动安装实操

场景一:Intel / 高通网卡仅缺少固件(最简流程)

Intel 网卡(如 AX200, AX210, AC9260 等)的驱动源码早已合入 Linux 主线内核(iwlwifi 模块),若未正常工作,通常只是因为官方简版镜像去除了部分大容量固件。执行以下命令补齐即可:

sudo apt update
sudo apt install -y linux-firmware

安装完成后,重新加载驱动模块:

sudo modprobe -r iwlwifi
sudo modprobe iwlwifi

场景二:官方源提供专有 DKMS 驱动包(如部分博通网卡)

以常见的博通(Broadcom BCM43xx 系列)为例,Ubuntu 官方维护了 bcmwl-kernel-source 包,直接执行即可自动通过 DKMS 完成编译与加载:

sudo apt install -y bcmwl-kernel-source

如果是 Realtek RTL8821CE 网卡,在较新的 Ubuntu 源中也已收录官方 DKMS 包:

sudo apt install -y rtl8821ce-dkms

场景三:从 GitHub 源码通过 DKMS 编译安装(通用解决方案)

对于市面上大量的 Realtek USB 无线网卡(如 RTL8812AU、RTL8821CU、RTL88x2BU 等),官方源中可能未收录最新驱动。此时推荐使用开源社区长期维护的 DKMS 驱动源码仓库。以常用的 rtl8812au 为例:

# 1. 克隆社区驱动源码到本地
git clone https://github.com/aircrack-ng/rtl8812au.git
cd rtl8812au

# 2. 查看驱动版本号并导入 DKMS 系统
# 查看项目中的 dkms.conf 文件,通常会标明 PACKAGE_NAME 与 PACKAGE_VERSION
DRV_NAME="rtl8812au"
DRV_VERSION="5.6.4.2"

# 3. 将源码拷贝至 /usr/src 规范目录
sudo cp -r . /usr/src/${DRV_NAME}-${DRV_VERSION}

# 4. 注册、编译与安装模块
sudo dkms add -m ${DRV_NAME} -v ${DRV_VERSION}
sudo dkms build -m ${DRV_NAME} -v ${DRV_VERSION}
sudo dkms install -m ${DRV_NAME} -v ${DRV_VERSION}

检查驱动是否成功挂载到 DKMS 列表中:

dkms status

若输出显示形如 rtl8812au/5.6.4.2, 5.15.0-88-generic, x86_64: installed,即表示编译并安装成功。

Ubuntu服务器版怎么命令行安装无线网卡驱动
图 3:DKMS 动态内核模块编译、安装与系统升级自动维护流程

五、加载模块与唤醒无线网络接口

驱动编译或安装完毕后,驱动模块可能尚未被实时加载入正在运行的内核。执行以下步骤进行唤醒:

1. 加载驱动模块

# 手动加载新编译的驱动(以 8812au 为例)
sudo modprobe 8812au

通过 lsmod | grep 8812au 确认模块是否已经在内存中就绪。

2. 解除无线射频软硬件锁定

部分机器在装完驱动后,无线网卡处于软件或硬件关闭状态,执行:

sudo rfkill list

如果输出显示 Soft blocked: yes 或 Hard blocked: yes,说明无线发射被锁定。执行命令全部解锁:

sudo rfkill unblock all

3. 激活网络接口并扫描验证

再次执行 ip link,此时应该能看到新增的无线接口名称(例如 wlan0 或 wlp2s0)。使用 ip 命令将其状态拉起为 UP:

sudo ip link set wlan0 up

检查无线网卡能否正常扫描周边的 Wi-Fi 热点:

sudo iw dev wlan0 scan | grep -i 'SSID:'

如果命令行列出了周边的 Wi-Fi 名称,说明驱动已经完全正常工作。

六、配置 Netplan 实现开机自动连接 Wi-Fi

Ubuntu Server 采用 Netplan 作为默认的网络配置渲染器,所有网络接口(无论是有线还是无线)都统一通过 YAML 格式的文本文件进行管理,配置文件通常位于 /etc/netplan/ 目录下。

1. 编辑 Netplan 配置文件

先查看现有配置文件名称:

ls /etc/netplan/

常见的配置文件名包括 00-installer-config.yaml、50-cloud-init.yaml 或 01-netcfg.yaml。使用 nano 编辑该文件(或新建一个):

sudo nano /etc/netplan/01-netcfg.yaml

将无线网卡配置写入文件,注意 YAML 严格依靠空格缩进,禁止使用 Tab 键制表符:

network:
  version: 2
  renderer: networkd
  wifis:
    wlan0:
      dhcp4: true
      access-points:
        "你的WiFi名称":
          password: "你的WiFi密码"
提示:请将上述配置中的 wlan0 替换为你实际识别到的无线接口名称;若 Wi-Fi 名称或密码中包含特殊字符,请务必用英文双引号包裹。

2. 测试并应用配置

在直接应用前,建议使用 netplan try 检查语法。如果无报错,直接应用新配置:

sudo netplan generate
sudo netplan apply

等待数秒后,执行 ip addr show wlan0 检查是否成功通过 DHCP 获得了内网 IP 地址,最后使用 ping 命令测试外网连通性:

ping -c 4 223.5.5.5

若能够正常收到来自公网 DNS 的回包,说明从驱动安装到无线联网的全部配置已成功跑通。

Ubuntu服务器版怎么命令行安装无线网卡驱动
图 4:从网卡驱动安装到 Netplan 连网配置全流程各阶段要点与交付目标

七、常见故障与排查要点

1. Secure Boot(安全启动)导致“Operation not permitted”或“Key rejected”

这是现代 UEFI 主板上安装第三方无线网卡驱动最常见的问题。UEFI 的 Secure Boot 要求所有载入内核的 .ko 模块必须包含受信任的公钥签名。当执行 sudo modprobe <模块名> 出现类似报错时:

modprobe: ERROR: could not insert '8812au': Operation not permitted
dmesg | tail
# 日志显示: Loading of unsigned module is rejected 或 PKCS#7 signature not signed with a trusted key

解决办法:

  • 方法一(推荐新手):重启进入物理机 BIOS/UEFI 固件设置,直接将 Secure Boot 选项由 Enabled 设为 Disabled。这是最稳妥直接的方式。
  • 方法二(使用 MOK 证书签名):如果不希望关闭安全启动,可以在安装 DKMS 时配合 mokutil 生成本地私钥为模块签名,重启时在蓝色的 MOK 管理界面输入密码完成证书信任导入。

2. 内核升级后网卡再次“消失”

如果此前直接在源码目录中手动执行 make && sudo make install,一旦系统自动升级了 Linux 内核版本,由于内核模块目录已切换至新的版本号路径(例如从 /lib/modules/5.15.0-86-generic/ 变为 5.15.0-88-generic/),原驱动将不再被加载。此时应全面转用上文介绍的 DKMS 管理方式,确保系统升级时自动重构模块。

3. USB 无线网卡频繁断流或休眠

某些 Realtek 或 Ralink 的 USB 接口无线网卡在长期空闲时,会因为 Linux 的 USB 自动挂起(autosuspend)策略而断线。可以通过向驱动模块传参禁用电源管理。例如创建 /etc/modprobe.d/8812au.conf:

options 8812au rtw_power_mgnt=0 rtw_enusbss=0

保存后重启系统,即可保持无线连接长期稳定运行。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表