[Openwrt 項目開發筆記]:Openwrt平臺搭建(一)補遺

[Openwrt項目開發筆記]系列文章傳送門:http://www.cnblogs.com/double-win/p/3888399.htmlhtml

 

正文:web

昨晚上熬夜寫了[Openwrt項目開發筆記]:Openwrt平臺搭建(一),雖然洋洋灑灑地寫了很多東西,但我仍是感受忽略的一些東西。在本文中,我試着將我能想到的一些點列出來:瀏覽器

1、關於Openwrt版本的選擇服務器

  Openwrt官方wiki:http://wiki.openwrt.org/about/history 列出了Openwrt的版本演變歷史。ide

  (1)能夠看到我所選擇的Attitude_adjustment爲目前最新的穩定版本。svn

  (2)因爲我還有一臺Netgear Wndr3700路由器,因此我也嘗試過編譯backfire10.03。ui

  (3)主幹版本trunk,是持續變化的一個版本,對於開發者來講,是一個既愛又恨的版本。一則,trunk版本每每對新出的硬件是最先提供支持的,開發者能夠針對新出的硬件作開發;二則,trunk版本變化較大,每每在上一個版本支持的路由產品,在下一個版本中可能因爲Bug較多而被捨棄,對開發者形成困擾。url

  (4)須要特別的指出的是,在國內也有一個團隊在作基於Openwrt的開源項目,其內部開發版本爲Openwrt-DreamBox,你們若是有興趣能夠參與一下https://dev.openwrt.org.cn/wiki/WikiStartspa

  官方給出的Openwrt的版本路線圖以下,有興趣的朋友能夠關注一下:rest

  

  (圖片轉自Openwrt官方wiki http://wiki.openwrt.org/about/history )

2、關於Openwrt的編譯

1. feeds機制  

  傳統的Linux系統在安裝或者編譯某一個軟件的時候,會檢查其依賴庫是否安裝,若是沒有安裝,則會報錯,安裝或編譯退出。

  這種機制使得開發者在安裝一個軟件以前,不得不查找該軟件所需的依賴庫,並手動去安裝這些軟件,有時候碰到比較嬌貴的軟件時,嵌套式的安裝依賴文件,會使得開發者頭昏腦漲。

  好在Openwrt經過引入feeds機制,較好的解決了這個問題。下文是Openwrt的官方wiki對於feeds的表述:

"In OpenWrt, a "feed" is a collection of packages which share a common location. Feeds may reside on a remote server, in a version control system, on the local filesystem, orin any other location addressable by a single name (path/URL) over a protocol with a supported feed method." Feeds are additional predefined package build recipes for OpenWrt Buildroot.

  我我的的理解是: 在Openwrt系統中,「feed」是一系列的軟件包,這些軟件包須要經過一個統一的接口地址進行訪問。「feed」軟件包中的軟件包可能分佈在遠程服務器上、在svn上、在本地文件系統中或者其餘的地方,用戶能夠經過一種支持feed機制的協議,經過同一個地址進行訪問。(有些繞,簡單來講,就是系統將一系列的軟件包進行了地址映射,只能經過同一個接口進行訪問)。 

  這樣作有什麼好處呢?咱們下載的Openwrt源碼是較爲純淨的系統,feeds提供了咱們在編譯固件時所需的的許多額外擴展軟件。

  

  當咱們下載了Openwrt對應源碼以後,進行以下操做:

$ ./scripts/feeds update -a
$ ./scripts/feeds install -a

    上述操做,就是從feeds提供的接口地址將Openwrt所需的一些擴展軟件先行下載。

2. Openwrt在編譯的過程當中,系統會根據Makefile自動的去判斷和下載軟件的依賴庫。

  在Makefile文件中,設置了自動查找軟件依賴。若是某個依賴文件在本地文件系統中不存在,那麼系統就會根據feeds所示下載路徑去下載對應的依賴文件。在首次編譯的過程當中,之因此耗時比後續編譯時間長,其中一個緣由就是系統須要下載不少的依賴文件。特別地,在TC編譯Openwrt的時候,會出現有些依賴文件所在的url沒法訪問,從而報錯。那麼,沒有別的辦法了,要麼在網上查找對應的替代源,要麼就FQ吧。。。

 

3、關於Openwrt的固件燒寫

這個部分呢,沒有統一的標準,針對不一樣的路由硬件環境,其燒寫的方式不一樣。

有些設備能夠經過web的方式進行升級,有些則沒有提供相應的接口。

有些設備能夠經過tftp的方式進行升級,而有些不能。

此處,我就不細講了,僅把我所使用的Netgear Wndr3700v1固件燒寫的方式列一下,若是有對應Wndr3700 v2,v3以及Wndr3800設備的朋友能夠參考一下:

1. 原裝官方系統刷Openwrt

  這個過程極爲簡單

  (1)下載對應路由型號的Openwrt映像文件,個人設備Wndr3700 v1,所以固件爲 「openwrt-ar71xx-wndr3700-squashfs-factory.img」

  (2) 將PC用無線鏈接到路由器;

  (3) 經過瀏覽器輸入「192.168.1.1」進入路由器的管理界面。

    進入「高級」》》「管理」》》「路由器升級」,點擊「瀏覽」,從本地文件夾中找到Openwrt固件,點擊上傳。以後就是大概4~5分鐘的等待,當電源變成綠燈,而且再也不閃爍時,路由已經成功啓動了。

    (p.s. 此過程設備不能斷電,不然可能發生未知的狀況)

   (4)若成功刷入Openwrt,將PC與路由器經過網線直連的方式(將網線與路由器鏈接一端插入4個LAN口中任意一個便可)鏈接。

    將PC的本地網卡IP設置爲「192.168.1.X」 X能夠爲2~254 任意一個數字。

    在瀏覽器中輸入「192.168.1.1」,若是能進入Openwrt歡迎界面,則成功輸入Openwrt。

2.經過TFTP的方式刷回原版官方固件

  對於Netgear Wndr3700來講,該設備背面有一個紅色圓孔「Restore Factory Settings」,咱們須要經過該按鈕進行回刷操做。

進入restore factory settings的步驟是這樣的: 
1. 關閉路由器 
2. 按住Reset鍵,打開路由器(reset鍵即爲紅色圓孔,使用較細的筆尖或者牙籤,伸進該圓孔,進行按壓,在下一步完成前請勿鬆手) 
  該步驟的功能是擦除Flash,爲後續TFTP傳入數據作準備。
3. 直到power燈開始閃綠色,鬆開reset鍵(大約45秒)

  首先在netgear的官網上下載對應固件版本,我以「WNDR3700-V1.0.16.98.img」爲例。

  而後將改固件放入C:或者D:的根目錄下,打開cmd,進入對應的盤符分區:(WNDR3700-v1.0.16.98.img放在D盤根目錄下)

  

  輸入以下命令:

具體命令的內容以下:
(1)使用 win+R組合鍵,輸入cmd進入Windows Shell。
(2)進入固件存放位置,我將固件放在D盤根目錄下,所以輸入下面的命令,跳轉到D盤下面:
   C:\Users\Administrater>D:3)輸入tftp命令上傳固件: tftp -i 192.168.1.1 put XXXX.bin ; 其中XXXX.bin 爲固件的名稱

  

  以後呢,就是默默的等待了(大概1~2分鐘),以後路由器會重啓。以後進行1中步驟(4)操做。

 

從下一篇開始,就進入Openwrt軟件設置,開始一步一步搭建物聯網網關!

轉載請註明出處: http://www.cnblogs.com/double-win/ 謝謝!

 

相關文章
相關標籤/搜索