一、讲在开始
现阶段openwrt官方支持的路由列表:
/toh/start
假如要学习openwrt的话,买些列表中二手的路由器来实践下更容易学习,大部份要升级一下rom芯片和显存芯片,典型配置都是4M、64M。你们先学习一下,等待魅族开放时刻的到来,有备无患……
OpenWrt可以被描述为一个嵌入式的Linux发行版,(主流路由器固件有dd-wrt,tomato,openwrt三类)而不是企图构建一个单一的、静态的系统。OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并容许您自定义的设备,以适应任何应用程序。
对于开发人员,OpenWrt是使用框架来建立应用程序,而无需构建一个完整的固件来支持;对于用户来说,这意味着其拥有完全订制的能力,可以用前所未有的方法使用该设备。
二、开发缘由
当Linksys释放WRT54G/GS的源码后,网上出现了好多不同版本的Firmware去提高原有的功能。大多数的Firmware都是99%使用Linksys的源码,只有1%是加起来的,每一种Firmware都是针对特定的市场而设计,这样做有2个缺点,第一个是无法集合各版本Firmware的长处,第二个是这版本距离Linux即将发行版越来越远。
OpenWrt选择了另一条路,它从零开始,一点一点的把各软件加入去,使其接近Linksys版Firmware的功能,而OpenWrt的成功之处是它的文件系统是可写的,开发者无需在每一次更改后重新编译,令它更像一个大型的Linux笔记本系统。
三、发展历程
OpenWrt项目由2004年1月开始,第一个版本是基于Linksys提供的GPL源码及uclibc中的buildroot项目,这个版本称为“stable”版,在网上至今仍有好多项目使用这个版本,较为有名Freifunk-Firmware和Sip@Home.
到了2005年初,一些新的开发人员加入了这项目,几个月后她们释出了第一个“experimental”版本,这和先前版本不同的是,这版本差不多完全放弃了Linksys的GPL源码,使用了buildroot2作为核心技术,将OpenWrt完全模块化,OpenWrt使用Linux即将发行的核心源码(2.4.30),加上了一些补丁和网路驱动,开发队伍更为OpenWrt添加了许多免费的工具,可以直接把Image写入Flash(mtd)上面,设定无线功能和VLAN交换功能,这个版本名为“WhiteRussian”,而1.0版本于2005年末公布。
四、特点
OpenWRT是一个高度模块化、高度手动化的嵌入式Linux系统,拥有强悍的网路组件和扩充性,经常被用于工控设备、电话、小型机器人、智能家装、路由器以及VOIP设备中。同时,它还提供了100多个已编译好的软件,但是数目还在不断降低,而OpenWrtSDK更简化了开发软件的工序。
OpenWRT不同于其他许多用于路由器的发行版,它是一个从零开始编撰的、功能齐全的、容易更改的路由器操作系统。实际上,这意味着您还能使用您想要的功能而不加进其他的碍眼,而支持这种功能工作的linuxkernel又远比绝大多数发行版来得新。
五、优势
假如对Linux系统有一定的认识,并想学习或接触嵌入式Linux的话,OpenWRT很适宜。并且OpenWRT支持各类处理器构架,无论是对ARM,X86,PowerPC或则MIPS都有挺好的支持。其多达3000多种软件包,涵盖从工具链(toolchain),到内核(linuxkernel),到软件包(packages),再到根文件系统(rootfs)整个体系,促使用户只需简单的一个make命令即可便捷快速地定做一个具有特定功能的嵌入式系统来制做固件。
六、开发过程
通常嵌入式Linux的开发过程,无论是ARM,PowerPC或MIPS的处理器,都必需经过以下的开发过程:
1、创建Linux交叉编译环境;
2、建立Bootloader;
3、移植Linux内核;
4、建立Rootfs(根文件系统);
5、安装驱动程序;
6、安装软件;
熟悉这种嵚入式Linux的基本开发流程后,不再局限于MIPS处理器和无线路由器,可以尝试在其它处理器,或则非无线路由器的系统移植嵌入式Linux,订制合适自己的应用软件,并构建一个完整的嵌入式产品。
七、劣势
因为CPU内核体系不同,导致好多应用程序移植到OpenWrt上的时侯常常崩溃。
因为ADSL硬件模块的驱动程序没有开放源代码,导致好多ADSL一体无线路由的ADSL模块不能工作而导致功能缺位(RG100100A和DB120除外)。
因为OpenWRT并不是官方发布的路由器固件,所以要使用(刷入该固件)有困难,但是其基于Linux,致使OpenWRT的入门门槛较高。
八、历史版本
WhiteRussianOpenWRT的初始版本,从2005年7月的WhiteRussianRC1开始发展,仍然到2007年1月才发布WhiteRussian0.9。
KamikazeOpenWRT的第二个版本,从2007年6月开始发布Kamikaze7.06,仍然更新到2010年1月的Kamikaze8.09.2结束。这期间OpenWRT进行了大量改进,并为它的发展打下了坚实的基础。
Backfire2010年03月04日,OpenWrtBackfire10.03Beta发布,该版本是开源的路由器固件,基于linux,功能强悍,支持好多主流的平台和路由器,甚至支持国外的君正jz4740平台,是学习和开发嵌入式,也是工业、商业应用理想平台。更新方面:brcm-2.4更新到2.4.37kernel,othertargets更新到2.6.30or2.6.32,arm/mips平台的gcc更新到4.3.3,powerpc的gcc更新到4.4.3,uClibc更新到0.9.30.1,Broadcom11g芯片组的b43无线网卡驱动更新到2.6kernel,支持Atheros11nath9k,支持好多新的ar71xx设备,magicbox划入ppc4040x平台。
2010年03月25日,OpenWrt发布Backfire10.03-rc1,支持国外留下的tp-link最新多款11n的路由器,是不是想让路由器支持万能中继呢,或则降低路由器的多wan口支持呢,更多的这种高档路由才有的功能,其实能让家用路由轻松具备。
2010年04月07日,OpenWRT放出Backfire10.03即将版。
2010年08月29日OpenWRT放出了Backfire10.03.1。修正了好多BUG,增强了兼容性。TP-LINKWR841841Nv2早已可以正常使用了,包括无线部份和上网部份。自rc1以后的变动:改进了防DNS重绑定功击,改进了uhttpd稳定性,Rootfs生成修补(Orion景色),修正了基于BRCM47XX的PCI初始化,添加了rtl8366vlan改变的整合脚本,还原了通常x86镜像GRUB控制台,增强了ar71xx系列以太网驱动程序性能,添加了ar7240交换机驱动,一些swconfig和交换机驱动的改进,RDC使用启动加载器支持码率,容许原生HID支持通过添加kmod-input-hid,6in4:适当的处理了PPPoE联接而且修补了终端隧洞更新。
九、国内版本
鉴于开源软件在国外的发展态势,目前国外有基于OpenWRT改进而至的OpenWRT-DreamBox。这个版本的OpenWRT集成了了好多常用功能(包括脱机下载等),而通过这个版本的OpenWRT便可以把一个路由器的功能发挥的淋漓尽致。
十、搭建编译环境
现今有越来越多的Maker开始折腾OpenWrt,但作为一个Maker菜鸟来讲,在网上还是很难找到一份系统的入门级资料。查找资料很辛苦,但是OpenWrt的门槛相对较高,希望这篇文章所提供的从零开始学OpenWrt编译+救砖+使用教程能减少菜鸟们的入门难度,其实,编译过程非必须,通常的路由都可找到可用的稳定固件直接救砖。
1、安装Ubuntu(编译须要Linux环境),到其官网下载,版本按照自己所需选择即可。可以选择安装到虚拟机或则化学机linux vps,图形化安装并且是英文版,连安装都搞不定的,可以关掉本页面了;(下载地址可以百度,回复贴中会提供)
2、切记不要改动软件源,同时按住Ctrl+Alt+T,调出终端;
3、逐条输入下述命令(及时验证是否安装成功):
[php]
sudoapt-getinstallg++
sudoapt-getinstalllibncurses5-dev
sudoapt-getinstallzlib1g-dev
sudoapt-getinstallbison
sudoapt-getinstallflex
sudoapt-getinstallunzip
sudoapt-getinstallautoconf
sudoapt-getinstallgawk
sudoapt-getinstallmake
sudoapt-getinstallgettext
sudoapt-getinstallgcc
sudoapt-getinstallbinutils
sudoapt-getinstallpatch
sudoapt-getinstallbzip2
sudoapt-getinstalllibz-dev
sudoapt-getinstallasciidoc
sudoapt-getinstallsubversion
sudoapt-getinstallsphinxsearch
sudoapt-getinstalllibtool
sudoapt-getinstallsphinx-common
[/php]
至此编译环境搭建完成。
十一、下载OpenWrt源码
OpenWrt源码分两种,一种是最新但不是最稳定的Trunk开发版,一种是最稳定的Backfire版,建议下载官方源码。下载前先在本地创建文件夹:
[php]
mkdiropenwrt
sudochmod777openwrt
cdopenwrt
[/php]
选择你想要的版本之后执行下载命令,下载结束会显示版本号:
Trunk版下载命令:
[php]
svncosvn:///openwrt/trunk/
[/php]
Backfire版下载命令:
[php]
svncosvn:///openwrt/branches/backfire/
[/php]
添加软件扩充包,将feeds.conf.default更改为feeds.conf:
[php]
cpfeeds.conf.defaultfeeds.conf
[/php]
更新扩充,安装扩充:
[php]
./scripts/feedsupdate-a
./scripts/feedsinstall–a
[/php]
注:假如不是刚下载的源码,为保持代码为最新状态,应定期运行svnupdate命令更新源码。
测试编译环境:
[php]
makedefconfig
到这儿就可以开始编译自己的固件了。步入订制界面:
[php]
makemenuconfig
[/php]
倘若一切正常linux系统移植,会出现一个配置菜单,可以选择要编译的固件平台(芯片类型)、型号,能够选择固件中要添加的功能和组件,配置好后保存并退出菜单即可。
[php]
openwrt-make
[/php]
假如你想更改源码,应当在此步进行,如支持大容量Flash之类的更改linux系统移植,自己上网查到更改哪些文件哪些地方后,就在ubuntu图形界面上进去找到文件,双击打开文本编辑器更改保存。
十二、开始编译:
[php]
Make
[/php]
或则
[php]
makeV=99
[/php]
或则
[php]
make-jV=99
[/php]
make是编译命令,V=99表示输出debug信息,V一定要小写,假如要让CPU全速编译,就加上-j参数,第一次编译最好不带-j参数。
编译过程保持联网(会从网上下载一些源码包),所以断网可能导致编译中断,编译所需时间与笔记本CPU及网路环境有很大关系,第一次编译时间较久,快则半小时长则2、3个小时,然后的编译所需时间较短。编译完成后会在源码文件目录出现bin文件夹(如trunk/bin/XXXX),假如你手里的路由是原版固件须要刷OpenWrt须要选用XXX-factory.bin固件,假如路由早已刷了OpenWrt,选用升级固件XXXX-sysupgrade.bin升级用的,在升级界面升级即可。进到文件夹找到你须要的固件传出(通过邮箱、网盘、U盘等)嵌入式linux 培训,开始救砖吧。
十三、将OpenWrt刷入路由器
要在路由器上使用OpenWrt,首先要将路由器固件刷新为OpenWrt,即相当于OpenWrt系统的安装,不同机型的路由器的安装方式可能也会不一样,但通常常用的有三种方式:
1.Web上传固件更新(就是路由器设置或管理界面的那种固件更新)
2.PFTP上传固件更新(最简单的就是HFS了)
编程器写入固件(编程器固件不同于上述两种固件)
具体机型的路由器适用于哪种或哪几种方式,需自行尝试。
十四、开始使用OpenWrt
要对OpenWrt进行配置,通常有两条途径:
1.SSH登入通过命令行控制
2.Web登陆通过Web界面设置
首次安装OpenWrt后,须要设置密码才可以使用SSH登入,技巧是使用telnet登陆或则Web登陆设置密码。在Windows下边telnet和SSH登入可以使用Putty,在Linux或Mac下可分别使用如下命令:
[php]
ssh–lroot192.168.1.1//Linux
ssh–lroot@192.168.1.1//Mac
[/php]
通常指令与常见Linux发行版相同,而且OpenWrt使用自己的包管理器:opkg,使用“opkg–help”查看帮助信息。以下是一些常用操作命令:
[php]
opkgupdate//更新软件包列表
opkginstall//在线安装软件包
opkgremove//移除软件包
[/php]
登陆Web管理界面,前提是该OpenWrt系统中要安装了Web界面,通常是Luci,登陆形式与普通路由器无异,打开浏览器,输入路由器IP即可步入登入界面,OpenWrt的默认IP是192.168.1.1。
到此,OpenWrt的房门已为你敞开。接出来,开始尝试借助OpenWrt实现更多智能应用吧,例如单号多拨压榨营运商带宽、绑定域名远程控制、挂载大容量硬碟、搭建BT下载机、搭建网路摄像头、Samba/DLNA家庭NAS共享、私有云同步、FTP、个人网站/服务器…
十五、附录:
须要学会用ssh登陆路由器用linux命令查看。
ps命令查看当前系统运行的进程信息
free命令查看显存使用和swap挂载情况
ls查看目录和文件
cd步入退出目录
vi查看编辑配置文件
安装命令:
[php]
#opkgupdate
#opkginstallnano
ucisetnetwork.lan.ipaddr=[lanip]
[/php]
使用pppoe设置
Shell代码
[php]
ucisetnetwork.wan.proto=pppoe//设置wan口类型为pppoe
ucisetnetwork.wan.username=[上网账户]
ucisetnetwork.wan.password=[上网密码]//这两行设置pppoe用户名和密码
[/php]
假如要挂在上级路由下边,就须要进行下边的设置
Shell代码
[php]
ucisetnetwork.wan.proto=none//关闭wan
ucisetnetwork.lan.gateway=[上级路由ip]//网段指向上级路由
ucisetnetwork.lan.dns=[上级路由ip]//dns指向上级路由
ucisetdhcp.lan.ignore=1//关闭lan的dhcp
[/php]
最后对无线网路进行配置
Shell代码
[php]
ucisetwireless.@wifi-device[0].disabled=0//打开无线
ucisetwireless.@wifi-device[0].txpower=17//设置功率为17dbm太高会烧无线模块
ucisetwireless.@wifi-device[0].channel=6//设置无线信道为6
ucisetwireless.@wifi-iface[0].mode=ap//设置无线模式为ap
ucisetwireless.@wifi-iface[0].ssid=[自己设置SSID]//设置无线SSID
ucisetwireless.@wifi-iface[0].network=lan//无线链接到lan上
ucisetwireless.@wifi-iface[0].encryption=psk2//设置加密为WPA2-PSK
ucisetwireless.@wifi-iface[0].key=[密码]//设置无线密码
[/php]
递交应用配置
Shell代码
[php]
ucicommit//应用
/etc/init.d/networkrestart//重启网路服务
[/php]
安装luci管理界面
Shell代码
[php]
opkgupdate//更新软件列表
opkglist-installed//查看已安装软件
opkginstallluci//安装LUCI
opkginstallluci-i18n-chinese//支持英文
luci-app-firewall-0.10.0-1
luci-i18n-english-0.10.0-1
luci-lib-core-0.10.0-1
luci-lib-ipkg-0.10.0-1
luci-lib-lmo-0.10.0-1
luci-lib-nixio-0.10.0-1
luci-lib-sys-0.10.0-1
luci-lib-web-0.10.0-1
luci-mod-admin-core-0.10.0-1
luci-mod-admin-full-0.10.0-1
luci-proto-core-0.10.0-1
luci-proto-ppp-0.10.0-1
luci-sgi-cgi-0.10.0-1
luci-theme-base-0.10.0-1
luci-theme-openwrt-0.10.0-1
[/php]
即可完成LUCI的安装。
输入以下命令开启支持web服务的uhttpd,并设置其为自启动:
Shell代码
[php]
/etc/init.d/uhttpdenable#开机自启动
/etc/init.d/uhttpdstart#启动uhttpd
[/php]
-Wifidog
你可以尝试执行以下命令安装Wifidog:
[php]
opkgupdate#Optional
opkginstallwifidog
[/php]
--sftp安装
[php]
opkgupdate
opkginstallvsftpdopenssh-sftp-server
/etc/init.d/vsftpdenable
/etc/init.d/vsftpdstart
[/php]
魅族端口转发命令:
通过更改/etc/config/firewall这个文件来实现开放自己须要的端口到内网。
[php]
configrule’httpdwan’
optionsrc’wan’
optiondest_port’8088′
optionproto’tcp’
optiontarget’ACCEPT’
optionname””httpdwanaccepttcpport8088””
[/php]
保存后,执行/etc/init.d/firewallrestart重启防火墙。
SSH工具:
1.WINSCP(文件传输到路由器上严重推荐使用)
2.putty英文版英文的使用的难度相对低一点
熟练一些的用户推荐SecureCRT