OpenWrt系统固件自编译的两种方法

大多数情况下,你可以直接从OpenWrt官网下载固件用于你的路由器中,但是有时不想采用官网固件中的一些缺省配置,例如你希望能根据你的可存储空间情况自主决定来安装哪些应用程序,或者是添加上你自编译的特殊应用程序,这时你需要用到固件自编译。下面我们就来讲解一下OpenWrt系统固件自编译的两种方法,一种是系统源码自编译法,另一种是ImageBuilder自编译法。

一、系统源码自编译法

>> 该方法是从最基本的系统源码开始编译,讲究一切从零开始,根据路由器实际情况点单式编译固件,优点是适用面广、编译自由,缺点是比较复杂,需要一定的专业技能。

编译环境的建设请参考本网站文章:搭建OpenWrt系统的自编译环境

1、官方源码自编译

1)下载源码

git clone https://git.openwrt.org/openwrt/openwrt.git

2)进入编译目录

cd openwrt

3)更新并安装feeds

./scripts/feeds update -a

./scripts/feeds install -a

4)配置:选择编译固件的型号及自带的应用程序

make menuconfig

OpenWrt系统固件自编译的两种方法

5)编译

首次:make -j1 V=s

其它:make -j$(($(nproc) + 1)) V=s

成功编译后,你就会以下类似目录里发现你要编译的固件,例如:

./bin/targets/ar71xx/generic/

2、第三方源码自编译

国内最有名的第三方源码是Lean大拓展的Lede源码,目前也已经有合并后OpenWrt的转移版本,详见Github项目网址:

https://github.com/coolsnowwolf

具体编译过程如下:

git clone https://github.com/coolsnowwolf/lede.git
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
make -j8 download V=s
make -j1 V=s
二、ImageBuilder自编译法

>> 该方法是采用ImageBuilder工具,在官网缺省配置的基础上,通过增减应用程序(含自编译应用)来完成固件自编译,优点是操作相对简单、容易掌握,缺点是使用范围较窄。

1、下载并解压(以 ath79/generic 设备的snapshots版本为例)

wget https://downloads.openwrt.org/snapshots/targets/ath79/generic/openwrt-imagebuilder-ath79-generic.Linux-x86_64.tar.xz
tar xJf openwrt-imagebuilder-ath79-generic.Linux-x86_64.tar.xz
rm openwrt-imagebuilder-ath79-generic.Linux-x86_64.tar.xz

2、进入编译目录

cd openwrt-imagebuilder-ath79-generic.Linux-x86_64

3、常用编译命令说明

1)make help       # 看一下有哪些编译命令可用

2)make info        # 查看此类别设备具体有哪些?对应 PROFILE 参数

3)make image PROFILE=tplink_tl-wdr7500-v3       # 以缺省状态编译TP-Link TL-WDR7500 v3路由器的OpenWrt固件

4)make image PROFILE=XXX PACKAGES=”pkg1 pkg2 pkg3 -pkg4 -pkg5 -pkg6″       # 编译XXX固件,同时在缺省状态中新增pkg1、pkg2、pkg3应用程序,删除pkg4、pkg5、pkg6应用程序

成功编译后的固件,可以在类似目录下找到:source/bin/targets/xxx

其它,Image Builder详细使用说明可以参考:https://openwrt.org/docs/guide-user/additional-software/imagebuilder