openwrt 烧写完成之后, 第一次启动会设置 network 的相关参数, 如 ip地址, mac地址, 等.

这里跟踪一下启动之后直到网络参数设置的过程.

  1. /sbin/init -> procd -> "sysinit" -> /etc/rc.d/xxx

  2. /etc/rc.d/S10boot -> /etc/init.d/boot

  3. /etc/init.d/boot -> /bin/board_detect

  4. /bin/board_detect -> /etc/board.d/02_network

看看 /bin/board_detect 都做了什么:

#!/bin/sh

[ -d "/etc/board.d/" -a ! -f "/etc/board.json" ] && {
for a in `ls /etc/board.d/*`; do
[ -x $a ] || continue;
$(. $a)
done
} [ -f "/etc/board.json" ] || return 1
[ -f "/etc/config/network" ] || {
touch /etc/config/network
/bin/config_generate
}
  1. 如果存在 /etc/board.d 目录, 并且, 普通文件 /etc/board.json 不存在, 则执行 /etc/board.d/ 下的所有脚本

  2. /etc/board.json 被创建了, 则立即返回

    这里搞错了,谢谢回复中的朋友指正。 这段的逻辑是:/etc/board.json 存在的话,则继续往下执行;如果不存在则立即返回。

  3. 没有 /etc/board.json 文件, 说明 /etc/board.d/ 下的脚本没有按预期设置参数, 则继续尝试使用 /bin/config_generate 来设置.

这里的第1步使用 /etc/board.json 文件来保证 /etc/board.d/ 下的脚本只执行一次.

/etc/board.d/02_network 脚本中调用了 lib/functions/uci-defaults-new.sh 中的许多接口, 其中 board_config_update() 和 board_config_flush() 就用来创建 /etc/board.json 文件.

如果 /etc/config/network 文件不存在的话,则创建该文件,并执行 /bin/config_generate。下次开机时,由于 /etc/config/network 已经创建,则 /bin/config_generate 不再执行。

root@OpenWrt:/# cat /etc/board.json
{
"network": {
"lan": {
"ifname": "eth0",
"create_vlan": true,
"macaddr": "00:0c:43:76:20:b8"
}
},
"switch": {
"mt7530": {
"enable": true,
"reset": true,
"vlans": {
"lan": [
0,
1,
2,
3
],
"wan": [
4
],
"vlan3": [
5
]
},
"cpu_port": 6
}
}
}

今天查看 openwrt 14.07 release 版本, 其中对 network 的实现有点细微差别.

14.07 中在 /etc/init.d/boot 脚本会在开机时逐一执行 /etc/uci-deafults/ 目录下的脚本, 执行完之后再删除它. 这就保证了该目录下的脚本只会被执行一次, 以后再重启也不会执行到了. 除非恢复初厂设置.

network 的设置就是在 /etc/uci-defaults/02_network 脚本中完成的.

openwrt network 初始化的更多相关文章

  1. openWRT自学---初始化过程和主要脚本的分析

    参考文档: http://wiki.openwrt.org/doc/techref/process.boot http://blog.csdn.net/jk110333/article/details ...

  2. openwrt network interface(openwrt中的网络接口)

    这篇算是对openwrt网络接口的一个翻译吧,源地址:http://wiki.openwrt.org/doc/networking/network.interfaces network的接口类型:物理 ...

  3. Openwrt笔记-IPv6与启动顺序

    之前使用了nat6方案和x3c8021x实现了校园网上网和IPv6连接:但实际使用时经常出现莫名奇妙的问题.IPv6状态要么是无法连接网络,要么是无法连接Internet:经过研究,发现大概是自启动项 ...

  4. hostapd阅读(openwrt)-2

    深入追踪openwrt下的hostapd之后,发现openwrt无线管理机制格外的复杂,几乎所以的触发与回调均离不开ubus,关于ubus这里不作解释,先大概了解其用途即可(出门左转:https:// ...

  5. OpenWrt网络结构

    原文链接:http://www.freezhongzi.info/?p=104 OpenWrt网络结构 OpenWrt的网络配置很丰富,在我看来几乎可以完成任何网络结构.下图为一个支持OpenWrt的 ...

  6. SFTP客户端代码示例

    参考链接:SFTP客户端代码示例 操作系统:Windows7/8,VS2013 环境:libssh2 1.4.3.zlib-1.2.8.openssl-1.0.1g 原文: “从http://www. ...

  7. ZMQ和MessagePack的简单使用(转)

    近段日子在做一个比较复杂的项目,其中用到了开源软件ZMQ和MessagePack.ZMQ对底层网络通信进行了封装,是一个消息处理队列库, 使用起来非常方便.MessagePack是一个基于二进制的对象 ...

  8. [中英对照]Booting Process in Linux RHEL 7 | Linux RHEL 7启动过程

    Booting Process in Linux RHEL 7 | Linux RHEL 7启动过程 In this post, I will guide you booting process in ...

  9. Windows VS2017 编译 libssh2 1.7.0(执行命令、文件上传、下载)

    下载安装 OpenSSL 要编译 libssh2,必须先编译好 OpenSSL 的静态库,直接从 http://slproweb.com/products/Win32OpenSSL.html 下载已经 ...

随机推荐

  1. CodeIgniter实现读写分离

    http://pengbotao.cn/codeigniter-mysql-proxy.html

  2. 三、harbor部署之SSL

    1 签名证书与自签名证书 签名证书:由权威颁发机构颁发给服务器或者个人用于证明自己身份的东西. 自签名证书:由服务器自己颁发给自己,用于证明自己身份的东西,非权威颁发机构发布. 2 openssl简介 ...

  3. zoj 2830 Champion of the Swordsmanship

    Champion of the Swordsmanship Time Limit: 2 Seconds      Memory Limit: 65536 KB In Zhejiang Universi ...

  4. 利用ps,grep,kill联合杀掉相关进程

    #!/bin/sh . "./set-server-env.sh" 这里是输出ps -ef |grep java 结果的第二列的内容然后通过xargs传递给kill -9,其实第二 ...

  5. 关于IOS项目QQ空间授权提示安装最新版本的QQ的解决方法!

  6. Luogu【P2065】贪心的果农(DP)

    题目链接 几乎所有DP题目前本蒟蒻都没有思路.当然包括但不限于这道题.每次都是看了题解然后打的(等价于抄题解)很羞耻 这道题经思考发现,越靠前砍的果树长果子的能力一定越弱,如果长果子的能力一样弱就先把 ...

  7. [BZOJ2118] 墨墨的等式(最短路)

    传送门 好神啊.. 需要用非负数个a1,a2,a3...an来凑出B 可以知道,如果一个数x能被凑出来,那么x+a1,x+a2.......x+an也都能被凑出来 那么我们只需要选择a1~an中任意一 ...

  8. [BZOJ1663] [Usaco2006 Open]赶集(spfa最长路)

    传送门 按照时间t排序 如果 t[i] + map[i][j] <= t[j],就在i和j之间连一条边 然后spfa找最长路 #include <queue> #include &l ...

  9. BZOJ 1800: [Ahoi2009]fly 飞行棋【暴力】

    Description 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. Input 第一行为 ...

  10. 洛谷P1435 回文字串

    题目背景 IOI2000第一题 题目描述 回文词是一种对称的字符串.任意给定一个字符串,通过插入若干字符,都可以变成回文词.此题的任务是,求出将给定字符串变成回文词所需要插入的最少字符数. 比如 “A ...