OpenWRT
启动过程
OpenWrt的启动流程:
1.Bootloader
2.linux
3./etc/preinit
4./sbin/init
5./etc/inittab
6./etc/init.d/rcS
7./etc/rc.d/S*
由于OpenWRT是一款基于Linux内核的操作系统,所以启动过程和其他Linux发行版操作系统类似:由uboot启动操作系统内核,其余步骤所有操作由内核来完成。
配置文件
/etc/config/dhcp 面向LAN口提供的IP地址分配服务配置
/etc/…/dropbear SSH服务配置
/etc/…/firewall 路由转发,端口转发,防火墙规则
/etc/…/network 自身网络接口配置
/etc/…/system 时间服务器时区配置
/tec/…/wireless 无线网络配置
在OpenWRT中配置文件的修改可以直接通过Vim编辑器来修改,也可以通过UCI来修改。
Openwrt管理这些配置文件有一种专门的数据管理方式,即UCI,我们可以直接调用UCI命令来修改这些配置文件。
UCI的语法使用举例:
建立list: uci add_list yuan.main.listen_http=0.0.0.0:80
建立option: uci set yuan.main.home=/www
uci set yuan.mian.ubus=/ubus
uci commit yuan
查看无名节点: uci show wireless.@wifi-device[0]
UCI配置文件中的各个部分按照大小或者功能的不同而分为package,section,option
其包含关系为:package->section->option
Ubus相关
一种进程间通信机制,他的模型和socket相似
ubus提供了一个server:ubusd
ubus提供了创建client端的接口,并提供了三种现成的客户端供用户使用:shell、lua、C
ubus对消息格式进行了定义,都必须封装成json消息格式
ubus对client消息处理抽象出“object”“method”。一个对象中包含多个方法。client需要向server注册收到特定json消息时的处理方法。
ubus的具体实现原理(参考了CSDN落尘纷扰的博文)
Openwrt命令行中ubus的调用:
无参:ubus call(对象+方法)
有参:ubus call 对象 + 方法 ‘{“”}’
注:对象和方法需要自己编程实现