openwrt添加自启动

 一、简要说明: 
 

1、首先,CFE(common firmware environment)--它就是一个bootloader,类似u-boot,redboot之类,有点broadcom公司御用之嫌--

最先启动。它的任务只是创造一个简单的环境,让系统先运行起来。除了能够跳转到特定地址上启动操作系统(如Linux)外,

它还能让你download东西到上面,比如download一个linux,然后启动它。

另外,值得一提的是,CFE在启动之后会有1,2秒的时间等待由tftp上传的内核并烧写到flash上,

这就给一些操作系统损坏但CFE还能工作的"砖头"板一个起死回生的机会。请注意一旦linux启动之后,将由linux全部接管系统,

 2、这时候就没CFE什么事情了。唯一的瓜葛是CFE传递给内核一个命令行的参数,这个可以在linux启动起来之后用下面的命令查看:

 root@OpenWrt:/# cat /proc/cmdline

console=ttyS0,115200 mtdparts=spi_flash:1m(u-boot)ro,3m(kernel),-(rootfs)

 之后,linux系统启动起来了。


OpenWRT的启动脚本放在 /etc/init.d 目录下,而系统开机时自动运行/etc/rc.d目录下的脚本。所以在rc.d目录下、有init.d下脚本的链接文件。

整理一下

05 ---------------------- defconfig //加载默认参数

10 ---------------------- boot //启动

39 ---------------------- usb // 加载usbfs

40 ---------------------- network // 设置网卡参数

45 ---------------------- firewall // 防火墙

50 ---------------------- dropbear // sshd server

50 ---------------------- cron // .....

50 ---------------------- telnet // 如果没有修改root密码,则启动telnet server

60 ---------------------- dnsmasq // DHCP 和 DNS 服务端

95 ---------------------- done // 系统启动完成后

96 ---------------------- led // 指示灯

97 ---------------------- watchdog // ...

99 ---------------------- sysctl // 最后,进行必要的内核参数调整

然后,我们加入自己的脚本,实现模块驱动的加载、应用程序的开机自启动等


二、添加测试

1、首先在/etc/init.d里添加需要启动的shell脚本,touch test.sh

#!/bin/sh/etc/rc.common

# /init.d/test.sh

START=50

start()

{

echo "==================

This is test!

=================" >/dev/console

}

2、更改test权限,chmod 777 test.sh

3、在/ect/rc.d目录下做一个链接,启动时系统会按顺序启动rc.d目录下的脚本链接,对应执行init.d目录下的启动脚本。脚本的命名要符合系统规

范,init.d下telnet脚本在rc.d目录下的链接文件名为S50telnet。所以链接文件要在脚本名前加S+启动顺序数字,启动顺序要等系统进行完必要

初始化。所以我们命名为S95+脚本名。

于是我们的链接命令

ln -s /etc/init.d/test.sh /etc/rc.d/S95test.sh

然后重启,reboot。在重启完成后你就能发现系统会打印出:

==================

This is test!

=================


你可能感兴趣的:(openwrt添加自启动)