OpenWRT编译指南
一、编译基础认知
1.应用场景:
- 智能网关:通过插件实现家长控制、广告屏蔽(如AdGuard)和带宽管理,提升流媒体体验
- VPN服务器搭建:内置OpenVPN和ipsec支持,为企业提供安全的远程访问通道
- 流量监控与QoS:通过Ntopng等工具实时分析流量,按业务优先级分配带宽
2.编译环境要求
-
Linux操作系统:
我这边使用的是在虚拟机里搭建ubuntu 22,你也可以使用其他的,关于如何各个系统版本如何搭建开发环境在openwrt官方都有教程,下面是链接。
https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem -
存储空间与内存需求
存储空间:建议在虚拟机里初始存储空间至少100G,避免后期扩容麻烦
内存需求:4GB -
网络连接注意事项
第一次下载download源码需要科学上网,不然下载可能会失败。
二、环境搭建
- 安装编译依赖
# 更新软件列表
sudo apt update
# 安装开发环境所需依赖
sudo apt install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev python3-distutils python3-setuptools rsync swig unzip zlib1g-dev file wget
- 获取源代码
# (GitHub镜像库速度快)
git clone https://github.com/openwrt/openwrt.git
或
# (官网速度慢)
git clone https://git.openwrt.org/openwrt/openwrt.git
三、配置系统
- 基础配置流程
- 更新feeds
# 更新所有已配置的软件源(feeds)的元数据。 ./scripts/feeds update -a # 将软件包从 feeds 安装到编译环境中,使其可被编译系统识别。 ./scripts/feeds install -a
- 更新feeds
- 图形化配置界面使用
# 在根目录运行下面的命令进入openwrt的图形化配置界面
make menuconfig
选择前三项分别是架构,芯片型号,具体的路由器型号,我这边用的是小米cr6608。完成后选择exit后save保存即可。
四、编译过程
- 完整编译指令
make V=99 # 编译完成后固件位置:/bin/target
- 编译产物解析
- 源码初始目录:
tools:包含了获取和生成编译工具的指令。
toolchain:交叉编译软件包,包括binutils, gcc, libc等。
include:包含了一些mk文件。
scripts:用于软件包管理的脚本。
config:存放着整个系统的配置文件。
docs:是对源码的说明文档。
target:定义了firmware和kernel的编译过程。
package:软件包的源码及Makefile。 - 生成目录:
dl:软件包下载后都放到了这个目录下。
build_dir:在编译过程中,软件包都会解压到该目录。
staging_dir:编译完成的软件,这里的子目录结果跟build_dir相同。
feeds:软件包套件的放置位置。
bin:编译生成的firmware和各种ipk都会放到该目录下。
五、刷机操作
1.买一个二手路由器刷不死bread(需要自行百度)
2.刷openwrt-ramips-mt7621-xiaomi_mi-router-cr6608-squashfs-firmware.bin固件,用我上面配置生成的话就是这个文件(目录:bin/target/ramips/mt7621)
ps:在这个目录下一般有三个要用到的文件
各文件作用详解
1. openwrt-ramips-mt7621-xiaomi_mi-router-cr6608-squashfs-firmware.bin
用途:首次刷机或完全重装固件。
适用场景:
从原厂系统或其他固件(如 Padavan、PandoraBox)刷入 OpenWrt。
路由器变砖后通过 Breed/Uboot 等恢复工具刷入。
特点:
包含完整的系统镜像(内核 + 根文件系统),使用 squashfs 只读压缩文件系统。
刷入后会覆盖整个 Flash 分区,清空原有配置。
2. openwrt-ramips-mt7621-xiaomi_mi-router-cr6608-initramfs-kernel.bin
用途:临时启动内核(用于救援或测试)。
适用场景:
路由器无法正常启动时,通过 TFTP/U-Boot 加载到内存中临时运行。
快速测试新内核功能,无需刷写 Flash。
特点:
包含 initramfs 临时根文件系统,运行在内存中,断电后配置丢失。
不修改 Flash,适合调试或救砖。
3. openwrt-ramips-mt7621-xiaomi_mi-router-cr6608-squashfs-sysupgrade.bin
用途:从旧版 OpenWrt 升级到新版。
适用场景:
已运行 OpenWrt 的路由器,保留配置升级系统。
通过 Web 界面或 sysupgrade 命令执行升级。
特点:
仅更新系统分区,保留用户配置(如网络设置、安装的软件)。
使用 squashfs 文件系统,确保升级后系统稳定性。
最后:到此路由器刷机就完成了,openwrt默认网关为192.168.1.1,网页操作界面还没配置,下一期教大家怎么配置