跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Linux 内核配置添加 WiFi 驱动和固件

介绍 Linux 内核配置流程及 WiFi 驱动添加方法。通过修改.config 文件、使用 menuconfig 工具进行选项设置,并编译内核。具体步骤包括添加编译器路径、复制驱动文件夹至内核源码、修改 Makefile 与 Kconfig 文件、开启对应驱动选项、编译内核生成模块。最后将生成的.ko 驱动文件和固件复制到根文件系统指定目录,完成 WiFi 功能支持。

指针猎手发布于 2026/2/26更新于 2026/7/2565 浏览

1 概述

内核编译时会根据内核目录下的.config 文件进行编译,而进行内核配置时实际上就是修改.config 文件。一般常见的硬件平台在内核目录 arch/<平台>/configs/文件夹下会包含有默认的配置文件,可以使用 cp 命令将其覆盖内核根目录下的.config 文件。

在编译前都必须使用配置命令在内核根目录下进行一次配置(即使是使用默认的配置文件也必须这样做)。而配置命令有以下几种:

  1. Kconfig 是'规则',定义所有可配置项;
  2. deconfig 是'模板',提供快速初始化配置;
  3. .config 是'结果',包含最终编译所需的完整配置;
  4. 配置工具是'桥梁',连接规则与结果,确保依赖关系正确。

通过这一套体系,Linux 内核实现了高度可定制化,支持从嵌入式设备到服务器的广泛场景。

make ARCH=<平台> config #比较繁琐,不推荐
make ARCH=<平台> oldconfig #常用于内核升级,提示新内核特性
make ARCH=<平台> menuconfig #常用
make ARCH=<平台> xconfig #X 界面的配置方式
make ARCH=<平台> gconfig #GTK 界面的配置方式
make ARCH=<平台> defconfig #使用默认的配置
make ARCH=<平台> allyesconfig #所有配置选项设置为 yes
make ARCH=<平台> allmodconfig #所有选项配置为 module

在配置时,每一项都有几种选项,分别为 Y,N,M。

Y : 代表将此项编译入内核中 N : 代表不将此项编译 M : 代表将此项编译为模块,在需要使用到的时候再加载入内核

在这里插入图片描述

2 操作技巧

  1. 基于现有配置修改
cp /boot/config-$(uname -r) .config # 复制当前系统配置
make menuconfig # 基于现有配置修改
  1. 预设配置选项
scripts/config --set-val CONFIG_XXX y # 命令行修改配置
make olddefconfig # 应用默认值填充未设置的选项
make savedefconfig #当前的配置到一个默认配置文件 defconfig 中
  1. 配置差异分析
diff .config.old .config.new # 比较两个配置文件差异
  1. 环境变量预设
export KCONFIG_CONFIG=myconfig 
 KCONFIG_OVERWRITECONFIG=1 
# 指定自定义配置文件
export
# 强制覆盖原.config

注意事项:

不要手动编辑 .config:应始终通过配置工具修改 处理 CONFIG_DEBUG_INFO:启用会显著增大内核体积 模块化权衡:关键功能(如文件系统驱动)建议编译进内核 架构特定选项:通过 ARCH=arm make menuconfig 指定架构 配置冲突处理:仔细阅读错误提示,解决依赖关系

3 工程裁剪说明

工程规模较大,建议基于现有配置进行修改,注意部分功能(如 USB)可能需要裁剪。

4 内核添加 WiFi 驱动

1 添加编译器路径
export PATH=${PATH}:/opt/loongson-gnu-toolchain-13.2/bin # 添加路径
loongarch64-unknown-linux-gnu-gcc --version # 检查生效
2 复制文件夹修改 makefile Kconfig

内核路径 drivers/net/wireless 下有一个 aic8800 文件夹,复制到新内核中,并修改 wireless 文件夹下的 Makefile 和 Kconfig 文件。

自行添加 makefile 文件:

obj-y += aic8800/ #自行添加
source "drivers/net/wireless/aic8800/Kconfig"
3 编译命令(要有编译器)
make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- ls2k0300_99_pai_wifi_defconfig # 生成 .config 文件
make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- menuconfig # 基于当前 .config 文件加载配置(如果没有 .config,会使用默认配置或 defconfig)
make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- -j$(nproc) # 编译内核生成 vmlinux 和模块

