1. 新建虚拟机,百度文库有一篇《使用VMware安装OpenWrt》,地址:http://wenku.baidu.com/link?url=NkvaQpTf2dR8FpYn7JD9A7-uaw6XQvLafQ64Mqg9SNEZk8M_JCQTuLELR0GfWlBdmrbA3_EuUxnwQGsRz-JBA6-Jx6QHmYbVcJKJ-V0oX__

装好后,复制下载的openwrt-x86-generic-combined-ext2.vmdk或者其他版本放到虚拟机目录下并修改成OpenWRT.vmdk的名字覆盖掉原来的。就可以开始使用openwrt系统了。

2. 虚拟机里应该有个LAN口网络地址为192.168.1.1, 为了从PC访问虚拟机,将PC下的网络连接里的VMware Network Adapter VMnet1的IP改为同虚拟机一个网段,比如192.168.1.2。然后从虚拟机里PING通PC就说明可以了。

3. 在PC 上打开浏览器,输入192.168.1.1, 应该就能进入到路由器的登录界面。用root和密码登录进去。linux下修改密码用passwd root。

4. 现在要做的是定制luci的界面,比如在一级目录下增加一个PIERO,PIERO下面有2个子标签,BoardType和Control。

首先进入到虚拟机的 /usr/lib/lua/luci/controller/admin/下,新建一个piero.lua文件,添加如下内容:

module("luci.controller.admin.piero", package.seeall)

function index()
entry({"admin","piero"}, alias("admin","piero","piero"),_("PIERO"), ).index = true
entry({"admin","piero","piero"},cbi("admin_piero/piero"),_("BoardType"),)
entry({"admin", "piero", "control"},cbi("admin_piero/control"),_("Control"),)
end

这里相当于定义一个界面的入口,entry的参数一表示路径,参数二是target,表示动作,有alias表示直接链接到其他标签,cbi表示执行一个lua文件,template表示引用一个htm的模板,call 表示调用函数。参数三是表示显示的标题,加'_'表示国际化,最后一个表示显示的次序。后两个参数可省略。index=true不知道干吗的。

5. 程序中cbi("admin_piero/control")表示执行admin_piero下的control.lua文件,完整路径为/usr/lib/lua/luci/model/cbi/admin_piero/control.lua,admin_piero为自己新建的目录,建好后再新建control.lua文件,并写入如下代码:(注:linux中方便切换路径可以给一些常用的较长的路径取一个别名方便访问,方法是alias 'cdadmin=cd /usr/lib/lua/luci/controller/admin' ,这样定义之后就可以直接使用cdadmin命令进入admin目录了。)

require("luci.sys")
require("luci.sys.zoneinfo")
require("luci.tools.webadmin")
require("luci.fs")
require("luci.config") local m, s, o m = Map("piero", translate("Control"), translate("This is design by Piero, in order to test for add a new page."))
m:chain("luci") s = m:section(TypedSection, "controlboard", translate("Control Board"))
s.anonymous = true
s.addremove = false s:tab("led", translate("Control LED"))
s:tab("beep", translate("Control Beep"))
--s:tab("adc", translate("Control Adc")) --
-- LED
--
o = s:taboption("led", ListValue, "lednum", translate("LED NUM:"))
o.default =
o.datatype = "uinteger"
o:value(, translate("LED0"))
o:value(, translate("LED1"))
o:value(, translate("LED2")) o = s:taboption("led", ListValue, "ledstatus", translate("LED STATUS:"))
o.default = --off status
o.datatype = "uinteger"
o:value(, translate("LED ON"))
o:value(, translate("LED OFF")) --
-- BEEP
--
o = s:taboption("beep", ListValue, "beepstatus", translate("BEEP STATUS:"))
o.default = --off status
o.datatype = "uinteger"
o:value(, translate("ON"))
o:value(, translate("OFF")) o = s:taboption("beep", Value, "beepfreq", translate("BEEP FREQ:"))
o.datatype = "uinteger" local apply = luci.http.formvalue("cbi.apply")
if apply then
io.popen("/etc/init.d/piero restart")
end return m

Map的调用是: m = Map("配置文件名", "配置页面标题", "配置页面说明")

这里的配置文件名写的是piero,它有一个默认的目录是/etc/config/下,写完上面这些就需要去/etc/config/下新建文件piero,写入如下内容:

config boardinfo
option ipaddr1 '192.168.123.212'
option netmask1 '255.0.0.0'
option boardname '' config controlboard
option beepfreq ''
option beepstatus ''
option lednum ''
option ledstatus '

