OPENWRT中,IPK包的制作,及其对luci,MVC框架的简易理解:
这是我第一次写文章,如果以下有什么说的不对的地方,请各位大神多多指点,以下全属于作为小白的理解!
最近因为有任务要求,需要在openwrt平台上添加自己的apk包。
目前已理解的,在openwrt平台上,通过LUCI框架MVC界面来生成,添加web界面的方法有两种。(为什么选用这种方法添加呢,因为比较方便操作,简易) 已知在LUCI中,/usr/lib/lua/luci/下有三个目录model、view、controller,它们对应M、V、C。
Call()方法会调用controller里的函数,主要通过openwrt系统的uci、network、inconfig等工具对系统进行设置,如果需要还会生成新界面。动态生成界面的方法有两种,一是通过cbi()/form()方法,它们利用model中定义的模板map,生成html文件;另一种是通过template()方法,利用view中定义的htm(一种类似html的文件),直接生成界面。
已经测试过的:
1.用template方法,先在controller目录建立 .lua文件,用template方法在 .lua文件中选定在view目录里需要执行的htm文件,保存,重启即可。(需要将html文件改成htm文件才能正常使用)
2.用cbi()方法(我直接在controller目录做没有做出来,应该是没有选定执行,但是原理应该一样),通过ubuntu,写好makefile,以及附带的.lua以及配置文件,生成ipk包,将ipk包上次到openwrt中,然后用opkg命令进行安装,安装好之后,重启/更新,便可以生成界面:
具体操作见下:
1.test.lua文件放在/usr/lib/lua/luci/controller/admin中,用来控制需要执行的文件确定目标地址。
2.testconfig.lua文件放在/usr/lib/lua/luci/model/cbi/中(一般都会带有子文件夹,需要与test.lua中给的目录项相匹配)。
3.test文件放在/etc/config目录里面,用来对应testconfig.lua文件中value给定的初始值。
遇到的问题:
Openwrt中,从window文件拷贝到Openwrt中会出现未知的符号:
**解决方法:**这是window与linux之间换行的符号不一致的问题,可以通过dos2unix指令将window换行转化为linux换行,具体操作步骤如下:(附加参考网址:
https://blog.csdn.net/sdd220/article/details/77113647locationNum=12&fps=1
)
将DOS格式文本文件转换成Unix格式,最简单的用法就是dos2unix直接跟上文件名。
格式:dos2unix file
如果一次转换多个文件,把这些文件名直接跟在dos2unix之后。(注:也可以加上-o参数,也可以不加,效果一样)
格式:dos2unix file1 file2 file3
格式:dos2unix -o file1 file2 file3
上面在转换时,都会直接在原来的文件上修改,如果想把转换的结果保存在别的文件,而源文件不变,则可以使用-n参数。
格式:dos2unix oldfile newfile
修改MVC后,怎么更新路由器界面:
1.reboot重启
2.删除 rm -rf /tmp/luci-indexcache文件更新界面