如何在OpenWrt上开发(续)

如何在OpenWrt上开发(续)

本站内容版权属于本人。转载须告知本人,写明出处,并在文首提供指向本站对应文章的链接。
本文链接:如何在OpenWrt上开发(续)

在上篇文章里,已经写了如何将可执行文件加入OpenWrt包中。这次再写一些更深入,但是常用的话题。

开机启动

在Linux中,把启动脚本放在/etc/init.d中可以自启动,OpenWrt也不例外。问题是如何把启动脚本打在包中。

mypackage目录下运行:

修改刚创建的mypackage文件,这里用了procd工具,最简单的写法只需要定义start_service

mypackage目录下的Makefile中,修改安装的部分:

这样,在安装包的同时,也会将启动脚本也安装上。并且opkg会在安装后自动运行mypackage命令。同样,也可以用以下命令来手动运行:

配置文件

可以使用和启动脚本类似的方式来安装配置文件,只不过换成了$(INSTALL_CONF)

但这样有个问题,每次更新包的时候,配置文件都会被覆盖,这是我们不想看到的。为了不覆盖,还需要在Makefile里面加入以下内容:

这样,在安装时候就不会覆盖,而是将更新的配置改名为mypackage.opkg,旧配置不变。

如果不想有这样的行为,也可以用preinstpostinst脚本来完成这个功能:

总结

有了程序、配置和自启动脚本,一个完整的服务就有了,把它安装到OpenWrt里之后,就可以安心使用了。下篇文章我会介绍如何扩展界面(也就是Luci)。

参考资料
  1. https://openwrt.org/docs/guide-developer/packages
  2. https://github.com/mwarning/openwrt-examples
  3. https://openwrt.org/docs/guide-developer/procd-init-scripts

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据