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

视频:https://www.youtube.com/watch?v=AnSuwC8ZB3U

下载:https://downloads.openwrt.org/

OpenWrt系列教程汇总:http://www.openwrt.org.cn/bbs/thread-60-1-1.html

前世今生

Open + WRT

  • Open Source : 开放源代码
  • WRT 来自于2002年发布的 LinkSys WRT 54G
    OpenWRT LEDE - 前世今生、版本、目录结构_第1张图片

    这个版本相当经典,以至于现在的版本仍然沿用相似的外观(就像苹果这样吧。。)
    OpenWRT LEDE - 前世今生、版本、目录结构_第2张图片

LinkSys WRT 54G 的创新点在于首次使用 linux 内核开发的路由系统,由于linux使用GPL,因此基于此开发的 WRT 系统也随之开源了(也就是现在的 OpenWRT)。

说到 linux 不得不说 GPL(GNU General Public License) 通用公共许可证,允许商业销售,但是必须开源,且基于此二次开发的软件也必须开源

GNU 是一个类似 Unix 的操作系统。 由大佬 Richard Stallman 于1983年9月发布的
OpenWRT LEDE - 前世今生、版本、目录结构_第3张图片OpenWRT LEDE - 前世今生、版本、目录结构_第4张图片

OpenWRT 开源后得到极大的发展

版本

2020年6月14日
OpenWRT LEDE - 前世今生、版本、目录结构_第5张图片
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 … 了)
OpenWRT LEDE - 前世今生、版本、目录结构_第6张图片

Snapshot(dev)

除了稳定版,还有开发版(喜欢最新(踩坑)的同学的版本)

商业版:DDWRT

DDWRT 和 OpenWRT 的关系不大,两者最初都使用的了 LINKSYS 内核,但后来他们走了不同的方向

OpenWRT 基于原来代码,重写驱动和组件
DDWRT 实际是一个开源的商业项目,在其上面的继续演化

(类似Linux中的CentOS和Redhot的区别)

OpenWRT LEDE - 前世今生、版本、目录结构_第7张图片

中国版:PandoraBox

大家可能还听过PandoraBox。它是一个国内项目,当年OpenWRT社区创始人之一LinTel带团队维护的。

这个版本对 OpenWRT 做了很多的深度定制,系统偏向稳定(但是17还是18年开始就停止开发了。。所以内核基本停止在了3.14)
OpenWRT LEDE - 前世今生、版本、目录结构_第8张图片

小白版: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://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 /include OpenWrt 的很多Makefile都存放在这里,文件名为*.mk
这里的文件是在Makefile里被include的,类似于库文件,这些文件定义了编译过程
5 /package 存放了 OpenWrt 系统中适用的软件包,包含针对各个软件包的Makefile
6 /scripts 存放了一些脚本,使用了 BashPythonPerl 等多种脚本语言
编译过程中,用于第三方软件包管理的feeds文件也是在这个目录当中
在编译过程中,使用到的脚本也统一放在这个目录中
7 /target OpenWrt 的源码可以编译出各个平台适用的二进制文件,各平台在这个目录里定义了firmwarekernel的编译过程
8 /toolchain 存放的就是编译交叉编译链的软件包
包括:binutilsgcclibc等等
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)