DIY 编译 openwrt 固件
一.线上云编译
- 请参考:https://p3terx.com/archives/build-openwrt-with-github-actions.html
- 各机型构建模板可参考:https://opensourcelibs.com/lib/openwrt-diy
二.手动编译
这部分采用 大雕lean 的官方教程.链接:https://github.com/coolsnowwolf/lede
注意:
- 不要用 root 用户进行编译!!!
- 国内用户编译前最好准备好扶墙手段.
- 默认登陆IP 192.168.1.1 密码 password
编译命令如下:
-
首先装好 Ubuntu 64bit,推荐 Ubuntu 20.04 LTS x64
-
命令行输入
sudo apt-get update
,然后输入sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync
-
使用
git clone https://github.com/coolsnowwolf/lede
命令下载好源代码,然后cd lede
进入目录 -
加载三方插件库,可修改
feeds.conf.default
或者直接 clone 到 lede/package 目录内,然后执行下方代码
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig # 构建的机型还有插件都在这步里选,LUCI选项里有大部分插件和主题了.
-
make -j8 download V=s
下载dl库(国内请尽量全局扶墙上网) -
输入
make -j1 V=s
(-j1 后面是线程数。第一次编译推荐用单线程)即可开始编译你要的固件了。
本套代码保证肯定可以编译成功。里面包括了 R21 所有源代码,包括 IPK 的。
二次编译:
cd lede
git pull
./scripts/feeds update -a && ./scripts/feeds install -a
make defconfig
make -j8 download
make -j$(($(nproc) + 1)) V=s
如果需要重新配置:
rm -rf ./tmp && rm -rf .config
make menuconfig
make -j$(($(nproc) + 1)) V=s
编译完成后输出路径:bin/targets
以上还需要注意的是国内机器在下载的时候,需要添加:export GOPROXY=https://goproxy.io
剩下的,只要网络没问题,基本就OK了.
三.单独编译插件
tips:如果只想编译某个组件,比如某个.ipk,那么可以使用 sudo make package/xx/compile V=99
其中xx
是组件的名字,比如我要单独编译click modular router组件,OpenWrt的安装包中也有Click但是版本很旧已经被标注BROKEN,所以在menuconfig里面是不可见的,所以我要单独编译生成click.ipk然后使用opkg安装到路由器中。
https://github.com/rriggio/openw ... ster/click/Makefile
复制这个makefile替换feeds/packages/net/click
重的Makefile,然后cd $TOPDIR,执行:
sudo make package/click/compile V=99
即可在bin/ar71xx/packages目录下生成click_20131011-1_ar71xx.ipk
如果要生成所有选中的packages组件,执行:make package/compile 即可。
也可参考: https://jarviswwong.com/compile-ipk-separately-with-openwrt.html