OpenWrt简介
OpenWrt 是一个嵌入式设备的 Linux 发行版,以 GPL 许可协议发行
其主要特点有如下几个:
● 代码里不含第三方开源包,只包含开源包地址链接。在编译的时候下载。
● 编译时自动下载源代码、打补丁来满足指定平台要求,并编译。还可以修改
Makefile 来下载最新的软件包。
● 使用 LuCI 作为最终用户管理界面。LuCI 以 Apache 许可协议发布 Web 管理功能
代码。
● UCI 通用配置管理方法。
● 通过脚本来调用 iptables 来实现防火墙功能,配置保存在 UCI 文件中。
● 开放和可扩展的 OPKG 格式安装升级包。
为什么使用OpenWrt来作为开发路由器的平台,我的理解是:开放,易用,开发者众多。
OpenWrt整体框架
LUCI就是我们常说的Web配置页;TR069是一种远程管理服务,主要用于CPE等设备,可以网上了解下CWMP。 SNMP也是类似的服务,逐渐呗TR069替代。
其他部分后面随着学习深入我们再逐渐了解。
代码获取
OpenWrt有自己的官网,可以根据手里面的设备去官网获取,不同的硬件厂家也不断上传自己的代码和分支。 本人手里面是MI4设备,代码地址:https://github.com/openwrt/openwrt.git,可以自己使用git拉取。
官网地址:https://openwrt.org/
我们拉取下来没有这么多文件夹,部分文件夹是开始编译后才生成的。
scripts:存放一些脚本
feeds:存放一些第三方代码包或者代码地址
package:存放一些常用的软件包,是最常用的文件夹
dl:编译之后根据配置功能下载的软件包存放地址,避免每次编译都更新代码
build_dir:编译中间文件夹,将参与编译的模块代码根据mk文件拷贝或解压到此文件夹后再进行编译
bin:编译生成的文件在此文件夹下
编译环境配置
OpenWrt使用feed包管理额外的代码SDK,即可以运行在系统中的一些应用包。
在代码拉取完毕之后,我们会先更新一下所有包的链接信息,用来匹配mk文件的修改。
./scripts/feeds update -a
所有的链接被更新完毕之后,进行初步的安装
./scripts/feeds install -a
安装完毕之后,我们运行make menuconfig 来进行一个初步的功能选择和芯片配置。
make menuconfig
MI4的配置按照图中选择配置,然后退出保存。
make defconfig
进行编译检查,如果编译环境不完整,可以按照提示进行完善。linux安装软件包这里不再赘述。
最后进行编译
make V=s -j4
V=s或者99 是编译输出的信息等级
-j4是参与编译的内核熟练,视电脑配置自己决定。
生成的包
编译完成后会生成一些bin文件:openwrt\bin\targets\ramips\mt7621文件夹下
主要关注:
openwrt-ramips-mt7621-xiaomi_mi-router-4-initramfs-kernel.bin
此文件可以用来再breed中进行升级,刷入kernel,再开机时会从RAM启动一个临时的web界面,用于空板升级。
openwrt-ramips-mt7621-xiaomi_mi-router-4-squashfs-sysupgrade.bin
此文件可以用于已经刷入对应系统之后的版本升级。