OpenWrt达人教程之开发人员入门指南

openwrt 作为一款基于 Linux 的嵌入式系统,很多功能特性其实与 Linux 一样,软件开发的难点在于解决交叉编译时出现的问题,为了新入门的开发人员更快的上手,特在此汇总一些最常用的开发说明,当然你也可以直接访问 openwrt 官方网站获取更全面的开发人员指南。openwrt Project: Developer guide

遵纪守法

虽然软件、网络等技术产物是虚拟的,但最终是作用于现实生活中,与大众的日常生活息息相关,所以必然要接受各种法律法规的管控,各类技术人员首先需要学习并牢记当地的法律法规,以免误入歧途,玩火自焚。

在中国工作和生活的技术人员请学习如下法律法规:
《中华人民共和国网络安全法》《计算机信息网络国际联网安全保护管理办法》《计算机软件保护条例》《中华人民共和国计算机信息系统安全保护条例》

LUCI 界面

openwrt 的界面其实就是网页界面,默认是由 uhttpd 服务器承载,之所以叫做 LUCI ,因为这是使用 Lua 脚本编写的控制界面,全称 Lua Unified Configuration Interface,当然目前已经不再使用 Lua 脚本了,从 openwrt 19.07.4 版开始,界面已经切换为使用 JavaScript 脚本来编写,其拥有更便利的页面控件,页面自由度也大大提高,因为脚本交由客户端运行,页面流畅度自然也比 Lua 界面高出不少。

下面仅介绍 openwrt 的 JavaScript 脚本界面规范。

LUCI 网页界面的意义:各类程序的配置文件直接手动配置也是完全没问题的,但提供网页界面可以更直观的管理各项配置参数,并且可以通过界面对输入的参数进行一些限制,防止因手误输入错误的参数,具备一定程度的防呆功能,这对于复杂的各类软件功能是很有帮助的。

完整的界面文件结构

以源代码目录的文件结构为例,一个基本的界面程序应当具备如下所示的目录文件结构。

界面程序的 Makefile 编写指南

JavaScript 脚本界面

至于如何编写完整的 JavaScript 脚本界面,不在本指南范围内,你应该先去学会通用的 JavaScript 编写知识,这里只额外说明 openwrt 平台上特有的一些接口或注意事项。

以源代码中已有的 Samba4 的 JavaScript 脚本界面为例。

界面脚本与配置文件是对应关系,将关联的配置文件 /etc/config/samba4 内容贴出来,两相对照才能更准确的理解各个参数的意义。

通过上面的实例,你应该已经初步知晓了, openwrt 当前的 JavaScript 脚本界面的运行规则了,下面介绍一些常用的其它脚本规则。

提示:源码目录自带开发文档,请查阅 cd openwrt/feeds/luci/docs

获取网络接口的选项

openwrt-184

openwrt-185

获取系统用户列表

openwrt-191

配置一个下拉列表框,只允许用户选择预设的参数。

openwrt-186

配置一个下拉列表框,允许用户选择预设的参数,也允许用户自行输入参数。

openwrt-187

配置一个动态列表,允许自由添加删除多个参数,展示一个实例样板。

openwrt-183

配置含多个子菜单的选项卡界面

配置选项关联另外的某个选项,当关联的选项为指定的值时才显示。

限制选项参数格式的常用类型

界面语言翻译文件

在对应的语言目录下创建 po 翻译文件即可。

默认执行脚本

在 uci-defaults 目录下可以放置脚本文件,用于在 ipk 安装完毕后自动执行命令,一般用于为软件预配置运行环境等,当然也可以不用它。

界面菜单

在 menu.d 目录下的 json 文件为软件的界面菜单文件,用于控制软件在系统菜单中的名称、顺序等。

下面用几个实例介绍 json 界面菜单文件的书写规范。

权限控制文件

openwrt 为 JavaScript 脚本界面引入的权限控制机制,用于管制脚本界面能执行哪些系统操作。

界面调试技巧

开发软件界面的时候,经常需要查看界面改动后的实际效果,难道必须要编译为 ipk 文件再安装吗?并不是,通过上面的学习,你应该了解到界面文件其实都是纯文本状态,编译过程只是压缩打包而已,并不是为了编译成二进制文件,所以只需要把文件放入对应的系统目录,然后刷新浏览器页面,或者清空浏览器缓存即可。

openwrt Procd 系统初始化和守护程序管理

在 openwrt 上要让一个程序正常运行,自然也需要一个启动脚本来提供服务,不然就只能使用命令行操控了,openwrt 下提供了一款类似于 systemd 的进程管理守护程序,称之为 Procd,其提供了非常强大的脚本功能,对于程序运行大有助益。

openwrt官网关于 Procd脚本的说明:openwrt Project: procd init script parameters

以程序 memcached 为例,演示传统启动脚本和 Procd 脚本的区别。

搭建 openwrt 本地软件源

开发软件过程中,免不了要经常进行实机测试,难道要搭建一个 HTTP 服务器来提供安装源吗?并不需要,经验丰富的开发者应该已经想到了,那就是直接使用 openwrt 自带的 uhttpd 来作为 HTTP 服务器,并不需要任何额外设置,只需要将软件源目录软链接至 www 目录即可。

首先通过 FTP 或其它各种方式,将软件源目录上传至路由器磁盘空间。

openwrt-219

然后使用软链接命令,将软件源目录链接至 www 目录即可。

openwrt-220

此时可以打开浏览器测试,看是否能成功访问。

openwrt-221

接着再修改软件包的 “OPKG 配置” 里的软件源地址。

openwrt-222

然后就可以开始使用了。

openwrt-223

文章来源于互联网:openwrt达人教程之开发人员入门指南

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享