- 下载:https://downloads.openwrt.org/
- 资料:
- openwrt - 编译过程梳理 - https://lawsssscat.blog.csdn.net/article/details/107305357
- openwrt - 编译固件(资料整理) - https://lawsssscat.blog.csdn.net/article/details/103744761
OpenWrt系列教程汇总 - http://www.openwrt.org.cn/bbs/thread-60-1-1.html- 参考:
- 扒一扒 OpenWRT 系统的前世今生 - https://www.youtube.com/watch?v=AnSuwC8ZB3U
- OpenWrt 快速入门(源码目录) - https://blog.csdn.net/hongwei_1990/article/details/93791798
前世今生
Open + WRT
- Open Source : 开放源代码
- WRT 来自于2002年发布的
LinkSys WRT 54G
这个版本相当经典,以至于现在的版本仍然沿用相似的外观(就像苹果这样吧。。)
LinkSys WRT 54G 的创新点在于首次使用 linux 内核开发的路由系统,由于linux使用GPL,因此基于此开发的 WRT 系统也随之开源了(也就是现在的 OpenWRT)。
说到 linux 不得不说 GPL(GNU General Public License) 通用公共许可证,允许商业销售,但是必须开源,且基于此二次开发的软件也必须开源
GNU 是一个类似 Unix 的操作系统。 由大佬 Richard Stallman 于1983年9月发布的
OpenWRT 开源后得到极大的发展
版本
2020年6月14日
AA:Attitude Adjustment 调整情绪
BB:Barrier Breaker 破界者
CC:Chaos Calmer 混乱平息者
DD:Designated Driver 指定 “死” 机
- 版本名如此怪异。。明显是为了凑字符。
- DD 最后没有发布(由于出现了 LEDE)
LEDE
LEDE Linux Embeded Development Environment 就是 OpenWRT 的一个分支。
当年社区大佬认为社区规则老套、对于新硬件支持不好,于是单干,谁知支持的人多
(许多新功能代码都贡献到了 LEDE 项目中,以至于原本的 OpenWRT 都受到了影响)
2016 年 LEDE 开始分支
2017 年 第一个稳定版本
2018 年 重新合并入 OpenWRT
(OpenWRT 以后版本也没有用 DD EE FF … 了)
Snapshot(dev)
除了稳定版,还有开发版(喜欢最新(踩坑)的同学的版本)
商业版:DDWRT
DDWRT 和 OpenWRT 的关系不大,两者最初都使用的了 LINKSYS 内核,但后来他们走了不同的方向
OpenWRT 基于原来代码,重写驱动和组件
DDWRT 实际是一个开源的商业项目,在其上面的继续演化
(类似Linux中的CentOS和Redhot的区别)
中国版:PandoraBox
大家可能还听过PandoraBox。它是一个国内项目,当年OpenWRT社区创始人之一LinTel带团队维护的。
这个版本对 OpenWRT 做了很多的深度定制,系统偏向稳定(但是17还是18年开始就停止开发了。。所以内核基本停止在了3.14)
小白版:KoolShare LEDE
这个版本对 LEDE 做深度定制,特点是软件中心(安装插件方便,但是稳定性。。。呵呵。。适合小白的系统)
LEAN LEDE (推荐👍)
来自于 恩山 的大神 Lean大 开发的版本。
原贴:https://www.right.com.cn/forum/thread-252647-1-1.html
其代码可以在Github上找到。
https://github.com/coolsnowwolf/lede
按着步骤一步步编译,基本可以编译出自己的一套版本
特点是比较接近原生 OpenWRT(没有做过度的定制化),稳定
另外有丰富的系统插件(应该能满足绝大数人的需求)
功能介绍
https://www.youtube.com/watch?v=e4IAZdAZ60w
插件介绍
https://www.right.com.cn/forum/thread-344825-1-1.html
酸酸乳插件
https://opssh.cn/luyou/72.html
目录结构
参考:https://blog.csdn.net/hongwei_1990/article/details/93791798
序号 | 目录和文件 | 描述 |
---|---|---|
1 | /config | 存放着整个系统的配置文件 |
2 | /docs | 包含了整个宿主机的文件源码的介绍,里面还有Makefile 为目标系统生成 docs 。使用 make -C docs/ 可以为目标系统生成文档 |
3 | /feeds | 下载管理软件包的 默认的 feeds 下载有packages 、management 、luci 、routing 、telephony 如要下载其他的软件包,需打开源码根目录下面的 feeds.conf.default 文件,去掉相应软件包前面的# 号,然后更新源:./scripts/feeds update -a 安装下载好的包: ./scripts/feeds install -a |
4 | /include | OpenWrt 的很多Makefile 都存放在这里,文件名为*.mk 这里的文件是在 Makefile 里被include 的,类似于库文件,这些文件定义了编译过程 |
5 | /package | 存放了 OpenWrt 系统中适用的软件包,包含针对各个软件包的Makefile |
6 | /scripts | 存放了一些脚本,使用了 Bash ,Python ,Perl 等多种脚本语言 编译过程中,用于第三方软件包管理的 feeds 文件也是在这个目录当中在编译过程中,使用到的脚本也统一放在这个目录中 |
7 | /target | OpenWrt 的源码可以编译出各个平台适用的二进制文件,各平台在这个目录里定义了firmware 和kernel 的编译过程 |
8 | /toolchain | 存放的就是编译交叉编译链的软件包 包括: binutils ,gcc ,libc 等等 |
9 | /tools | 编译时,主机需要使用一些工具软件,tools 里包含了获取和编译这些工具的命令软件包里面有Makefile 文件,有的还包含了patch 每个 Makefile 当中都有一句$(eval $(call HostBuild)) ,这表明编译这个工具是为了在主机上使用的 |
10 | Config.in | 在include/toplevel.mk 中可以看到,这是和make menuconfig 相关联的文件 |
11 | feeds.conf.default | 可以配置下载第三方软件包时所使用的地址 |
12 | Makefile | 在顶层目录执行make 命令的入口文件 |
13 | rules.mk | 定义了Makefile 中使用的一些通用变量和函数 |
14 | LICENSE | 软件许可证 |
15 | README | 软件基本说明:描述了编译软件的基本过程和依赖文件 |
编译一次 OpenWrt 源码后,会出现一些新的目录:
序号 | 目录 | 描述 |
---|---|---|
1 | /build_dir/host | 在该文件夹中编译主机使用的工具软件 |
2 | /build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2 | 在此编译目标平台的目标文件,包括各个软件包和内核文件 |
3 | /build_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2 | 在该文件夹中编译交叉工具链 |
4 | /bin | 保存编译完成后的二进制文件 包括:完整的 bin 文件,所有的ipk 文件 |
5 | /dl | 在编译过程中使用的很多软件 刚开始下载源码并没有包含,而是在编译过程中从其他服务器下载的 这里是统一的保存目录 |
6 | /staging_dir | 用于保存在build_dir 目录中编译完成的软件所以这里也和 build_dir 有同样的子目录结构比如:在 target-XXX 文件夹中保存了目标平台编译好的头文件,库文件在我们开发自己的 ipk 文件时,编译过程中,预处理头文件,链接动态库,静态库都是到这个子文件夹中 |
7 | /tmp | 在编译过程中,有大量中间临时文件需要保存,都是在这里 |
8 | /logs | 编译过程中出错的信息,只有当编译出错了才会出现 |
固件编译相关的资料可以参考这里:
- openwrt - 编译过程梳理 - https://lawsssscat.blog.csdn.net/article/details/107305357
- openwrt - 编译固件(资料整理) - https://lawsssscat.blog.csdn.net/article/details/103744761