6. 写完这些后就可以重启虚拟机,然后再从PC上登入192.168.1.1查看,就能看到修改后的效果了。如图:

7. 现在讲界面的中文化。

首先找到luci-i18n-chinese_0.11+svn9769-1_x86.ipk 下好放电脑里,这个版本要注意,要跟自己的版本对上,要不然可能出现部分英文部分中文的样子,然后下一个WinSCP的工具,这个工具是用来跟openwrt传文件的,下好安装后登录,然后将luci-i18n-chinese_0.11+svn9769-1_x86.ipk上传到openwrt下/tmp/目录下,传好后进入虚拟机,进入/tmp目录,然后开始安装,输入opkg install luci-i18n-chinese_0.11+svn9769-1_x86.ipk,然后就可以装好。装好后用192.168.1.1登上去,在系统-语言界面 里选择chinese,然后提交保存。再刷新一下就可以看到中文界面了。

关于自定义界面的中文化,原来的想法是自己去编译汉化包,但是一直没有找到方法,已知的方法是在编译openwrt的时候可以修改po文件的方式,然后一起编译成固件,比较麻烦。后来使用了直接输入中文的办法,方法是先用winscp连接上板子,打开需要汉化的文件,首先点一下winscp上面工具栏的 编码 ,将编码方式修改成utf-8, 然后在文件里需要汉化的地方,直接写入中文。保存后,清缓存,界面上就可以看到汉字了。这种方法不好的是,当你选择界面为英文是,这些直接写中文的地方无法自动转换为英文。

8. 关于快捷路径的保存,之前直接用 alias会导致重启后失效,所以换一种方法,在/etc/profile文件中添加alias cdadmin='cd /usr/...'类似路径,保存退出。这样就可以了。

9. Luci是openwrt上使用较为广泛的一种Web管理界面框架,可以二次开发。

