Openwrt介绍
1 min read- 前言
当前,电信公司推出的光猫自带路由拔号功能,与过去的ADSL+路由器,光猫+路由器时代相比,大大简化了普通家庭和大众百姓在使用电信宽带时的设置复杂难题,一般用户无须再添置路由器只需增加一或两台交换机,然后网线一插即可上网,如果有问题打个电话给电信公司客服,由电信公司远端控制的光猫可以直接在线维护设置,甚至无需工作人员到现场的情况下就可以排除疑难。因此, 很多人说我们为什么还要用路由器?
- 什么是OPENWRT
Openwrt是一个小型的基于linux的一个开源路由器操作系统,是一款可安装在普通电脑或路由器硬件上的可定制的软路由系统,是一个为嵌入式设备开发的高扩展度的GNU/Linux发行版,是一种主流的路由器固件,开源、支持多种架构(ARM Mips x86等)、高可扩展性、有大量软件工具包,官网:openwrt.org
而刷机就是给路由器机子刷上不同的固件。何为刷路由?当然就是给路由刷上不同的固件。不是所有的路由都可以刷固件。那怎么知道你的路由能不能刷openwrt ?可以去openwrt的中文官网查询:http://wiki.openwrt.org/toh/start 。在Supported Hardware – Router type里面就是可以刷openwrt的,简单地说,Flash必须≥4MB,RAM必须≥32MB才能正常使用openwrt。不同的路由刷机的方法也是不同的,刷机方法请自行GOOGLE、百度,操作方法不过大同小异。当然也可以在网店直接买一个商家帮你刷好了的路由,本站也提供定制服务。
- 取得固件
刷机的固件怎么来?
第一种方式是去openwrt官网下载,也可以去各论坛上搜索下载他人已编译好的固件;第二种方式是自己编译固件,或是找熟悉的有技术知识的朋友代为编译固件。两者的区别在于,第一种方式已经编译好的固件内可能功能没有你想要的或者版本太老功能太乱不想要的,但是基本上是免费下载可以获得到的,第二种方式完全由着自己兴趣和需求按需定制编译自己特有的功能固件,比如你特有的网卡、打印机共享、NAS云存储、广告过滤、文件共享等一些独特的功能,并不是所有的固件都是一样的,每个人编译出的固件都不尽相同,源码、配置、插件、版本各有各的喜好。
- 固件编译
OpenWrt是开源的,谁都可以下载源码直接进行编译。常见的Linux发行版如Ubuntu、CentOS都可以搭建其编译环境。OpenWrt的编译过程会将系统打包压缩成一个可刷写的固件。如果要修改OpenWrt的固件内容,例如向其中添加自己的程序,或者修改默认的配置、内核实现等,便可以将自己修改的内容拷贝到源码中,从源码再编译。在OpenWrt系统编译配置方面,采用的是make menuconfig命令,该命令常用于针对于嵌入式Linux的内核编译选项修改。在OpenWrt上,除了内核外,还可以修改很多其他选项。在完成编译选项的配置之后,可以直接进入源码的source/目录 执行 make V=sc 命令进行固件的编译。
- 第三方程序编译
如果想要自己编写程序放入OpenWrt上使用,首先要确定使用的硬件的CPU架构,毕竟大部分嵌入式设备都不是x86的,无法跟我们常用的主机设备共用编译工具,因此这些程序都需要在对应的编译环境上实用工具链交叉编译。
- OpenWrt的原生工具
- UCI:Unified Configuration Interface
意为统一配置接口,用来操作OpenWrt上所有配置项的集中接口。
这个工具可以直接执行命令传输参数就能达到修改系统参数的目的,同时也会有相关的lua、c等语言可调用的库函数,实现通过一个工具一种规则来配置整个OpenWrt
OpenWrt的配置文件细化到每一个模块,都存放在/etc/config路径下,均是按照一定格式来保存的纯文本文件。除了通过uci指定的命令来修改,也可以通过vi手动修改配置文件。
要注意uci工具自身与提供给lua、c的uci库在实现的功能方面是由少许区别的
- 对于uci工具,可以直接在终端查看其操作指示
- 在lua内,可以调用uci.so,其本质是uci工具提供给Lua的库,具体可以参考:https://github.com/wangshawn/uci/blob/master/lua/uci.c
- 在Lua内也可以直接调用uci.lua库,这是luci自身的库,在uci的基础上做了一些改进,其实现的方法可以参考[uci.lua](https://htmlpreview.github.io/? https://raw.githubusercontent.com/openwrt/luci/master/documentation/api/modules/luci.model.uci.html)