用 menuconfig 的命令开启 aic8800 的驱动,内置和模块化都可以,aic8800_fdrv 一定要有其他不选也行。(模块化要自己编译好驱动自己移植到根文件系统中)

[*] Networking support ---> -*- Wireless ---> <*> cfg80211 - wireless configuration API
[ ] nl80211 testmode command
[ ] enable developer warnings
[ ] cfg80211 certification onus
[*] enable powersave by default
[ ] cfg80211 DebugFS entries
[*] support CRDA
[*] cfg80211 wireless extensions compatibility
<*> Generic IEEE 802.11 Networking Stack (mac80211)
<*> RF switch subsystem support
---> [*] RF switch input support
<*> GPIO RFKILL driver
Device Drivers ---> Network device support ---> [*] Wireless LAN ---> [*] AIC wireless Support (/vendor/etc/firmware) Firmware & config file path #指定 firmware 后面要复制文件到根文件系统
<M> AIC8800 wlan Support
< > AIC8800 bluetooth Support
4 修改设备树

修改设备树和 mmc 驱动即可,接着看看 GPIO 是不是有冲突,默认有一个 PWM 冲突 sdio 去掉 pwm,同时触摸屏也和一个有冲突,用编译命令进行编译。

5 编译

编译后生成了:

在这里插入图片描述

6 复制*.ko

将 2 个 ko 复制出来到根文件系统中

sudo cp aic8800_fdrv.ko /path/to/rootfs/usr/lib/modules/6.9.0-rc7 -r
sudo cp aic8800_bsp.ko /path/to/rootfs/usr/lib/modules/6.9.0-rc7 -r
# 查看一下 ll ~/linux/nfs/lsrootfs/usr/lib/modules/6.9.0-rc7 
7 复制固件

将 firmware 复制到根文件系统,因为在编译内核时,指定 firmware 的位置在 (/vendor/etc/firmware)。文件系统中是复制到了 /usr/lib/firmware/,这时复制到什么地方,是与内核编译时指定的位置相同,后面启动后是要到这里去找对应的固件。

在这里插入图片描述

sudo cp vendor /path/to/rootfs/ -r
# 查看一下 ll ~/linux/nfs/lsrootfs/vendor/etc/firmware 

目录

  1. 1 概述
  2. 2 操作技巧
  3. 3 工程裁剪说明
  4. 4 内核添加 WiFi 驱动
  5. 1 添加编译器路径
  6. 2 复制文件夹修改 makefile Kconfig
  7. 3 编译命令(要有编译器)
  8. 4 修改设备树
  9. 5 编译
  10. 6 复制*.ko
  11. 查看一下 ll ~/linux/nfs/lsrootfs/usr/lib/modules/6.9.0-rc7
  12. 7 复制固件
  13. 查看一下 ll ~/linux/nfs/lsrootfs/vendor/etc/firmware
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 基于 HomeAssistant 实现跨品牌智能家居联动
  • Python生成器函数深度解析:asyncio事件循环底层实现与异步编程实战
  • OpenClaw 对接飞书机器人高频踩坑与解决方案
  • Stable Diffusion WebUI 启动报错:MessageFactory GetPrototype 修复方案
  • 本地大模型助手 Chatbox 安装、配置与应用指南
  • PyCharm Linux 安装与使用指南
  • 深入理解 Xilinx FPGA 开发:Vivado 与 Vitis 流程对比
  • 宇树 G1 机器人强化学习训练环境配置与奖励函数解析
  • DAMO-YOLO 目标检测部署:深色模式与异步渲染的工业 Web 方案
  • Dreamify 免费 AI 绘画工具的功能与实现
  • AIGC 工具全解析:文本、图像、代码、视频及音频生成指南
  • TensorFlow 安装教程
  • 多设备共用键盘鼠标的 Synergy 配置指南(Windows + Ubuntu)
  • Ubuntu 22.04 安装向日葵远程控制
  • 轻量级前端框架对比:Lit 与 Alpine.js 的优势与应用场景
  • Coze 基于行业文章生成思维导图工作流详解
  • Vivado 2019.2 开发环境搭建与配置指南
  • 利用 Blob 对象和 iframe 实现 PDF 跨域打印的 JavaScript 方案
  • Windows 系统安装 Microsoft Visual C++ Build Tools 完整指南
  • 鸿蒙 ArkTS 与 Java 跨平台 TCP 通信实战

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online