OpenWrt 简单介绍

By | 2020-01-02

原文: https://blog.csdn.net/hongwei_1990/article/details/93791798

  OpenWrt(官网 www.openwrt.org)是一个嵌入式的 Linux 发行版,目前常用在路由器上。它是一个高度模块化、高度自动化的嵌入式 Linux 系统,拥有强大的网络组件扩展性
   OpenWrt 不同于其他许多用于路由器的发行版(主流路由器固件有 DD-WRT,Tomato,OpenWrt 三类),它是一个从零开始编写的、功能齐全的、容易修改的路由器操作系统。

一、OpenWrt 优点

  通过 OpenWrt 快速构建一个应用平台,OpenWrt 从交叉编译器,到 Linux 内核,再到文件系统甚至 Bootloader 都整合在了一起,形成了一个SDK环境。其多达 3000 多种软件包(数量还在增加),囊括从工具链(Toolchain),到内核(Linux Kernel),到软件包(Packages),再到根文件系统(Rootfs)整个体系,使得用户只需简单的一个make命令即可方便快速地定制一个具有特定功能的嵌入式系统来制作固件,大大减少了嵌入式软件开发的工序。
  当你熟悉这些嵌入式 Linux 的基本开发流程后你不再局限于MIPS处理器和无线路由器,你可以尝试在其它处理器,或者非无线路由器的系统移植嵌入式 Linux,定制合适自己的应用软件,并建立一个完整的嵌入式产品。
   OpenWrt 的成功之处还在于它的文件系统是可写的,开发者无需在每一次修改后重新编译系统,并且可以像 PC 机上的 Linux 系统一样,用命令安装一些安装包,不用手动配置,这些都令它更像一个小型的 Linux 电脑系统。

二、OpenWrt 版本发展

  OpenWrt 所支持的平台包括:Broadcom的SoC,ARM,PowerPC,MIPS 24K R2,x86 。在软件应用上出现了以 LuCi 跟 Webif 为首的 UI 以及各种更新软件包。

序号版本发布日期代号
110.03.1 2011/12 Backfire
212.09 2013/4 Attitude Adjustment
314.07 2014/10 Barrier Breaker
415.05 2015/9 Chaos Calmer
515.05.1 2016/3 Chaos Calmer
618.062018/7 Chaos Calmer

三、OpenWrt源码

序号目录和文件描述
1/config存放着整个系统的配置文件
2/docs包含了整个宿主机的文件源码的介绍, 里面还有Makefile 为目标系统生成 docs
使用make -C docs/可以为目标系统生成文档
3/feeds下载管理软件包的
默认的feeds下载有packages、management、luci、routing、telephony
4/includeOpenWrt 的很多Makefile都存放在这里,文件名为*.mk;这里的文件是在Makefile里被include的,类似于库文件
这些文件定义了编译过程
5/package存放了 OpenWrt 系统中适用的软件包,包含针对各个软件包的Makefile
6/scripts存放了一些脚本,使用了 bash,Python,perl 等多种脚本语言
编译过程中,用于第三方软件包管理的feeds文件也是在这个目录当中
在编译过程中,使用到的脚本也统一放在这个目录中
7/targetOpenWrt 的源码可以编译出各个平台适用的二进制文件,各平台在这个目录里定义了firmwarekernel的编译过程
8/toolchain存放的就是编译交叉编译链的软件包
包括:binutils,gcc,libc等等
9/tools编译时,主机需要使用一些工具软件,tools 里包含了获取和编译这些工具的命令
软件包里面有Makefile文件,有的还包含了patch
每个Makefile当中都有一句$(eval $(call HostBuild)),这表明编译这个工具是为了在主机上使用的
10Config.ininclude/toplevel.mk中可以看到,这是和make menuconfig相关联的文件
11feeds.conf.default可以配置下载第三方一些软件包时所使用的地址
12Makefile在顶层目录执行make命令的入口文件
13rules.mk定义了Makefile中使用的一些通用变量和函数
14LICENSE软件许可证
15READNE软件基本说明:描述了编译软件的基本过程和依赖文件

编译一次 OpenWrt 源码后,会出现一些新的目录:

序号目录描述
1/build_dir/host在该文件夹中编译主机使用的工具软件
2/build_dir/target-mipsel_xxx在此编译目标平台的目标文件,包括各个软件包和内核文件
3/build_dir/toolchain-mipsel_在该文件夹中编译交叉工具链
4/bin保存编译完成后的二进制文件
包括:完整的 bin 文件,所有的 ipk 文件
5/dl在编译过程中使用的很多软件
刚开始下载源码并没有包含,而是在编译过程中从其他服务器下载的;这里是统一的保存目录
6/staging_dir用于保存在build_dir目录中编译完成的软件
所以这里也和build_dir有同样的子目录结构
比如:在target-XXX文件夹中保存了目标平台编译好的头文件,库文件
在我们开发自己的ipk 文件时,编译过程中,预处理头文件,链接动态库,静态库 都是到这个子文件夹中
7/tmp在编译过程中,有大量中间临时文件需要保存,都是在这里
8/logs编译过程中出错的信息,只有当编译出错了才会出现

发表评论

邮箱地址不会被公开。 必填项已用*标注