openwrt 的开机自启的机制是:
创建 /etc/init.d/[service]
这个 service 本质是一个脚本,会重载/etc/rc.common 里的启停函数(应该可以这样理解)
脚本里面标注 START STOP 的值,会被认定为该服务的优先级。
然后就可以通过 service [service_name] start/stop 来启停服务
最后 service [service_name] enable 就会创建 /etc/rc.d/S50uhttpd --> /etc/init.d/uhttpd 的软链接
最后,该服务就会根据优先级进行开机启动
现在的问题是,写了了一个简单的服务,大致是:
#!/bin/sh /etc/rc.common
# Example script
# Copyright (C) 2007 OpenWrt.org
START=55
STOP=55
start() {
echo start
/usr/sbin/xxxx -a -b -c
}
stop() {
echo stop
/usr/bin/killall [service_name]
}
boot() {
echo boot
start
}
脚本也加了执行权限和 enable 了,也能看到软链接。但是就是无法开机启动。日志也无法排查,不知道是什么情况?