|
随机启动程序有两个东西,一个是 /etc/init.d/ 下的主程序,或者说是个主脚本处理程序;另一个是放在 /etc/rc.d 下的对应该主程序的软连接。如果你的启动顺序是 96,那么该软连接就写成 S96yourapp ,其中 S 表示 Start ,96 表示顺序,yourapp 是 /etc/init.d 下的主程序名。
要想将这两个东西编译到固件,这里介绍一种简单的方法。
先将主程序放在 package/base-files/files/etc/init.d 下,这么做的目的是,不要让你后面书写相应 Makefile 时存在更多的困惑从而导致错误。
然后在 package 下找一个目录,比如你这个程序主要是网络类的,你就继续进入到 package/network 下;如果你的程序是系统类的,就进入到 package/system 下 。这里我的程序认为是网络类的,这个并不打紧,随意都好。来到 package/network,可以看到还有 4 个目录,如 config, ipv6, services, utils ,一般选择 services,表示这个程序是属于网络服务类。来到该目录,可以看到 dnsmasq, dropbear 等常见程序,现在我建立了一个 monangel 的目录, 下面除了一个 Makefile,其他的什么都没放,这个 Makefile 正是未了建立相应的软连接,代码如下:
include $(TOPDIR)/rules.mk
PKG_NAME:=monangel
PKG_REALEASE:=1
include $(INCLUDE_DIR)/package.mk
define Package/monangel/postinst
#!/bin/sh
/etc/init.d/monangel enable
exit 0
endef
上面需要注意的是,Package/postinst 官方文档是这样说的:
Package/postinst
The actual text of the script which is to be executed after installation. Dont forget to include the #!/bin/sh.
是在程序安装后要执行的脚本。
从官方 WIKI 链接 http://wiki.openwrt.org/doc/devel/packages 也可以看到建立软连接的例子片段,我们这里很简单,关键语句就是 /etc/init.d/monangel enable 即能生成相应软连接。
完后,重新编译一下固件,刷机后可以看到在 /etc/init.d/ 下有 monangel 这个程序;在 /etc/rc.d 下有 S96monangel 这个软连接。如果主程序没问题的话,开机启动时会执行到它。
|
|