如何编译openwrt固件

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源码需要科学上网,不然下载可能会失败。

二、环境搭建
  1. 安装编译依赖
# 更新软件列表
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
  1. 获取源代码
# (GitHub镜像库速度快)
git clone https://github.com/openwrt/openwrt.git
或
# (官网速度慢)
git clone https://git.openwrt.org/openwrt/openwrt.git
三、配置系统
  1. 基础配置流程
    • 更新feeds
      # 更新所有已配置的软件源(feeds)的元数据。
      ./scripts/feeds update -a
      # 将软件包从 feeds 安装到编译环境中,使其可被编译系统识别。
      ./scripts/feeds install -a
      
  2. 图形化配置界面使用
# 在根目录运行下面的命令进入openwrt的图形化配置界面
make menuconfig

选择前三项分别是架构,芯片型号,具体的路由器型号,我这边用的是小米cr6608。完成后选择exit后save保存即可。
在这里插入图片描述

四、编译过程
  1. 完整编译指令
    make  V=99
    # 编译完成后固件位置:/bin/target
    
  2. 编译产物解析
  • 源码初始目录:
    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,网页操作界面还没配置,下一期教大家怎么配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值