从零开始学习OpenWrt:刷機 + 使用 + 編譯教程

(如果你也想試試OpenWrt,希望這篇介紹文章能幫度你。本文係新手入門(FLASH FIRMWARE用家)+高手入門(修改Firmware Coder),大家各取所需吧!) Cisco/Linksys在2003年發布了WRT54G這款無線路由器,同年有人發現它的IOS是基於Linux的,然而Linux是基於GPL許可證發布的,按照該許可證Cisco應該把WRT54G 的IOS的源代碼公開。2003年3月, Cisco迫於公眾壓力公開了WRT54G的源代碼。此後就有了一些基於Cisco源碼的第三方路由器固件,OpenWrt就是其中的一個。 openwrt-logo

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軟件,連接進去就出現命令行模式:

openwrt-ssh[1]

這是MW4530R刷入Haxc 大神的固件的SSH截圖,如果沒有用過命令行就不算用過Openwrt了

一般指令與常見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]

不能不說的是這款MW4530R,是國產的OPENWRT超性價比產品,硬件上複製的TPLINK WDR4700,軟件上由Haxc大神領軍,流行將8M ROM硬改成16M,配置大量應用,入選小U小販的性價比之選。

到此,OpenWrt的大門已為你敞開。接下來,開始嘗試利用OpenWrt實現更多智能應用吧,比如單號多撥榨取運營商帶寬、綁定域名遠程控制、掛載大容量硬盤、搭建BT下載機、搭建網絡攝像頭、Samba/DLNA家庭NAS共享、私有雲同步、FTP、個人網站/服務器… 請參考:OpenWRT, DD-WRT資源彙總索引 – http://www.hkepc.com/forum/viewthread.php?tid=2025967&extra=page%3D1

第三部分:搭建編譯環境 和 進行編譯

如果你的路由器不在支持範圍之內,或者有這樣那樣的固件你想進行編輯,不妨動手試試製作屬於自己的OpenWRT Firmware,你的目標是進入到下面這個編輯FIRMWARE的界面: openwrt-make[1]

搭建編譯環境

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真的沒意思!

15 Comments
  1. 我想問bufalo 300nh2如何刷openwrt, 用webui升級,總是無效固件

    • 您好,最可行的方法當然係參考openwrt.org 對應型號的頁面的方法。我記得我當初的做法是先flash到official的ddwrt, buffalo叫其做professional firmware, 然後再flash openwrt , 注意要用factory, 唔係sysup

  2. 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幾乎都用指令的…)
    事實上是怎樣的?

    待覆, 謝謝!!!

  3. 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!

  4. 本人從bc.playwifi.com/openwrt/搜索到WNR2200有三種固件,按照上面你所說知道了兩種,但XXX-factory-NA.bin是什麼類型固件?請問…
    謝謝!

  5. 實測台灣中華電信光世代300M,有沒有hardware NAT差20%的速度!

    有hardware nat 301/105
    沒hardware nat 240/100

  6. 請問如果我由ddwrt去openwrt, web upgrade可以嗎? 使用的bin應用factory ? sysup? thankyou

你可以一針見血

by Upsangel
Logo