前沿拓展:
tl-wr841n
1、編驗(yàn)句訓(xùn)空處僅掉市趕第一電腦單獨(dú)連接**路由器,IE瀏覽器搜索框輸入192.168.1.1,名來自字、密碼admin,進(jìn)入**路由器修改IP為192.168.5.1,記住了;
2、保證光纖貓連接電腦已經(jīng)能夠正常上網(wǎng),第二在把插電腦的網(wǎng)線連接到**路由器WAN口,附圖;
3、連接好**路由器,用修改的IP進(jìn)入**路由器設(shè)置,詳情搜索:TL-WR841N**路由器設(shè)置方法。
一、講在開始
現(xiàn)階段openwrt官方支持的路由列表:wiki.openwrt.org/toh/start
如果要學(xué)習(xí)openwrt的話,買些列表中二手的路由器來實(shí)踐下更容易學(xué)習(xí),大部分要升級一下rom芯片和內(nèi)存芯片,典型配置都是4M、64M。 大家先學(xué)習(xí)一下,等待小米開放時(shí)刻的到來,有備無患……
OpenWrt 可以被描述為一個(gè)嵌入式的 Linux 發(fā)行版,(主流路由器固件有 dd-wrt,tomato,openwrt三類)而不是試圖建立一個(gè)單一的、靜態(tài)的系統(tǒng)。OpenWrt的包管理提供了一個(gè)完全可寫的文件系統(tǒng),從應(yīng)用程序供應(yīng)商提供的選擇和配置,并允許您自定義的設(shè)備,以適應(yīng)任何應(yīng)用程序。
對于開發(fā)人員,OpenWrt 是使用框架來構(gòu)建應(yīng)用程序,而無需建立一個(gè)完整的固件來支持;對于用戶來說,這意味著其擁有完全定制的能力,可以用前所未有的方式使用該設(shè)備。
二、開發(fā)原因
當(dāng)Linksys釋放 WRT54G/GS 的源碼后,網(wǎng)上出現(xiàn)了很多不同版本的 Firmware 去增強(qiáng)原有的功能。大多數(shù)的 Firmware 都是99%使用 Linksys的源碼,只有1%是加上去的,每一種 Firmware 都是針對特定的市場而設(shè)計(jì),這樣做有2個(gè)缺點(diǎn),第一個(gè)是難以**各版本Firmware的長處,第二個(gè)是這版本距離 Linux 正式發(fā)行版越來越遠(yuǎn)。
OpenWrt 選擇了另一條路,它從零開始,一點(diǎn)一點(diǎn)的把各軟件加入去,使其接近 Linksys 版 Firmware的功能,而OpenWrt 的成功之處是它的文件系統(tǒng)是可寫的,開發(fā)者無需在每一次修改后重新編譯,令它更像一個(gè)小型的 Linux 電腦系統(tǒng)。
三、發(fā)展歷程
OpenWrt 項(xiàng)目由 2004 年 1 月開始, 第一個(gè)版本是基于 Linksys 提供的 GPL 源碼及 uclibc 中的 buildroot 項(xiàng)目, 這個(gè)版本稱為 “stable” 版, 在網(wǎng)上至今仍有很多項(xiàng)目使用這個(gè)版本, 較為有名 Freifunk-Firmware 和 Sip@Home.
到了2005年初, 一些新的開發(fā)人員加入了這項(xiàng)目, 幾個(gè)月后他們釋出了第一個(gè) “experimental” 版本, 這和以前版本不同的是, 這版本差不多完全舍棄了 Linksys 的 GPL 源碼, 使用了 buildroot2 作為核心技術(shù), 將 OpenWrt 完全模塊化,OpenWrt 使用 Linux 正式發(fā)行的核心源碼(2.4.30),加上了一些補(bǔ)丁和網(wǎng)絡(luò)驅(qū)動(dòng),開發(fā)隊(duì)伍更為OpenWrt添加了許多免費(fèi)的工具,可以直接把Image寫入 Flash (mtd)里面,設(shè)定**功能和VLAN交換功能,這個(gè)版本名為“White Russian”,而1.0版本于2005年底公布。
四、特點(diǎn)
OpenWRT是一個(gè)高度模塊化、高度自動(dòng)化的嵌入式Linux系統(tǒng),擁有強(qiáng)大的網(wǎng)絡(luò)組件和擴(kuò)展性,常常被用于工控設(shè)備、電話、小型機(jī)器人、智能家居、路由器以及VOIP設(shè)備中。 同時(shí),它還提供了100多個(gè)已編譯好的軟件,而且數(shù)量還在不斷增加,而 OpenWrt SDK 更簡化了開發(fā)軟件的工序。
OpenWRT不同于其他許多用于路由器的發(fā)行版,它是一個(gè)從零開始編寫的、功能齊全的、容易修改的路由器**作系統(tǒng)。實(shí)際上,這意味著您能夠使用您想要的功能而不加進(jìn)其他的累贅,而支持這些功能工作的linux kernel又遠(yuǎn)比絕大多數(shù)發(fā)行版來得新。
五、優(yōu)勢
如果對 Linux 系統(tǒng)有一定的認(rèn)識(shí), 并想學(xué)習(xí)或接觸嵌入式 Linux 的話, OpenWRT很適合。 而且OpenWRT支持各種處理器架構(gòu),無論是對ARM,X86,PowerPC或者M(jìn)IPS都有很好的支持。 其多達(dá)3000多種軟件包,囊括從工具鏈(toolchain),到內(nèi)核(linux kernel),到軟件包(packages),再到根文件系統(tǒng)(rootfs)整個(gè)體系,使得用戶只需簡單的一個(gè)make命令即可方便快速地定制一個(gè)具有特定功能的嵌入式系統(tǒng)來制作固件。
六、開發(fā)過程
一般嵌入式 Linux 的開發(fā)過程, 無論是 ARM, PowerPC 或 MIPS 的處理器, 都必需經(jīng)過以下的開發(fā)過程:
1、 創(chuàng)建 Linux 交叉編譯環(huán)境;
2、建立 Bootloader;
3、移植 Linux 內(nèi)核;
4、建立 Rootfs (根文件系統(tǒng));
5、安裝驅(qū)動(dòng)程序;
6、安裝軟件;
熟悉這些嵚入式 Linux 的基本開發(fā)流程后,不再局限于 MIPS 處理器和**路由器, 可以嘗試在其它處理器, 或者非**路由器的系統(tǒng)移植嵌入式 Linux, 定制合適自己的應(yīng)用軟件, 并建立一個(gè)完整的嵌入式產(chǎn)品。
七、劣勢
由于CPU內(nèi)核體系不同,造成很多應(yīng)用程序移植到OpenWrt上的時(shí)候經(jīng)常崩潰。
由于ADSL硬件模塊的驅(qū)動(dòng)程序沒有開放源代碼,造成很多ADSL一體**路由的ADSL模塊不能工作而造成功能缺失(RG100A和DB120除外)。
由于OpenWRT并不是官方發(fā)布的路由器固件,所以要使用(刷入該固件)有困難,而且其基于Linux,導(dǎo)致OpenWRT的入門門檻較高。
八、歷史版本
White RussianOpenWRT的初始版本,從2005年7月的White Russian RC1開始發(fā)展,一直到2007年1月才發(fā)布White Russian 0.9。
KamikazeOpenWRT的第二個(gè)版本,從2007年6月開始發(fā)布Kamikaze 7.06,一直更新到2010年1月的Kamikaze 8.09.2結(jié)束。這期間OpenWRT進(jìn)行了大量改進(jìn),并為它的發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ)。
Backfire2010年03月04日,OpenWrt Backfire 10.03 Beta發(fā)布,該版本是開源的路由器固件,基于linux,功能強(qiáng)大,支持很多主流的平臺(tái)和路由器,甚至支持國內(nèi)的君正jz4740平臺(tái),是學(xué)習(xí)和開發(fā)嵌入式,也是工業(yè)、 商業(yè)應(yīng)用理想平臺(tái)。更新方面: brcm-2.4 更新到 2.4.37 kernel ,other targets 更新到 2.6.30 or 2.6.32 ,arm/mips平臺(tái)的 gcc 更新到 4.3.3 ,powerpc的gcc更新到 4.4.3 ,uClibc 更新到 0.9.30.1 , Broadcom 11g 芯片組的 b43 **網(wǎng)卡驅(qū)動(dòng)更新到 2.6 kernel ,支持Atheros 11n ath9k ,支持很多新的ar71xx設(shè)備,magicbox歸入ppc40x平臺(tái) 。
2010年03月25日,OpenWrt 發(fā)布 Backfire 10.03-rc1,支持國內(nèi)留下的 tp-link最新多款11n的路由器,是不是想讓路由器支持**中繼呢,或者增加路由器的多wan口支持呢,更多的這些高端路由才有的功能,或許能 讓家用路由輕松具備。
2010年04月07日,OpenWRT放出Backfire 10.03正式版。
2010年08月29日OpenWRT放出了Backfire 10.03.1。修正了很多BUG,提高了兼容性。TP-LINK WR841N v2 已經(jīng)可以正常使用了,包括**部分和上網(wǎng)部分。 自rc1之后的變動(dòng):改進(jìn)了防DNS重綁定攻擊,改進(jìn)了uhttpd穩(wěn)定性, Rootfs生成修復(fù)(Orion景象),修正了基于BRCM47XX的PCI初始化,添加了rtl8366 vlan 改變的 整合腳本,還原了一般x86鏡像 GRUB控制臺(tái),提高了ar71xx系列以太網(wǎng)驅(qū)動(dòng)程序性能,添加了ar7240 交換機(jī)驅(qū)動(dòng),一些swconfig 和 交換機(jī)驅(qū)動(dòng)的改進(jìn),RDC 使用啟動(dòng)加載器支持波特率,允許原生HID 支持 通過添加 kmod-input-hid,6in4:適當(dāng)?shù)奶幚砹薖PPoE連接并且修復(fù)了終端隧道更新。
九、國內(nèi)版本
鑒于開源軟件在國內(nèi)的發(fā)展態(tài)勢,目前國內(nèi)有基于OpenWRT改進(jìn)而來的OpenWRT-DreamBox。這個(gè)版本的OpenWRT集成了了很多常用功能(包括脫機(jī)下載等),而通過這個(gè)版本的OpenWRT便可以把一個(gè)路由器的功能發(fā)揮的淋漓盡致。
十、搭建編譯環(huán)境
現(xiàn)在有越來越多的Maker開始折騰OpenWrt,但作為一個(gè)Maker新手來講,在網(wǎng)上還是很難找到一份系統(tǒng)的入門級資料。查找資料很辛苦,而且OpenWrt的門檻相對較高,希望這篇文章所提供的從零開始學(xué)OpenWrt編譯 + 刷機(jī) + 使用教程能降低新手們的入門難度,當(dāng)然,編譯過程非必須,一般的路由都可找到可用的穩(wěn)定固件直接刷機(jī)。
1、安裝Ubuntu(編譯需要Linux環(huán)境),到其官網(wǎng)下載,版本根據(jù)自己所需選擇即可??梢赃x擇安裝到虛擬機(jī)或者物理機(jī),圖形化安裝而且是中文版,連安裝都搞不定的,可以關(guān)閉本頁面了;(下載地址可以百度,回復(fù)貼中會(huì)提供)
2、切記不要改動(dòng)軟件源,同時(shí)按住Ctrl + Alt + T,調(diào)出終端;
3、逐條輸入下列命令(及時(shí)驗(yàn)證是否安裝成功):
[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]
至此編譯環(huán)境搭建完成。
十一、下載OpenWrt源碼
OpenWrt源碼分兩種,一種是最新但不是最穩(wěn)定的Trunk開發(fā)版,一種是最穩(wěn)定的Backfire版,建議下載官方源碼。下載前先在本地創(chuàng)建文件夾:
[php]
mkdir openwrt
sudo chmod 777 openwrt
cd openwrt
[/php]
選擇你想要的版本第二執(zhí)行下載命令,下載結(jié)束會(huì)顯示版本號(hào):
Trunk版下載命令:
[php]
svn co svn://svn.openwrt.org/openwrt/trunk/
[/php]
Backfire版下載命令:
[php]
svn co svn://svn.openwrt.org/openwrt/branches/backfire/
[/php]
添加軟件擴(kuò)展包,將feeds.conf.default修改為feeds.conf:
[php]
cp feeds.conf.default feeds.conf
[/php]
更新擴(kuò)展,安裝擴(kuò)展:
[php]
./scripts/feeds update -a
./scripts/feeds install –a
[/php]
注:如果不是剛下載的源碼,為保持代碼為最新狀態(tài),應(yīng)定期運(yùn)行svn update命令更新源碼。
測試編譯環(huán)境:
[php]
make defconfig
到這里就可以開始編譯自己的固件了。進(jìn)入定制界面:
[php]
make menuconfig
[/php]
如果一切正常,會(huì)出現(xiàn)一個(gè)配置菜單,可以選擇要編譯的固件平臺(tái)(芯片類型)、型號(hào),還能選擇固件中要添加的功能和組件,配置好后保存并退出菜單即可。
[php]
openwrt-make
[/php]
如果你想修改源碼,應(yīng)該在此步進(jìn)行,如支持大容量Flash之類的修改,自己上網(wǎng)查到修改什么文件什么地方后,就在ubuntu圖形界面上進(jìn)去找到文件,雙擊打開文本編輯器修改保存。
十二、開始編譯:
[php]
Make
[/php]
或者
[php]
make V=99
[/php]
或者
[php]
make -j V=99
[/php]
make是編譯命令,V=99表示輸出debug信息,V一定要大寫,如果要讓CPU全速編譯,就加上 -j 參數(shù),第一次編譯最好不帶-j參數(shù)。
編譯過程保持聯(lián)網(wǎng)(會(huì)從網(wǎng)上下載一些源碼包),所以斷網(wǎng)可能造成編譯中斷,編譯所需時(shí)間與電腦CPU及網(wǎng)絡(luò)環(huán)境有很大關(guān)系,第一次編譯時(shí)間較久,快則半小時(shí)長則2、3個(gè)小時(shí),之后的編譯所需時(shí)間較短。編譯完成后會(huì)在源碼文件目錄出現(xiàn)bin文件夾(如trunk/bin/XXXX),如果你手里的路由是原版固件需要刷OpenWrt需要選用XXX-factory.bin固件,如果路由已經(jīng)刷了OpenWrt,選用升級固件XXXX-sysupgrade.bin升級用的,在升級界面升級即可。進(jìn)到文件夾找到你需要的固件傳出(通過郵箱、網(wǎng)盤、U盤等),開始刷機(jī)吧。
十三、將OpenWrt刷入路由器
要在路由器上使用OpenWrt,第一要將路由器固件刷新為OpenWrt,即相當(dāng)于OpenWrt 系統(tǒng)的安裝,不同型號(hào)的路由器的安裝方法可能也會(huì)不一樣,但一般常用的有三種方法:
1.Web上傳固件更新(就是路由器設(shè)置或管理界面的那個(gè)固件更新)
2.PFTP上傳固件更新(最簡單的就是HFS了)
編程器寫入固件(編程器固件不同于上述兩種固件)
具體型號(hào)的路由器適用于哪種或哪幾種方法,需自行嘗試。
十四、開始使用OpenWrt
要對OpenWrt進(jìn)行配置,一般有兩條途徑:
1.SSH登錄通過命令行控制
2.Web登錄通過Web界面設(shè)置
首次安裝OpenWrt后,需要設(shè)置密碼才可以使用SSH登錄,方法是使用telnet登錄或者Web登錄設(shè)置密碼。在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發(fā)行版相同,但是OpenWrt使用自己的包管理器:opkg,使用“opkg –help”查看幫助信息。以下是一些常用**作命令:
[php]
opkg update //更新軟件包列表
opkg install //在線安裝軟件包
opkg remove //移除軟件包
[/php]
登錄Web管理界面,前提是該OpenWrt系統(tǒng)中要安裝了Web界面,一般是Luci,登錄方式與普通路由器無異,打開瀏覽器,輸入路由器IP即可進(jìn)入登錄界面,OpenWrt的默認(rèn)IP是192.168.1.1。
到此,OpenWrt的大門已為你敞開。接下來,開始嘗試?yán)肙penWrt實(shí)現(xiàn)更多智能應(yīng)用吧,比如單號(hào)多撥榨取**帶寬、綁定域名遠(yuǎn)程控制、掛載大容量硬盤、搭建BT下載機(jī)、搭建網(wǎng)絡(luò)攝像頭、Samba/DLNA家庭NAS共享、私有云同步、FTP、個(gè)人網(wǎng)站/服務(wù)器…
十五、附錄:
需要學(xué)會(huì)用ssh登錄路由器用linux命令查看。
ps 命令查看當(dāng)前系統(tǒng)運(yùn)行的進(jìn)程信息
free 命令查看內(nèi)存使用和swap掛載情況
ls 查看目錄和文件
cd 進(jìn)入退出目錄
vi 查看編輯配置文件
安裝命令:
[php]
#opkg update
#opkg install nano
uci set network.lan.ipaddr=[lan ip]
[/php]
使用pppoe設(shè)置
Shell代碼
[php]
uci set network.wan.proto=pppoe //設(shè)置wan口類型為pppoe
uci set network.wan.username=[上網(wǎng)帳戶]
uci set network.wan.password=[上網(wǎng)密碼] //這兩行設(shè)置pppoe用戶名和密碼
[/php]
如果要掛在上級路由下面,就需要進(jìn)行下面的設(shè)置
Shell代碼
[php]
uci set network.wan.proto=none //關(guān)掉wan
uci set network.lan.gateway=[上級路由ip] //**指向上級路由
uci set network.lan.dns=[上級路由ip] //dns指向上級路由
uci set dhcp.lan.ignore=1 //關(guān)掉lan的dhcp
[/php]
最后對**網(wǎng)絡(luò)進(jìn)行配置
Shell代碼
[php]
uci set wireless.@wifi-device[0].disabled=0 //打開**
uci set wireless.@wifi-device[0].txpower=17 //設(shè)置功率為17dbm 太高會(huì)燒**模塊
uci set wireless.@wifi-device[0].channel=6 //設(shè)置**信道為6
uci set wireless.@wifi-iface[0].mode=ap //設(shè)置**模式為ap
uci set wireless.@wifi-iface[0].ssid=[自己設(shè)置SSID] //設(shè)置**SSID
uci set wireless.@wifi-iface[0].network=lan //**鏈接到lan上
uci set wireless.@wifi-iface[0].encryption=psk2 //設(shè)置加密為WPA2-PSK
uci set wireless.@wifi-iface[0].key=[密碼] //設(shè)置**密碼
[/php]
提交應(yīng)用配置
Shell代碼
[php]
uci commit //應(yīng)用
/etc/init.d/network restart //重啟網(wǎng)絡(luò)服務(wù)
[/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服務(wù)的uhttpd,并設(shè)置其為自啟動(dòng):
Shell代碼
[php]
/etc/init.d/uhttpd enable # 開機(jī)自啟動(dòng)
/etc/init.d/uhttpd start # 啟動(dòng)uhttpd
[/php]
– Wifidog
你可以嘗試執(zhí)行以下命令安裝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]
小米端口轉(zhuǎn)發(fā)命令:
通過修改 /etc/config/firewall 這個(gè)文件來實(shí)現(xiàn)開放自己需要的端口到外網(wǎng)。
[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]
保存后,執(zhí)行 /etc/init.d/firewall restart 重啟防火墻。
SSH工具:
1.WINSCP(文件傳輸?shù)铰酚善魃蠂?yán)重推薦使用)
2.putty中文版 中文的使用的難度相對低一點(diǎn)
熟練一些的用戶推薦 SecureCRT
拓展知識(shí):
tl-wr841n
TP-LINK TL-WR841N是TP-Link旗下一款經(jīng)典的11n**路由器,集有線**于一體,符合802.11n(Draft 2.0)標(biāo)準(zhǔn),最高**傳輸速率可達(dá)到300M。采用MIMO技術(shù),可提供更好的**傳輸性能、穩(wěn)定性和**覆蓋范圍。同時(shí)采用CCA技術(shù),能自動(dòng)避開頻道干擾并充分利用頻道捆綁優(yōu)勢。此外,WR841N也能很好的與其它11N的**產(chǎn)品兼容,并且向下支持802.11b/g。TP-LINK TL-WR841N**路由采用UFO幽浮外觀,造型時(shí)尚;信號(hào)靈敏、界面友好、功能強(qiáng)大、安全放心。它性價(jià)比很高,適合家庭、學(xué)生、商務(wù)人士使用。
前沿拓展:
tl-wr841n
1、編驗(yàn)句訓(xùn)空處僅掉市趕第一電腦單獨(dú)連接**路由器,IE瀏覽器搜索框輸入192.168.1.1,名來自字、密碼admin,進(jìn)入**路由器修改IP為192.168.5.1,記住了;
2、保證光纖貓連接電腦已經(jīng)能夠正常上網(wǎng),第二在把插電腦的網(wǎng)線連接到**路由器WAN口,附圖;
3、連接好**路由器,用修改的IP進(jìn)入**路由器設(shè)置,詳情搜索:TL-WR841N**路由器設(shè)置方法。
一、講在開始
現(xiàn)階段openwrt官方支持的路由列表:wiki.openwrt.org/toh/start
如果要學(xué)習(xí)openwrt的話,買些列表中二手的路由器來實(shí)踐下更容易學(xué)習(xí),大部分要升級一下rom芯片和內(nèi)存芯片,典型配置都是4M、64M。 大家先學(xué)習(xí)一下,等待小米開放時(shí)刻的到來,有備無患……
OpenWrt 可以被描述為一個(gè)嵌入式的 Linux 發(fā)行版,(主流路由器固件有 dd-wrt,tomato,openwrt三類)而不是試圖建立一個(gè)單一的、靜態(tài)的系統(tǒng)。OpenWrt的包管理提供了一個(gè)完全可寫的文件系統(tǒng),從應(yīng)用程序供應(yīng)商提供的選擇和配置,并允許您自定義的設(shè)備,以適應(yīng)任何應(yīng)用程序。
對于開發(fā)人員,OpenWrt 是使用框架來構(gòu)建應(yīng)用程序,而無需建立一個(gè)完整的固件來支持;對于用戶來說,這意味著其擁有完全定制的能力,可以用前所未有的方式使用該設(shè)備。
二、開發(fā)原因
當(dāng)Linksys釋放 WRT54G/GS 的源碼后,網(wǎng)上出現(xiàn)了很多不同版本的 Firmware 去增強(qiáng)原有的功能。大多數(shù)的 Firmware 都是99%使用 Linksys的源碼,只有1%是加上去的,每一種 Firmware 都是針對特定的市場而設(shè)計(jì),這樣做有2個(gè)缺點(diǎn),第一個(gè)是難以**各版本Firmware的長處,第二個(gè)是這版本距離 Linux 正式發(fā)行版越來越遠(yuǎn)。
OpenWrt 選擇了另一條路,它從零開始,一點(diǎn)一點(diǎn)的把各軟件加入去,使其接近 Linksys 版 Firmware的功能,而OpenWrt 的成功之處是它的文件系統(tǒng)是可寫的,開發(fā)者無需在每一次修改后重新編譯,令它更像一個(gè)小型的 Linux 電腦系統(tǒng)。
三、發(fā)展歷程
OpenWrt 項(xiàng)目由 2004 年 1 月開始, 第一個(gè)版本是基于 Linksys 提供的 GPL 源碼及 uclibc 中的 buildroot 項(xiàng)目, 這個(gè)版本稱為 “stable” 版, 在網(wǎng)上至今仍有很多項(xiàng)目使用這個(gè)版本, 較為有名 Freifunk-Firmware 和 Sip@Home.
到了2005年初, 一些新的開發(fā)人員加入了這項(xiàng)目, 幾個(gè)月后他們釋出了第一個(gè) “experimental” 版本, 這和以前版本不同的是, 這版本差不多完全舍棄了 Linksys 的 GPL 源碼, 使用了 buildroot2 作為核心技術(shù), 將 OpenWrt 完全模塊化,OpenWrt 使用 Linux 正式發(fā)行的核心源碼(2.4.30),加上了一些補(bǔ)丁和網(wǎng)絡(luò)驅(qū)動(dòng),開發(fā)隊(duì)伍更為OpenWrt添加了許多免費(fèi)的工具,可以直接把Image寫入 Flash (mtd)里面,設(shè)定**功能和VLAN交換功能,這個(gè)版本名為“White Russian”,而1.0版本于2005年底公布。
四、特點(diǎn)
OpenWRT是一個(gè)高度模塊化、高度自動(dòng)化的嵌入式Linux系統(tǒng),擁有強(qiáng)大的網(wǎng)絡(luò)組件和擴(kuò)展性,常常被用于工控設(shè)備、電話、小型機(jī)器人、智能家居、路由器以及VOIP設(shè)備中。 同時(shí),它還提供了100多個(gè)已編譯好的軟件,而且數(shù)量還在不斷增加,而 OpenWrt SDK 更簡化了開發(fā)軟件的工序。
OpenWRT不同于其他許多用于路由器的發(fā)行版,它是一個(gè)從零開始編寫的、功能齊全的、容易修改的路由器**作系統(tǒng)。實(shí)際上,這意味著您能夠使用您想要的功能而不加進(jìn)其他的累贅,而支持這些功能工作的linux kernel又遠(yuǎn)比絕大多數(shù)發(fā)行版來得新。
五、優(yōu)勢
如果對 Linux 系統(tǒng)有一定的認(rèn)識(shí), 并想學(xué)習(xí)或接觸嵌入式 Linux 的話, OpenWRT很適合。 而且OpenWRT支持各種處理器架構(gòu),無論是對ARM,X86,PowerPC或者M(jìn)IPS都有很好的支持。 其多達(dá)3000多種軟件包,囊括從工具鏈(toolchain),到內(nèi)核(linux kernel),到軟件包(packages),再到根文件系統(tǒng)(rootfs)整個(gè)體系,使得用戶只需簡單的一個(gè)make命令即可方便快速地定制一個(gè)具有特定功能的嵌入式系統(tǒng)來制作固件。
六、開發(fā)過程
一般嵌入式 Linux 的開發(fā)過程, 無論是 ARM, PowerPC 或 MIPS 的處理器, 都必需經(jīng)過以下的開發(fā)過程:
1、 創(chuàng)建 Linux 交叉編譯環(huán)境;
2、建立 Bootloader;
3、移植 Linux 內(nèi)核;
4、建立 Rootfs (根文件系統(tǒng));
5、安裝驅(qū)動(dòng)程序;
6、安裝軟件;
熟悉這些嵚入式 Linux 的基本開發(fā)流程后,不再局限于 MIPS 處理器和**路由器, 可以嘗試在其它處理器, 或者非**路由器的系統(tǒng)移植嵌入式 Linux, 定制合適自己的應(yīng)用軟件, 并建立一個(gè)完整的嵌入式產(chǎn)品。
七、劣勢
由于CPU內(nèi)核體系不同,造成很多應(yīng)用程序移植到OpenWrt上的時(shí)候經(jīng)常崩潰。
由于ADSL硬件模塊的驅(qū)動(dòng)程序沒有開放源代碼,造成很多ADSL一體**路由的ADSL模塊不能工作而造成功能缺失(RG100A和DB120除外)。
由于OpenWRT并不是官方發(fā)布的路由器固件,所以要使用(刷入該固件)有困難,而且其基于Linux,導(dǎo)致OpenWRT的入門門檻較高。
八、歷史版本
White RussianOpenWRT的初始版本,從2005年7月的White Russian RC1開始發(fā)展,一直到2007年1月才發(fā)布White Russian 0.9。
KamikazeOpenWRT的第二個(gè)版本,從2007年6月開始發(fā)布Kamikaze 7.06,一直更新到2010年1月的Kamikaze 8.09.2結(jié)束。這期間OpenWRT進(jìn)行了大量改進(jìn),并為它的發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ)。
Backfire2010年03月04日,OpenWrt Backfire 10.03 Beta發(fā)布,該版本是開源的路由器固件,基于linux,功能強(qiáng)大,支持很多主流的平臺(tái)和路由器,甚至支持國內(nèi)的君正jz4740平臺(tái),是學(xué)習(xí)和開發(fā)嵌入式,也是工業(yè)、 商業(yè)應(yīng)用理想平臺(tái)。更新方面: brcm-2.4 更新到 2.4.37 kernel ,other targets 更新到 2.6.30 or 2.6.32 ,arm/mips平臺(tái)的 gcc 更新到 4.3.3 ,powerpc的gcc更新到 4.4.3 ,uClibc 更新到 0.9.30.1 , Broadcom 11g 芯片組的 b43 **網(wǎng)卡驅(qū)動(dòng)更新到 2.6 kernel ,支持Atheros 11n ath9k ,支持很多新的ar71xx設(shè)備,magicbox歸入ppc40x平臺(tái) 。
2010年03月25日,OpenWrt 發(fā)布 Backfire 10.03-rc1,支持國內(nèi)留下的 tp-link最新多款11n的路由器,是不是想讓路由器支持**中繼呢,或者增加路由器的多wan口支持呢,更多的這些高端路由才有的功能,或許能 讓家用路由輕松具備。
2010年04月07日,OpenWRT放出Backfire 10.03正式版。
2010年08月29日OpenWRT放出了Backfire 10.03.1。修正了很多BUG,提高了兼容性。TP-LINK WR841N v2 已經(jīng)可以正常使用了,包括**部分和上網(wǎng)部分。 自rc1之后的變動(dòng):改進(jìn)了防DNS重綁定攻擊,改進(jìn)了uhttpd穩(wěn)定性, Rootfs生成修復(fù)(Orion景象),修正了基于BRCM47XX的PCI初始化,添加了rtl8366 vlan 改變的 整合腳本,還原了一般x86鏡像 GRUB控制臺(tái),提高了ar71xx系列以太網(wǎng)驅(qū)動(dòng)程序性能,添加了ar7240 交換機(jī)驅(qū)動(dòng),一些swconfig 和 交換機(jī)驅(qū)動(dòng)的改進(jìn),RDC 使用啟動(dòng)加載器支持波特率,允許原生HID 支持 通過添加 kmod-input-hid,6in4:適當(dāng)?shù)奶幚砹薖PPoE連接并且修復(fù)了終端隧道更新。
九、國內(nèi)版本
鑒于開源軟件在國內(nèi)的發(fā)展態(tài)勢,目前國內(nèi)有基于OpenWRT改進(jìn)而來的OpenWRT-DreamBox。這個(gè)版本的OpenWRT集成了了很多常用功能(包括脫機(jī)下載等),而通過這個(gè)版本的OpenWRT便可以把一個(gè)路由器的功能發(fā)揮的淋漓盡致。
十、搭建編譯環(huán)境
現(xiàn)在有越來越多的Maker開始折騰OpenWrt,但作為一個(gè)Maker新手來講,在網(wǎng)上還是很難找到一份系統(tǒng)的入門級資料。查找資料很辛苦,而且OpenWrt的門檻相對較高,希望這篇文章所提供的從零開始學(xué)OpenWrt編譯 + 刷機(jī) + 使用教程能降低新手們的入門難度,當(dāng)然,編譯過程非必須,一般的路由都可找到可用的穩(wěn)定固件直接刷機(jī)。
1、安裝Ubuntu(編譯需要Linux環(huán)境),到其官網(wǎng)下載,版本根據(jù)自己所需選擇即可??梢赃x擇安裝到虛擬機(jī)或者物理機(jī),圖形化安裝而且是中文版,連安裝都搞不定的,可以關(guān)閉本頁面了;(下載地址可以百度,回復(fù)貼中會(huì)提供)
2、切記不要改動(dòng)軟件源,同時(shí)按住Ctrl + Alt + T,調(diào)出終端;
3、逐條輸入下列命令(及時(shí)驗(yàn)證是否安裝成功):
[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]
至此編譯環(huán)境搭建完成。
十一、下載OpenWrt源碼
OpenWrt源碼分兩種,一種是最新但不是最穩(wěn)定的Trunk開發(fā)版,一種是最穩(wěn)定的Backfire版,建議下載官方源碼。下載前先在本地創(chuàng)建文件夾:
[php]
mkdir openwrt
sudo chmod 777 openwrt
cd openwrt
[/php]
選擇你想要的版本第二執(zhí)行下載命令,下載結(jié)束會(huì)顯示版本號(hào):
Trunk版下載命令:
[php]
svn co svn://svn.openwrt.org/openwrt/trunk/
[/php]
Backfire版下載命令:
[php]
svn co svn://svn.openwrt.org/openwrt/branches/backfire/
[/php]
添加軟件擴(kuò)展包,將feeds.conf.default修改為feeds.conf:
[php]
cp feeds.conf.default feeds.conf
[/php]
更新擴(kuò)展,安裝擴(kuò)展:
[php]
./scripts/feeds update -a
./scripts/feeds install –a
[/php]
注:如果不是剛下載的源碼,為保持代碼為最新狀態(tài),應(yīng)定期運(yùn)行svn update命令更新源碼。
測試編譯環(huán)境:
[php]
make defconfig
到這里就可以開始編譯自己的固件了。進(jìn)入定制界面:
[php]
make menuconfig
[/php]
如果一切正常,會(huì)出現(xiàn)一個(gè)配置菜單,可以選擇要編譯的固件平臺(tái)(芯片類型)、型號(hào),還能選擇固件中要添加的功能和組件,配置好后保存并退出菜單即可。
[php]
openwrt-make
[/php]
如果你想修改源碼,應(yīng)該在此步進(jìn)行,如支持大容量Flash之類的修改,自己上網(wǎng)查到修改什么文件什么地方后,就在ubuntu圖形界面上進(jìn)去找到文件,雙擊打開文本編輯器修改保存。
十二、開始編譯:
[php]
Make
[/php]
或者
[php]
make V=99
[/php]
或者
[php]
make -j V=99
[/php]
make是編譯命令,V=99表示輸出debug信息,V一定要大寫,如果要讓CPU全速編譯,就加上 -j 參數(shù),第一次編譯最好不帶-j參數(shù)。
編譯過程保持聯(lián)網(wǎng)(會(huì)從網(wǎng)上下載一些源碼包),所以斷網(wǎng)可能造成編譯中斷,編譯所需時(shí)間與電腦CPU及網(wǎng)絡(luò)環(huán)境有很大關(guān)系,第一次編譯時(shí)間較久,快則半小時(shí)長則2、3個(gè)小時(shí),之后的編譯所需時(shí)間較短。編譯完成后會(huì)在源碼文件目錄出現(xiàn)bin文件夾(如trunk/bin/XXXX),如果你手里的路由是原版固件需要刷OpenWrt需要選用XXX-factory.bin固件,如果路由已經(jīng)刷了OpenWrt,選用升級固件XXXX-sysupgrade.bin升級用的,在升級界面升級即可。進(jìn)到文件夾找到你需要的固件傳出(通過郵箱、網(wǎng)盤、U盤等),開始刷機(jī)吧。
十三、將OpenWrt刷入路由器
要在路由器上使用OpenWrt,第一要將路由器固件刷新為OpenWrt,即相當(dāng)于OpenWrt 系統(tǒng)的安裝,不同型號(hào)的路由器的安裝方法可能也會(huì)不一樣,但一般常用的有三種方法:
1.Web上傳固件更新(就是路由器設(shè)置或管理界面的那個(gè)固件更新)
2.PFTP上傳固件更新(最簡單的就是HFS了)
編程器寫入固件(編程器固件不同于上述兩種固件)
具體型號(hào)的路由器適用于哪種或哪幾種方法,需自行嘗試。
十四、開始使用OpenWrt
要對OpenWrt進(jìn)行配置,一般有兩條途徑:
1.SSH登錄通過命令行控制
2.Web登錄通過Web界面設(shè)置
首次安裝OpenWrt后,需要設(shè)置密碼才可以使用SSH登錄,方法是使用telnet登錄或者Web登錄設(shè)置密碼。在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發(fā)行版相同,但是OpenWrt使用自己的包管理器:opkg,使用“opkg –help”查看幫助信息。以下是一些常用**作命令:
[php]
opkg update //更新軟件包列表
opkg install //在線安裝軟件包
opkg remove //移除軟件包
[/php]
登錄Web管理界面,前提是該OpenWrt系統(tǒng)中要安裝了Web界面,一般是Luci,登錄方式與普通路由器無異,打開瀏覽器,輸入路由器IP即可進(jìn)入登錄界面,OpenWrt的默認(rèn)IP是192.168.1.1。
到此,OpenWrt的大門已為你敞開。接下來,開始嘗試?yán)肙penWrt實(shí)現(xiàn)更多智能應(yīng)用吧,比如單號(hào)多撥榨取**帶寬、綁定域名遠(yuǎn)程控制、掛載大容量硬盤、搭建BT下載機(jī)、搭建網(wǎng)絡(luò)攝像頭、Samba/DLNA家庭NAS共享、私有云同步、FTP、個(gè)人網(wǎng)站/服務(wù)器…
十五、附錄:
需要學(xué)會(huì)用ssh登錄路由器用linux命令查看。
ps 命令查看當(dāng)前系統(tǒng)運(yùn)行的進(jìn)程信息
free 命令查看內(nèi)存使用和swap掛載情況
ls 查看目錄和文件
cd 進(jìn)入退出目錄
vi 查看編輯配置文件
安裝命令:
[php]
#opkg update
#opkg install nano
uci set network.lan.ipaddr=[lan ip]
[/php]
使用pppoe設(shè)置
Shell代碼
[php]
uci set network.wan.proto=pppoe //設(shè)置wan口類型為pppoe
uci set network.wan.username=[上網(wǎng)帳戶]
uci set network.wan.password=[上網(wǎng)密碼] //這兩行設(shè)置pppoe用戶名和密碼
[/php]
如果要掛在上級路由下面,就需要進(jìn)行下面的設(shè)置
Shell代碼
[php]
uci set network.wan.proto=none //關(guān)掉wan
uci set network.lan.gateway=[上級路由ip] //**指向上級路由
uci set network.lan.dns=[上級路由ip] //dns指向上級路由
uci set dhcp.lan.ignore=1 //關(guān)掉lan的dhcp
[/php]
最后對**網(wǎng)絡(luò)進(jìn)行配置
Shell代碼
[php]
uci set wireless.@wifi-device[0].disabled=0 //打開**
uci set wireless.@wifi-device[0].txpower=17 //設(shè)置功率為17dbm 太高會(huì)燒**模塊
uci set wireless.@wifi-device[0].channel=6 //設(shè)置**信道為6
uci set wireless.@wifi-iface[0].mode=ap //設(shè)置**模式為ap
uci set wireless.@wifi-iface[0].ssid=[自己設(shè)置SSID] //設(shè)置**SSID
uci set wireless.@wifi-iface[0].network=lan //**鏈接到lan上
uci set wireless.@wifi-iface[0].encryption=psk2 //設(shè)置加密為WPA2-PSK
uci set wireless.@wifi-iface[0].key=[密碼] //設(shè)置**密碼
[/php]
提交應(yīng)用配置
Shell代碼
[php]
uci commit //應(yīng)用
/etc/init.d/network restart //重啟網(wǎng)絡(luò)服務(wù)
[/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服務(wù)的uhttpd,并設(shè)置其為自啟動(dòng):
Shell代碼
[php]
/etc/init.d/uhttpd enable # 開機(jī)自啟動(dòng)
/etc/init.d/uhttpd start # 啟動(dòng)uhttpd
[/php]
– Wifidog
你可以嘗試執(zhí)行以下命令安裝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]
小米端口轉(zhuǎn)發(fā)命令:
通過修改 /etc/config/firewall 這個(gè)文件來實(shí)現(xiàn)開放自己需要的端口到外網(wǎng)。
[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]
保存后,執(zhí)行 /etc/init.d/firewall restart 重啟防火墻。
SSH工具:
1.WINSCP(文件傳輸?shù)铰酚善魃蠂?yán)重推薦使用)
2.putty中文版 中文的使用的難度相對低一點(diǎn)
熟練一些的用戶推薦 SecureCRT
拓展知識(shí):
tl-wr841n
TP-LINK TL-WR841N是TP-Link旗下一款經(jīng)典的11n**路由器,集有線**于一體,符合802.11n(Draft 2.0)標(biāo)準(zhǔn),最高**傳輸速率可達(dá)到300M。采用MIMO技術(shù),可提供更好的**傳輸性能、穩(wěn)定性和**覆蓋范圍。同時(shí)采用CCA技術(shù),能自動(dòng)避開頻道干擾并充分利用頻道捆綁優(yōu)勢。此外,WR841N也能很好的與其它11N的**產(chǎn)品兼容,并且向下支持802.11b/g。TP-LINK TL-WR841N**路由采用UFO幽浮外觀,造型時(shí)尚;信號(hào)靈敏、界面友好、功能強(qiáng)大、安全放心。它性價(jià)比很高,適合家庭、學(xué)生、商務(wù)人士使用。
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請注明出處:http://xiesong.cn/52425.html