曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 2972|回复: 0
打印 上一主题 下一主题

如何添加随机启动程序

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2015-5-16 23:04:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
随机启动程序有两个东西,一个是 /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 这个软连接。如果主程序没问题的话,开机启动时会执行到它。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-14 15:56 , Processed in 0.064018 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表