Openwrt设置开机启动
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Openwrt设置开机启动相关的知识,希望对你有一定的参考价值。
参考技术A 设置开机启动原理/etc/init.d目录下面就是系统加载的开机配置
每个配置可以设置START优先级,数字越大启动越靠后,如果有很多需要依赖网络或者USB之类的启动程序最好设置靠后一些,等其他程序启动了再启动。
系统读取etc/init.d/下的启动配置文件后,系统会根据start优先级,按照顺序执行每个文件的start()函数中的命令。
下面为myapp添加开启启动,myapp的路径是/mnt/sda1/myapp
输入以下内容
然后保存,退出
如何使一个openwrt下的软件开机自启动
条件有三:
1.需要在软件包的Makefile中添加宏定义Package/$(package-name)/preinst和Package/$(package-name)/prerm
define Package/hello/postinst #!/bin/sh # check if we are on real system if [ -z "$${IPKG_INSTROOT}" ]; then echo "Enabling rc.d symlink for hello" /etc/init.d/hello enable fi exit 0 endef define Package/hello/prerm #!/bin/sh # check if we are on real system if [ -z "$${IPKG_INSTROOT}" ]; then echo "Removing rc.d symlink for hello" /etc/init.d/hello disable fi exit 0 endef
2.需要一个启动脚本,并且需要有执行权限(曾尝试过直接将脚本放置在target/linux/$(chip-series)/base-files/etc/init.d目录下,但是openwrt启动后不会执行这个脚本,为什么,因为没有执行权限,那么直接修改此脚本的权限呢?不可行)
如何实施?
将启动脚本制作成一个此软件包的补丁,放到软件包的patches目录下,脚本内容如下:
#!/bin/sh /etc/rc.common # "new(er)" style init script # Look at /lib/functions/service.sh on a running system for explanations of what other SERVICE_ # options you can use, and when you might want them. START=200 APP=hello SERVICE_WRITE_PID=1 SERVICE_DAEMONIZE=1 start() { service_start /usr/bin/$APP } stop() { service_stop /usr/bin/$APP }
3.脚本准备好了,那么此时需要安装脚本到要制作的根文件系统中
在软件包的Makefile中的宏定义Package/$(package-name)/install里加入以下类似代码:
$(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) $(script-path) $(1)/etc/init.d
这样权限就有了
以上是关于Openwrt设置开机启动的主要内容,如果未能解决你的问题,请参考以下文章