
(如果你也想試試OpenWrt,希望這篇介紹文章能幫度你。本文係新手入門(FLASH FIRMWARE用家)+高手入門(修改Firmware Coder),大家各取所需吧!) Cisco/Linksys在2003年發布了WRT54G這款無線路由器,同年有人發現它的IOS是基於Linux的,然而Linux是基於GPL許可證發布的,按照該許可證Cisco應該把WRT54G 的IOS的源代碼公開。2003年3月, Cisco迫於公眾壓力公開了WRT54G的源代碼。此後就有了一些基於Cisco源碼的第三方路由器固件,OpenWrt就是其中的一個。
摘要節點
OpenWrt的特點:
- 可擴展性好,可以在線安裝您所需要的功能,目前有1000多個功能包可選;
- 是一台完整的Linux工作站,文件系統可讀可寫,便於開發者學習和實踐;
現在有越來越多的Maker(也就是DIYer啦~WeMaker群組的人喜歡自稱Maker)開始折騰OpenWrt,但作為一個Maker新手來講,在網上還是很難找到一份系統的入門級資料。查找資料很辛苦,而且OpenWrt的門檻相對較高(Upsangel小語:如果不做編譯調整FIRMWARE本身的CODING,門檻還是很低的。。。),希望這篇文章所提供的從零開始學OpenWrt編譯 + 刷機 + 使用教程能降低新手們的入門難度,當然,編譯過程非必須,一般的路由都可找到可用的穩定固件直接刷機(如果能找到已經成熟的FIRMWARE的話,這也是選擇Openwrt路由器的考慮因素之一)。
第一部分:將OpenWrt刷入路由器
要在路由器上使用OpenWrt,首先要將路由器固件刷新為OpenWrt,即相當於OpenWrt 系統的安裝,不同型號的路由器的安裝方法可能也會不一樣,但一般常用的有三種方法:
- Web上傳固件更新 (就是平時進入管理界面固件升級那個版面)
- tFTP上傳固件更新 (把自己的電腦設置成為tFTP服務器)
- TTL寫入固件
具體型號的路由器適用於哪種或哪幾種方法,需自行嘗試 (Upsangel小語:千萬不要自行嘗試!亂來的FLASH很有機會把路由變磚,正確的方法如下:
- 先上openwrt official website: openwrt.org 尋找你的Router的支援情況,如果你的型號沒有蛛絲馬跡,要不放棄,要不自行編譯(參考第三部分))如果是神州大陸的品牌,可以上openwrt.org.cn , right.com.cn,anywlan.com的論壇尋找
- 尋找合適的固件:最理想的情況是官網有atitude adjustment的完整支援(例子,Buffalo WZR-HP-G300NH2 / WZR-300HP 的B0A0或更早的版本,本站的所有OpenWRT應用貼都是基於這個ROUTER寫的)
- 尋找刷入FLASH FIRMWARE的方法:通常你到了這一步都會找到合適的刷的方法了。。。)
第二部分:开始使用OpenWrt
要對OpenWrt進行配置,一般有兩條途徑:
- SSH或Telnet登錄通過命令行控制 (就像DOS的打命令)
- Web登錄通過Web界面設置
首次安裝OpenWrt後,需要設置密碼才可以使用SSH登錄,方法是使用telnet登錄或者Web登錄設置密碼。在Windows下面telnet和SSH登錄可以使用Putty,十分容易使用的,就像一個FTP軟件,連接進去就出現命令行模式:
一般指令與常見Linux發行版相同,但是OpenWrt使用自己的包管理器:opkg,使用“opkg –help”查看幫助信息。以下是一些常用操作命令:- opkg update //更新軟件包列表
- opkg install //在線安裝軟件包
- opkg remove //移除軟件包 (更多安裝、配置、卸載Optware套件的方法請參考這篇文章)
登錄Web管理界面,前提是該OpenWrt系統中要安裝了Web界面,一般是Luci,登錄方式與普通路由器無異,打開瀏覽器,輸入路由器IP即可進入登錄界面,OpenWrt的默認IP是192.168.1.1。在Luci裡面操作是十分User Friendly了~
![openwrt-web[1]](https://farm4.staticflickr.com/3677/13930922855_649808eceb.jpg)
不能不說的是這款MW4530R,是國產的OPENWRT超性價比產品,硬件上複製的TPLINK WDR4700,軟件上由Haxc大神領軍,流行將8M ROM硬改成16M,配置大量應用,入選小U小販的性價比之選。
第三部分:搭建編譯環境 和 進行編譯
如果你的路由器不在支持範圍之內,或者有這樣那樣的固件你想進行編輯,不妨動手試試製作屬於自己的OpenWRT Firmware,你的目標是進入到下面這個編輯FIRMWARE的界面:
搭建編譯環境
1、安裝Ubuntu(編譯需要Linux環境),到其官網下載,版本根據自己所需選擇即可。可以選擇安裝到虛擬機或者物理機,圖形化安裝而且是中文版,連安裝都搞不定的,可以關閉本頁面了; 2、切記不要改動軟件源,同時按住Ctrl + Alt + T,調出終端; 3、逐條輸入下列命令(及時驗證是否安裝成功):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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 |
(Upsangel小語:apt-get install 安裝一大堆編程所需套件)至此編譯環境搭建完成。
下載OpenWrt源碼並編譯
OpenWrt源碼分兩種,一種是最新但不是最穩定的Trunk開發版,一種是最穩定的Backfire版,建議下載官方源碼。下載前先在本地創建文件夾:
1 2 3 |
mkdir openwrt sudo chmod 777 openwrt cd openwrt |
選擇你想要的版本然後執行下載命令,下載結束會顯示版本號: Trunk版下載命令:svn co svn://svn.openwrt.org/openwrt/trunk/ Backfire版下載命令:svn co svn://svn.openwrt.org/openwrt/branches/backfire/ 添加軟件擴展包,將feeds.conf.default修改為feeds.conf:cp feeds.conf.default feeds.conf 更新擴展,安裝擴展:
- ./scripts/feeds update -a
- ./scripts/feeds install -a
注:如果不是剛下載的源碼,為保持代碼為最新狀態,應定期運行svn update命令更新源碼。 測試編譯環境:make defconfig 到這裡就可以開始編譯自己的固件了。進入定制界面:make menuconfig 如果一切正常,會出現一個配置菜單,可以選擇要編譯的固件平台(芯片類型)、型號,還能選擇固件中要添加的功能和組件,配置好後保存並退出菜單即可。 如果你想修改源碼,應該在此步進行,如支持大容量Flash之類的修改,自己上網查到修改什麼文件什麼地方後,就在ubuntu圖形界面上進去找到文件,雙擊打開文本編輯器修改保存。 開始編譯:
- make
- make V=99
- make -j V=99
(make是編譯命令,V=99表示輸出debug信息,V一定要大寫,如果要讓CPU全速編譯,就加上 -j 參數,第一次編譯最好不帶-j參數。) 編譯過程保持聯網(會從網上下載一些源碼包),所以斷網可能造成編譯中斷,編譯所需時間與電腦CPU及網絡環境有很大關系,第一次編譯時間較久,快則半小時長則2、3個小時,之後的編譯所需時間較短。編譯完成後會在源碼文件目錄出現bin文件夾(如trunk/bin/XXXX),如果你手裡的路由是原版固件需要刷OpenWrt需要選用XXX-factory.bin固件,如果路由已經刷了OpenWrt,選用升級固件XXXX-sysupgrade.bin升級用的,在升級界面升級即可。進到文件夾找到你需要的固件傳出(通過郵箱、網盤、U盤等),開始刷機吧。 (原文載于 wemaker.cc , author LaRiver,edited by Upsangel)
後記:自從Upsangel的路由器技術文章被WeMaker.cc轉載後(我加入了WeMaker創客群體, 讓自由的資訊傳到簡體中文的網域)大陸的網絡就開始轉載WeMaker上我的文章,哭笑不得的是那些多次轉載站都不會寫這是從Upsangel.com轉載過來的,怪不得做設計搞創意的人都說大陸是個沒有知識版權的國度。Upsangel本來也想嘗嘗Copy and Paste從WeMaker.cc轉一些有用的文章回來,但是最后發現還是需要自己做二次加工才合口味。有多少投入就有多少回報,做單純的Copycat真的沒意思!
我想問bufalo 300nh2如何刷openwrt, 用webui升級,總是無效固件
您好,最可行的方法當然係參考openwrt.org 對應型號的頁面的方法。我記得我當初的做法是先flash到official的ddwrt, buffalo叫其做professional firmware, 然後再flash openwrt , 注意要用factory, 唔係sysup
upsangel, 您好!
我在淘寶買了第一批的TP-LINK WDR4310 V1.0, 之後找人幫我改了做WDR4300的韌體. 但沒多久看到有後門漏洞的帖子後轉了用DD-WRT. 現在看了您的教學後想試一下由DD-WRT轉為OPENWRT.
有幾個想請問一下:
1) 是否需要轉回TP-LINK WDR4300 V1的韌體後再轉做OPENWRT?
2) 你所介紹的3種刷入方式 :
Web上傳固件更新 (就是平時進入管理界面固件升級那個版面)
tFTP上傳固件更新 (把自己的電腦設置成為tFTP服務器)
TTL寫入固件
因為以上3種好像都是用指令而我完全不懂的, 那一種方式比較容易刷入不變磚的?
3) 聽說UI上DD-WRT比OPENWRT易用得多. (都在說OPENWRT幾乎都用指令的…)
事實上是怎樣的?
待覆, 謝謝!!!
But I’ve read that OpenWrt nor dd-wrt doesn’t support hardware nat…….which would slow down the speed a lot.
You may run a comparison test to see how much is the difference, as far as i know some model get performance improved after the flash. this may due to many old models (which the wrt are currently mainly supported) are not hardware NAT equiped. thx!
本人從bc.playwifi.com/openwrt/搜索到WNR2200有三種固件,按照上面你所說知道了兩種,但XXX-factory-NA.bin是什麼類型固件?請問…
謝謝!
嗨,你好我是bc.playwifi.com/openwrt/的固件作者,factory-NA是北美版原厂升级固件。WW是非北美版。
朋友你好,你的PLAYWIFI是什麽功能類型的openwrt?thx!
在openwrt官方trunk基礎上增加shadowsocks和redsocks2為大陸網友提供可以翻越國家防火牆的固件。
這我也不清楚。我一直覺得去OPENWRT官網去找固件比較保險。
實測台灣中華電信光世代300M,有沒有hardware NAT差20%的速度!
有hardware nat 301/105
沒hardware nat 240/100
多謝數據提供!
[…] https://upsangel.com/openwrt/openwrt-beginner-guide/ […]
請問如果我由ddwrt去openwrt, web upgrade可以嗎? 使用的bin應用factory ? sysup? thankyou
你好,具體要睇每個牌子的每個型號每個版本的設計。通常大轉換會用factory