network init
1、源码中:package/base-files/files/etc/init.d/boot
生成文件系统中的/etc/rc.d/S10boot
2、调用/bin/config_generate
CFG=/etc/board.json
[ -s $CFG ] || /bin/board_detect || exit 1
[ -s /etc/config/network -a -s /etc/config/system ] && exit 0
检测/etc/board.json是否为空,为空则执行/bin/board_detect调用/etc/board.d/*下的脚本生成/etc/board.json。
检测/etc/config/network 与 /etc/config/system是否为空
第一次的时候为空,执行以下生成它们,第二次就跳过了
touch /etc/config/network //生成network配置
generate_static_network
......
touch /etc/config/system
generate_static_system
......
/# shell & json函数
shell教程:https://www.runoob.com/linux/linux-shell.html
local ifname macaddr protocol type ipaddr netmask
local 命令定义局部变量,作用域为函数内部
json_init 初始化环境变量
json_load "$(cat ${CFG})"
json_add_object 添加一个对象
json_add_string 添加string变量
json_add_int 添加一个对象
json_add_boolean 添加布尔变量
json_add_array 添加数组
json_dump 显示当前的json串
json_select 切换对象
json_get_var 获取某个变量值
[ -n name] || return 判断变量的值,若空,则返回
uci -q 安静模式(不打印错误信息)
使用<<-EOF,告诉主shell,后续的输入,是其他命令或者子shell的输入,直到遇到EOF为止,再回到主shell
/etc/config/dhcp配置文件
1、package/network/services/odhcpd/files/odhcpd.defaults
该脚本新建/etc/config/dhcp配置文件,读取/etc/board.json,重新生成该文件。
注意:删除该文件后无法编译
将该文件内容注释后,将自定义的/etc/config/dhcp拷贝到
package/base-files/files/etc/config目录
编译后即生效自定义的DHCP配置
config dnsmasq
option domainneeded '1'
option boguspriv '1'
option filterwin2k '0'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option nonegcache '0'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.auto'
option nonwildcard '1'
option localservice '1'
config dhcp 'lan'
option interface 'lan'
option ignore '1'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
config odhcpd 'odhcpd'
option maindhcp '0'
option leasefile '/tmp/hosts/odhcpd'
option leasetrigger '/usr/sbin/odhcpd-update'
option loglevel '4'
config dhcp 'wlan'
option start '100'
option leasetime '12h'
option limit '150'
option interface 'wlan'