大家好,我是冯哥的缓存。今天我们来聊一个很现实的困境:装好 Linux 之后网卡没驱动,而安装驱动又需要联网,这要怎么办?今天就来聊一下这事和蓝牙配对问题。
离线安装 Wi-Fi 驱动的核心逻辑
核心思路只有一个:用其他方式把驱动包搬到 Linux 里,再手动安装。
搬运方式对比:
| | |
|---|
| | 在 Windows 下载好 .deb 包,U 盘拷进 Linux |
| | 插上网线,有线网卡通常不需要驱动,直接 apt 安装 |
| | 安卓手机 USB 连接 Linux,开"USB 网络共享",Linux 一般自动识别,如果开启共享后没反应,运行 sudo modprobe rndis_host 再试。 |
| | |
💡 提示: 最简单的办法往往是手机 USB 共享网络——安卓手机接 USB,开发者选项或设置里找"USB 网络共享(USB Tethering)",Linux 内核原生支持,无需额外驱动,临时联网安装 Wi-Fi 驱动后再断开。
方案一:U盘搬运 .deb 包离线安装
这是最常见的离线安装场景。
第一步:在 Windows 上下载所需 deb 包
先要知道自己的网卡型号(上篇讲了 lspci -nnk 的方法)。根据型号找对应的包:
| | |
|---|
| bcmwl-kernel-source | |
| broadcom-sta-dkms | |
| | |
| linux-firmware | |
| firmware-realtek | |
Ubuntu 官方包库下载地址格式:
https://packages.ubuntu.com/包名
# 例如:https://packages.ubuntu.com/jammy/bcmwl-kernel-source
比如搜 bcmwl-kernel-source,选对应的 Ubuntu 版本,点 amd64,下载 .deb 文件。
⚠️ 注意: 有些包有依赖项,需要一起下载。Ubuntu 包页面下方会列出依赖包,一并下载,否则安装时会报"依赖未满足"。
第二步:把 deb 包复制到 Linux
U 盘格式选 FAT32 或 exFAT,Linux 可以直接读取。
插入 U 盘后:
# 查看 U 盘挂载位置
lsblk
# U 盘一般挂在 /media/用户名/U盘名/ 下
# 把 deb 文件复制到家目录
cp /media/username/USBDISK/*.deb ~/
# 进入家目录
cd ~
第三步:安装 deb 包
# 安装单个 deb 包
sudo dpkg -i 包名.deb
# 如果有多个包,一起安装(推荐,避免依赖顺序问题)
sudo dpkg -i *.deb
# 如果报"依赖未满足"错误,运行这条修复(需要联网)
sudo apt install -f
第四步:加载驱动模块
# 重启让驱动生效(最简单)
sudo reboot
# 或者不重启,手动加载内核模块(以 Broadcom 为例)
sudo modprobe wl
# 验证驱动已加载
lsmod | grep wl
方案二:Realtek RTL8821CE 离线安装(DKMS 方式)
RTL8821CE 是笔记本中最常见的"没有开箱即用驱动"的网卡,专门说一下。
在有网络的机器上准备好文件:
# 方法A:git clone(需要网络)
git clone https://github.com/lwfinger/rtl8821ce.git
# 方法B:直接去 GitHub 页面下载 ZIP 包(不需要 git)
# https://github.com/tomaspinho/rtl8821ce → Code → Download ZIP
下载后得到 rtl8821ce-master.zip(或直接是目录),U 盘拷进 Linux。
在 Linux 上安装:
# 先安装 DKMS 和编译工具(如果有临时网络)
sudo apt install dkms build-essential linux-headers-$(uname -r)
# 解压并进入目录
unzip rtl8821ce-master.zip
cd rtl8821ce-master
# 运行安装脚本(如果换用其他仓库,请参考该仓库的 README 说明。)
sudo ./dkms-install.sh
# 安装完后重启
sudo reboot
💡 提示: DKMS(动态内核模块支持)的好处是:内核升级后驱动会自动重新编译,不用每次手动操作。
方案三:手机 USB 网络共享(最省事)
适合有安卓手机的场景,基本不需要任何额外步骤。
操作步骤:
# 验证 USB 网络是否连通
ip addr show usb0
ping -c 3 baidu.com
# 有网后正常 apt 安装驱动
sudo apt update
sudo apt install bcmwl-kernel-source # 以 Broadcom 为例
⚠️ 注意: 部分华为手机 USB 共享功能需要安装 HiSuite 才能启用,或者在"设置 → 移动网络 → 个人热点 → USB 共享网络"中手动开启。
离线安装常见报错速查
| | |
|---|
dpkg: dependency problems | | 一并下载依赖包,或联网后 apt install -f |
DKMS make.log报错 / build failed | | sudo apt install linux-headers-$(uname -r) |
modprobe: FATAL: Module not found | | |
Secure Boot violation | | BIOS 关闭 Secure Boot,或用 MOK 签名 ,如果不想关闭 Secure Boot,可以在安装过程中按提示设置 MOK 密码。 |
wl: version magic mismatch | | |
蓝牙:基础安装与配置
解决了 Wi-Fi 问题之后,我们来看蓝牙。蓝牙和 Wi-Fi 一样,也分"内核驱动"和"蓝牙协议栈"两层。
Linux 蓝牙架构
| | |
|---|
| | |
| btusb / btintel / btrtl 等 | |
| | |
| blueman / GNOME 蓝牙 / bluetoothctl | |
安装蓝牙支持包
# 安装 BlueZ 协议栈和图形工具
sudo apt install bluetooth bluez blueman
# 启动蓝牙服务
sudo systemctl enable bluetooth
sudo systemctl start bluetooth
# 检查蓝牙状态
systemctl status bluetooth
用图形界面配对(推荐新手)
命令行配对(bluetoothctl)
当图形界面不可用,或者配对出现问题时,用命令行更可靠。
# 进入 bluetoothctl 交互模式
bluetoothctl
进入后按以下顺序操作:
蓝牙常见问题速查
| | |
|---|
| | sudo systemctl start bluetooth |
rfkill | | sudo rfkill unblock bluetooth |
| | |
| Profile 问题(HSP/HFP vs A2DP) | 用 pavucontrol 切换到 A2DP Sink ,如果 pavucontrol 里没有 A2DP 选项,说明蓝牙驱动不支持,可能需要更新 linux-firmware |
| | bluetoothctl trust AA:BB:CC:DD:EE:FF |
| | |
| | 关闭蓝牙省电:/etc/bluetooth/main.conf 中加 AutoEnable=true |
蓝牙双启动(Windows + Linux 共用蓝牙设备)
这是双系统用户经常遇到的坑:在 Windows 配对过的蓝牙鼠标/键盘,切换到 Linux 后要重新配对,然后回 Windows 又失效了。
根本原因:蓝牙配对时会生成一个加密密钥(Link Key),Windows 和 Linux 各自保存的密钥不同,设备只认最后一次配对的密钥。
解决方案(让两个系统共用同一密钥):
| |
|---|
| |
| |
| 进 Windows 注册表,找到该设备的 Link Key |
| 注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\<蓝牙适配器MAC>\<设备MAC> |
| |
| |
| Linux 密钥文件路径:/var/lib/bluetooth/<适配器MAC>/<设备MAC>/info |
⚠️ 注意: Windows 注册表中的 MAC 地址是连续字符串(如 AABBCCDDEEFF),Linux 中是 AA:BB:CC:DD:EE:FF,需要转换格式。
# Linux 中查看蓝牙设备信息文件
sudols /var/lib/bluetooth/
# 找到你的适配器 MAC,进入对应目录
sudocat /var/lib/bluetooth/XX:XX:XX:XX:XX:XX/YY:YY:YY:YY:YY:YY/info
💡 提示: 这个操作稍微繁琐,但只需要做一次。之后 Windows/Linux 切换时,蓝牙设备会无缝自动连接,非常方便。
Intel 网卡蓝牙固件缺失处理
Intel 的 Wi-Fi + 蓝牙组合芯片(如 Intel AX200/AX210)有时蓝牙工作但缺固件,会出现"蓝牙已连接但音质差"或"蓝牙时断时续":
# 检查是否有固件缺失提示
dmesg | grep -i bluetooth
dmesg | grep -i "firmware"
# 如果看到 "failed to load firmware" 字样,安装固件包
sudo apt install linux-firmware
# 重启蓝牙服务
sudo systemctl restart bluetooth
Wi-Fi 驱动系列小结
| | |
|---|
| 识别网卡、在线安装(Intel/Realtek/Broadcom/MediaTek) | |
| | |
实战练习
# === Wi-Fi 离线安装验证练习 ===
# 1. 确认网卡型号
lspci -nnk | grep -i network
# 2. 检查当前驱动状态
lsmod | grep -E "(wl|rtl|iwlwifi|ath)"
# 3. 检查 rfkill 封锁状态
rfkill list
# 4. 如果有软封锁,解除
sudo rfkill unblock wifi
sudo rfkill unblock bluetooth
# === 蓝牙配对练习 ===
# 5. 确认蓝牙服务运行
systemctl status bluetooth
# 6. 用 bluetoothctl 扫描并配对一个设备
bluetoothctl
# 在交互模式里:power on → scan on → devices → pair XX → connect XX → trust XX → exit
# 7. 验证蓝牙设备已连接
bluetoothctl devices Connected
# 8. 蓝牙耳机验证音频(需要已连接耳机)
pactl list sinks | grep -A 5 bluez
💡 下篇预告: Linux 休眠与挂起——为什么 Linux 盖上盖子不睡觉、为什么唤醒后黑屏,以及 suspend 和 hibernate 的区别与修复方法。