如果要学习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交流功能,这个版本名为“White Russian”,而1.0版本于2005年底公布。
四、特点OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。 同时,它还供应了100多个已编译好的软件,而且数量还在不断增加,而 OpenWrt SDK 更简化了开拓软件的工序。
OpenWRT不同于其他许多用于路由器的发行版,它是一个从零开始编写的、功能完好的、随意马虎修正的路由器操作系统。实际上,这意味着您能够利用您想要的功能而不加进其他的累赘,而支持这些功能事情的linux kernel又远比绝大多数发行版来得新。
五、上风如果对 Linux 系统有一定的认识, 并想学习或打仗嵌入式 Linux 的话, OpenWRT很适宜。 而且OpenWRT支持各种处理器架构,无论是对ARM,X86,PowerPC或者MIPS都有很好的支持。 其多达3000多种软件包,席卷从工具链(toolchain),到内核(linux kernel),到软件包(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模块不能事情而造成功能缺失落(RG100A和DB120除外)。
由于OpenWRT并不是官方发布的路由器固件,以是要利用(刷入该固件)有困难,而且其基于Linux,导致OpenWRT的入门门槛较高。
八、历史版本White RussianOpenWRT的初始版本,从2005年7月的White Russian RC1开始发展,一贯到2007年1月才发布White Russian 0.9。
KamikazeOpenWRT的第二个版本,从2007年6月开始发布Kamikaze 7.06,一贯更新到2010年1月的Kamikaze 8.09.2结束。这期间OpenWRT进行了大量改进,并为它的发展打下了坚实的根本。
Backfire2010年03月04日,OpenWrt Backfire 10.03 Beta发布,该版本是开源的路由器固件,基于linux,功能强大,支持很多主流的平台和路由器,乃至支持海内的君正jz4740平台,是学习和开拓嵌入式,也是工业、 商业运用空想平台。更新方面: brcm-2.4 更新到 2.4.37 kernel ,other targets 更新到 2.6.30 or 2.6.32 ,arm/mips平台的 gcc 更新到 4.3.3 ,powerpc的gcc更新到 4.4.3 ,uClibc 更新到 0.9.30.1 , Broadcom 11g 芯片组的 b43 无线网卡驱动更新到 2.6 kernel ,支持Atheros 11n ath9k ,支持很多新的ar71xx设备,magicbox归入ppc40x平台 。
2010年03月25日,OpenWrt 发布 Backfire 10.03-rc1,支持海内留下的 tp-link最新多款11n的路由器,是不是想让路由器支持万能中继呢,或者增加路由器的多wan口支持呢,更多的这些高端路由才有的功能,或许能 让家用路由轻松具备。
2010年04月07日,OpenWRT放出Backfire 10.03正式版。
2010年08月29日OpenWRT放出了Backfire 10.03.1。改动了很多BUG,提高了兼容性。TP-LINK WR841N v2 已经可以正常利用了,包括无线部分和上网部分。 自rc1之后的变动:改进了防DNS重绑定攻击,改进了uhttpd稳定性, Rootfs天生修复(Orion景象),改动了基于BRCM47XX的PCI初始化,添加了rtl8366 vlan 改变的 整合脚本,还原了一样平常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***,到其官网下载,版本根据自己所需选择即可。可以选择安装到虚拟机或者物理机,图形化安装而且是中文版,连安装都搞不定的,可以关闭本页面了;(下载地址可以百度,回答贴中会供应)
2、牢记不要改动软件源,同时按住Ctrl + Alt + T,调出终端;
3、逐条输入下列命令(及时验证是否安装成功):
[php]
sudo apt-get install g++
sudo apt-get install libncurses5-dev
sudo apt-get install zlib1g-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install unzip
sudo apt-get install autoconf
sudo apt-get install gawk
sudo apt-get install make
sudo apt-get install gettext
sudo apt-get install gcc
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install libz-dev
sudo apt-get install asciidoc
sudo apt-get install subversion
sudo apt-get install sphinxsearch
sudo apt-get install libtool
sudo apt-get install sphinx-common
[/php]
至此编译环境搭建完成。
十一、下载OpenWrt源码OpenWrt源码分两种,一种是最新但不是最稳定的Trunk开拓版,一种是最稳定的Backfire版,建议下载官方源码。下载前先在本地创建文件夹:
[php]
mkdir openwrt
sudo chmod 777 openwrt
cd openwrt
[/php]
选择你想要的版本然后实行下载命令,下载结束会显示版本号:
Trunk版下载命令:
[php]
svn co svn://svn.openwrt.org/openwrt/trunk/
[/php]
Backfire版下载命令:
[php]
svn co svn://svn.openwrt.org/openwrt/branches/backfire/
[/php]
添加软件扩展包,将feeds.conf.default修正为feeds.conf:
[php]
cp feeds.conf.default feeds.conf
[/php]
更新扩展,安装扩展:
[php]
./scripts/feeds update -a
./scripts/feeds install –a
[/php]
注:如果不是刚下载的源码,为保持代码为最新状态,应定期运行svn update命令更新源码。
测试编译环境:
[php]
make defconfig
到这里就可以开始编译自己的固件了。进入定制界面:
[php]
make menuconfig
[/php]
如果统统正常,会涌现一个配置菜单,可以选择要编译的固件平台(芯片类型)、型号,还能选择固件中要添加的功能和组件,配置好后保存并退出菜单即可。
[php]
openwrt-make
[/php]
如果你想修正源码,该当在此步进行,如支持大容量Flash之类的修正,自己上网查到修正什么文件什么地方后,就在ubuntu图形界面上进去找到文件,双击打开文本编辑器修正保存。
十二、开始编译:[php]
Make
[/php]
或者
[php]
make V=99
[/php]
或者
[php]
make -j V=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盘等),开始刷机吧。
十三、将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 –l root 192.168.1.1 //Linux
ssh –l root@192.168.1.1 //Mac
[/php]
一样平常指令与常见Linux发行版相同,但是OpenWrt利用自己的包管理器:opkg,利用“opkg –help”查看帮助信息。以下是一些常用操作命令:
[php]
opkg update //更新软件包列表
opkg install //在线安装软件包
opkg remove //移除软件包
[/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]
#opkg update
#opkg install nano
uci set network.lan.ipaddr=[lan ip]
[/php]
利用pppoe设置
Shell代码
[php]
uci set network.wan.proto=pppoe //设置wan口类型为pppoe
uci set network.wan.username=[上网帐户]
uci set network.wan.password=[上网密码] //这两行设置pppoe用户名和密码
[/php]
如果要挂在上级路由下面,就须要进行下面的设置
Shell代码
[php]
uci set network.wan.proto=none //关掉wan
uci set network.lan.gateway=[上级路由ip] //网关指向上级路由
uci set network.lan.dns=[上级路由ip] //dns指向上级路由
uci set dhcp.lan.ignore=1 //关掉lan的dhcp
[/php]
末了对无线网络进行配置
Shell代码
[php]
uci set wireless.@wifi-device[0].disabled=0 //打开无线
uci set wireless.@wifi-device[0].txpower=17 //设置功率为17dbm 太高会烧无线模块
uci set wireless.@wifi-device[0].channel=6 //设置无线信道为6
uci set wireless.@wifi-iface[0].mode=ap //设置无线模式为ap
uci set wireless.@wifi-iface[0].ssid=[自己设置SSID] //设置无线SSID
uci set wireless.@wifi-iface[0].network=lan //无线链接到lan上
uci set wireless.@wifi-iface[0].encryption=psk2 //设置加密为WPA2-PSK
uci set wireless.@wifi-iface[0].key=[密码] //设置无线密码
[/php]
提走运用配置
Shell代码
[php]
uci commit //运用
/etc/init.d/network restart //重启网络做事
[/php]
安装luci管理界面
Shell代码
[php]
opkg update // 更新软件列表
opkg list-installed // 查看已安装软件
opkg install luci // 安装LUCI
opkg install luci-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/uhttpd enable # 开机自启动
/etc/init.d/uhttpd start # 启动uhttpd
[/php]
- Wifidog
你可以考试测验实行以下命令安装Wifidog:
[php]
opkg update # Optional
opkg install wifidog
[/php]
--sftp安装
[php]
opkg update
opkg install vsftpd openssh-sftp-server
/etc/init.d/vsftpd enable
/etc/init.d/vsftpd start
[/php]
小米端口转发命令:
通过修正 /etc/config/firewall 这个文件来实现开放自己须要的端口到外网。
[php]
config rule 'httpdwan'
option src 'wan'
option dest_port '8088'
option proto 'tcp'
option target 'ACCEPT'
option name ''\''httpd wan accept tcp port 8088'\'''
[/php]
保存后,实行 /etc/init.d/firewall restart 重启防火墙。
SSH工具:
1.WINSCP(文件传输到路由器上严重推举利用)
2.putty中文版 中文的利用的难度相对低一点
闇练一些的用户推举 SecureCRT