10. 文件修改完后直接在网页上打开常常结果跟自己期望差很多,大多数时候是缓存的影响,可以重启虚拟机,也可以直接删除三个文件,/tmp/luci-indexcache,/tmp/luci-modulecache/*, /tmp/luci-sessioncache/*。

11. OpenWrt有多个版本,Backfire发布于2010年3月。Attitude Adjustment发布于2013年4月25,是现在最稳定的版本。这里用的是Attitude Adjustment版本,版本号可以在192.168.1.1页面的顶部看到。

12. 相关版本下载,以及版本的软件下载,官网是http://downloads.openwrt.org/,再按自己的版本选,比如我的是https://downloads.openwrt.org/attitude_adjustment/12.09/x86/generic/packages/,这里面可以下载很多有用的ipk文件,比如中文包,useradd工具,theme等。下载好后按第7步安装。

13. 关于luci的资料国内的网站上搜到不到,尤其是一些比较偏的东西,可以去google.cn上搜搜,比如关于增加用户名的讨论帖,http://stackoverflow.com/questions/18377138/openwrt-luci-how-to-implement-limited-user-access

14. 关于USB挂载摄像头功能,参考链接http://wenku.baidu.com/link?url=W3TrA6wHp-0GrgztCZJWnIeNsVT9U7dFIeqyxtdHrjeZK_78sRLairb0t-3s85X9o9_vbYDm02Rrwws9NWhCxYOhY8F8cy9zM_-J_441SaW,按里面的步骤,首先是下载和配置好交叉编译工具,比如我这是mips-openwrt-linux-gcc, 然后在http://www.ijg.org/files/位置下载libjpeg源码包,并交叉编译。然后再下载https://sourceforge.net/projects/mjpg-streamer/的源码,并编译。生成的东西拷到板子上。

15. 网上最多的一般是call 方法,cbi方法,和template方法,关于call方法,虽然是调用函数,但是功能可以更强大,比如要实现删除时跳出一个确认框,就可以在index 里的entry里调用call("delete")方法,然后

function delete()

  删除动作;

  luci.template.render("admin_system/packages",{参数传递})

end

然后在view里的admin-system下写htm, packages.htm。

16. 待续

路由器开源系统openwrt配置页面定制的更多相关文章

  1. openwrt开源系统LUCI配置界面

    转自:http://www.right.com.cn/forum/thread-131035-1-1.html 本人菜鸟,最近在学习这方面的知识,在参考资料的基础上总结如下内容.这篇文章针对如何对op ...

  2. C#开源系统大汇总(个人收藏)

    C#开源系统大汇总 一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖 ...

  3. NopCommerce 开源商城下载配置安装

    NopCommerce 是一款开源商城系统,提供了完整的解决方案.应该来说是目前最完善,功能最强劲的商城系统.基于ASP.NET MVC 框架,EF框架,数据库MSSQL. 系统版本涵盖了从MVC3. ...

  4. Linux 桌面玩家指南:04. Linux 桌面系统字体配置要略

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  5. Windows 重装系统,配置 WSL,美化终端,部署 WebDAV 服务器,并备份系统分区

    最新博客文章链接 最近发现我 Windows11 上的 WSL 打不开了,一直提示我虚拟化功能没有打开,但我看了下配置,发现虚拟化功能其实是开着的.然后试了各种方法,重装了好几次系统,我一个软件一个软 ...

  6. Linux 桌面系统字体配置要略

    字体显示效果测试 这一段是为了测试宋体字的显示效果,包括宋体里面自带的英文字体,“This is english,how does it look like?”.这一行是小字.后面几个字是加粗的宋体. ...

  7. 安装Debian 7.8 过程,以及该系统的配置过程

    最近,我给自己的电脑安装了Debian操作系统,版本7.8 stable.Debian我相信大家都能了解,它是Ubuntu的基础,Ubuntu是基于Debian的unstable开发的.我安装这个系统 ...

  8. 如何设置路由器实现静态IP配置

    一.概述 嵌入式开发者,经常面对这样的环境:PC(windows)+虚拟机(linux)+开发板.我们希望三者都能相互通信,而且可以联网. 对于实验室只提供一根网线,而自己没有额外的增加端口数量的设备 ...

  9. 常用SNS开源系统比较

    常用SNS开源系统比较 这 几天看了很多关于SNS(社交网络服务) 的东西..得到了不少启发..目前的IDEA是..可以在学校弄一个试试..主打的东西不能和现有的SNS冲突(如校内网).利用本地优势. ...

随机推荐

  1. 【Python】Python format 格式化函数(转帖)

    https://www.runoob.com/python/att-string-format.html Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符 ...

  2. 查看QML数据类型

    assist输入: QML Types A Abstract3DSeries AbstractActionInput AbstractAnimation AbstractAxis AbstractAx ...

  3. 【407】C函数中的指针

    注意:如果对于函数中指针参数的对应值进行修改,当调用该函数后,实参会被修改,所以如果不想要实参被修改,需要为函数的形参定义一个 str_copy 的量,通过 strcpy() 进行将字符串复制给 st ...

  4. PAT 甲级 1048 Find Coins (25 分)(较简单,开个数组记录一下即可)

    1048 Find Coins (25 分)   Eva loves to collect coins from all over the universe, including some other ...

  5. 为什么要用k8s

    经过几次面试,发现有的公司没有用过k8s,有的公司正在用,但是都问了共同的问题:k8s的好处在哪里.所以总结了一下几点 1.故障迁移:当某一个node节点关机或挂掉后,node节点上的服务会自动转移到 ...

  6. 第二十一章 授予身份及切换身份——《跟我学Shiro》

    目录贴:跟我学Shiro目录贴 在一些场景中,比如某个领导因为一些原因不能进行登录网站进行一些操作,他想把他网站上的工作委托给他的秘书,但是他不想把帐号/密码告诉他秘书,只是想把工作委托给他:此时和我 ...

  7. Opencv官方例程简介

    opencv sample文件夹例程 No1. adaptiveskindetector.cpp 利用HSV空间的色调信息的皮肤检测,背景不能有太多与肤色相似的颜色.效果不是特别好. No2. bag ...

  8. 高级UI-DrawerLayout侧滑

    侧滑的方案有很多种,早期的开源SliddingMenu,以及后来的DrawerLayout以及NavigationView等都可实现侧滑效果,这里介绍的是DrawerLayout,下一节将介绍Navi ...

  9. [转帖]可能是东半球最好的 Curl 学习指南,强烈建议收藏!

    可能是东半球最好的 Curl 学习指南,强烈建议收藏! http://www.itpub.net/2019/09/30/3302/ 记得转帖过.. 简介 curl 是常用的命令行工具,用来请求 Web ...

  10. ora00972标识符过长

    oracle10G对于表名的长度限制是30个字节 表名超过30结果不能创建,提示ora00972-标识符过长. 需要将表名控制在30个字节以内