OpenWrt学习笔记7 -- 让人类重建巴别塔的UCI之UCI配置文件

        我们知道,其实OpenWrt是由很多开源项目组成的操作系统。而这些开源项目所使用的配置文件语法又各不相同,例如samba、dhcp,dnsmasq,等等等等。而为了方便管理,OpenWrt创造了UCI,全称是Unified Configuration Interface,统一配置接口。它通过init脚步、uci配置文件将这些不同的语法统一成uci语法。首先要注意到三个目录:

  1. /etc/config/:存放uci配置文件,每个文件对应系统一个部分,当我们通过luci修改系统设置时,其实修改的就是这些文件;
  2. /etc/init.d/:存放init脚步,有一个非常重要的任务是读取上面的uci配置文件,生成对应daemon进程的配置文件,启动daemon进程;
  3. /etc/rc.d/:存放符号链接,链向被使能(enable)的init脚步,这些符号链接的命名是S+2位数字+init脚步名。记得我们在分析开机流程 的时候看到的,S开头表示在开机时运行,2位数字表示运行顺序

        我们先来讲uci配置文件好了。

UCI配置文件语法

        如上所述,UCI配置文件放在/etc/config目录下。每一个文件都是一个config,这个是uci里的术语。

        以/etc/config/system为例:

config system
	option hostname 'OpenWrt'
	option timezone 'UTC'

config timeserver 'ntp'
	list server '0.openwrt.pool.ntp.org'
	list server '1.openwrt.pool.ntp.org'
	list server '2.openwrt.pool.ntp.org'
	list server '3.openwrt.pool.ntp.org'
	option enabled '1'
	option enable_server '0'

config led 'led_power'
	option name 'power'
	option sysfs 'xiaomi:red:status'
	option default '1'

        config文件里面是一个个的section,分别以config关键字开头。例如上面的system就分成了3个section。

        每个section都由config关键字开头,后跟两个参数,对应section有两个属性,一个是type,一个是name。type的必须设置的,name可以省略。例如“config timeserver 'ntp'”表示type为timeserver,name为ntp。而“config system”则只设置了type为system,省略了name。

        section由option或者list组成。首先要注意到,uci并没有数据类型之说,数字、字符串、布尔值都是用字符串来表示,由uci上层自行分析。option 关键字后跟名字跟值(value)。list也一样,多个list可能享有同一个名字,表示大家都是list的element之一。如果值(value)中含有空格,则需要用双引号("")或者单引号('')括起来。

命令行工具uci

        UCI提供了多种语言的api,包括lua,c语言,还提供了一个名为uci的命令行工具。

        注意,使用uci修改配置之后,需要用uci commit + 配置名将修改实际写到 flash中。

        使用uci工具时,指定section有两种方式,一是指定section的名字,也就是confg关键字的第二个 参数。另一个是指定 type,type的写法比较麻烦,是@Type[index],因为一个type可能有多个section,所以要用下标来指定。例如查询system配置中的ntp:

uci show system.ntp #query by name
uci show system.@timeserver[0]  #query by type

 

参考资料:

  1. The UCI System

  2. Init Scripts

转载于:https://my.oschina.net/u/3258476/blog/841641

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值