OpenWRT LEDE - 前世今生、版本、目录结构

前世今生

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 指定 “死” 机

  1. 版本名如此怪异。。明显是为了凑字符。
  2. 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下载有packagesmanagementluciroutingtelephony
如要下载其他的软件包,需打开源码根目录下面的feeds.conf.default文件,去掉相应软件包前面的#号,然后更新源:
./scripts/feeds update -a
安装下载好的包:
./scripts/feeds install -a
4/includeOpenWrt 的很多Makefile都存放在这里,文件名为*.mk
这里的文件是在Makefile里被include的,类似于库文件,这些文件定义了编译过程
5/package存放了 OpenWrt 系统中适用的软件包,包含针对各个软件包的Makefile
6/scripts存放了一些脚本,使用了 BashPythonPerl 等多种脚本语言
编译过程中,用于第三方软件包管理的feeds文件也是在这个目录当中
在编译过程中,使用到的脚本也统一放在这个目录中
7/targetOpenWrt 的源码可以编译出各个平台适用的二进制文件,各平台在这个目录里定义了firmwarekernel的编译过程
8/toolchain存放的就是编译交叉编译链的软件包
包括:binutilsgcclibc等等
9/tools编译时,主机需要使用一些工具软件,tools 里包含了获取和编译这些工具的命令软件包里面有Makefile文件,有的还包含了patch
每个Makefile当中都有一句$(eval $(call HostBuild)),这表明编译这个工具是为了在主机上使用的
10Config.ininclude/toplevel.mk中可以看到,这是和make menuconfig相关联的文件
11feeds.conf.default可以配置下载第三方软件包时所使用的地址
12Makefile在顶层目录执行make命令的入口文件
13rules.mk定义了Makefile中使用的一些通用变量和函数
14LICENSE软件许可证
15README软件基本说明:描述了编译软件的基本过程和依赖文件

编译一次 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编译过程中出错的信息,只有当编译出错了才会出现

固件编译相关的资料可以参考这里:

  1. openwrt - 编译过程梳理 - https://lawsssscat.blog.csdn.net/article/details/107305357
  2. openwrt - 编译固件(资料整理) - https://lawsssscat.blog.csdn.net/article/details/103744761
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骆言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值