转自:https://zhangjianfa.blog.csdn.net/article/details/88317879
openwrt 的启动脚本源程序放在“/etc/init.d/”目录下,打开文件夹可以看到已经有了许多的脚本存在。
我们可以看一个简单的例子:
root@openwrt:/etc/init.d# cat done
- #!/bin/sh /etc/rc.common
- # Copyright (C) 2006 OpenWrt.org
- START=95
- boot() {
- [ -d /tmp/root ] && mount_root done
- block mount
- # process user commands
- [ -f /etc/rc.local ] && {
- sh /etc/rc.local
- }
- # set leds to normal state
- . /etc/diag.sh
- set_state done
- }
如代码所示,第一行 #!/bin/sh /etc/rc.common指定了执行该脚本的方式(必须)
第二行 只是一个注释行,不会执行。
第三行 START=95 代表该脚本的启动顺序为95(注意,不是第95个执行的脚本,而是一个级别)。(数字越小,启动的越早)
第四行 boot() 就是脚本中定义的函数,具体学习shell脚本。
一般来说每个启动脚本需要包含 start、stop两个函数,以用于系统自动调用。
要使脚本在系统启动后自动别调用的话还需要创建软链接到 ”/etc/rc.d”目录下,如以上文件需要创建如下链接:
ln -s /etc/init.d/done /etc/rc.d/S95done
或者使用系统方法
/etc/init.d/done enable
将会自动创建对应的软链接。
同样的可以删除软链接或者使用disable取消脚本的自动启动。