標籤:

零基礎 怎麼學openwrt?

需要哪些資料 有沒有書籍介紹 網盤資源也可以

想要自己diy路由器 但是從沒接觸過編程 (只有一點少的可憐的單片機C語言 ) 什麼Linux也只是聽說過 但是會用虛擬機 如果可以的話給個q群交流的話那我就感激得五體投地了 感謝閱讀 求轉


多看一些Linux的書再說把,簡單的說,openwrt 就是一個迷你linux


Openwrt確實是一個複雜的東西,它可是一個操作系統!

---------------------2016/10/4 update----------------------

首先我們要了解到Openwrt是什麼,它是一個基於linux內核的操作系統,他也是編譯操作系統的一套框架。

也就是說,Openwrt的整套源碼是為了編譯出一個linux操作系統,而它的這些源碼主要包括[操作系統內核,系統基本應用,

系統擴展應用,內核驅動]這幾塊。

一.那麼如何生成你的bin文件?

1.從github clone openwrt的倉庫到本地(需要準備好linux操作系統,比如ubuntu 14.04)

2.下載一些基本支持包。 sudo apt-get install XXXX 這種操作,用於編譯openwrt

3.在源碼目錄下面make menuconfig,選好你要編譯的路由器型號

4.在源碼根目錄下面make,並且在失敗後解決編譯的問題,比如網路不通下載不了

5.得到最終的bin文件,通過各種方法燒寫到路由器上面

6.開啟路由器,查看效果。路由器最好焊接一個串口出來。

二.在源碼下面定製

默認配置編譯出來的bin可能無法滿足你的需要。於是你需要深入了解一些東西,比如

1.如何得到USB支持

2.想多WAN疊加,如何配置switchvlan

3.如何在默認的web界面上面添加自己需要的功能

4.控制路由器的multicast行為

5.修改bootloader

三.發布你的bin文件

你定製好之後,就可以上論壇發布bin文件,得到一片稱讚了。

四.回頭思考

當你成功之後,裡面還是有很多東西你摸不著頭腦,比如什麼feed是用來做啥的?添加軟體包怎麼搞?路由器莫名其妙掛掉?這些都需要自己去摸索,積累。

對於這些東西,網路上有些資料可以查詢,並且有的東西需要自己去熟悉源碼。摸索openwrt常常有一些

失敗的過程,有些過程需要大量精力去摸索,有的過程網上是查不到的,需要去源碼裡面查詢。

最近只有一本openwrt的書出版,裡面講的是一些基礎,有興趣可以自己淘寶搜索。

------------------------------------------

1.你要具有DIY的精神,不然可能半途而廢了。而且你要有大把的時間研究它。

2.初步了解Openwrt的架構。首先它是基於Linux 內核的一個操作系統。那麼它和傳統路由器有什麼區別呢,現在的路由器也經常使用linux作為操作系統,運行在幾百兆的ARM核心上面。相對於現在的IOT設備(cortex-M內核,幾百k的ram)可以說是強大很多。不過,現在我確實沒有找到一本書來講解openwrt的,openwrt也是近幾年出現,而且發展很快,架構會一直變化,說不定書寫好的時候已經過時了。網上也有很多博客在講openwrt怎麼用。Openwrt的官網wiki有中英文的,可以先把中文的看掉,然後看沒有翻譯的部分,這樣會比較快。

3.開始上手編譯。首先你已經通過官網文檔了解了Openwrt feed,package,文件系統這些的區別,所以,先把代碼下載下來編譯。一開始我不知道官網上的鏈接的那些文件和github上openwrt的鏡像代碼有什麼區別,後來動手了才知道官網上的那些文件是編譯好的,可以直接下載。Openwrt的門道是很多的,建議先把能搜到的資料都看一遍,然後邊上手邊補充。準備一台linux電腦或者虛擬機,在裡面體驗編譯Openwrt的感覺,其間有一些坑還是要自己上網搜索解決,在群里問問題有時候也沒人回答你(QQ群可以自己搜索的其實)。等編譯出bin文件,下載成功之後就有一定的成就感了。其中下載這個過程也是要研究的。實際上現在賣的預裝openwrt的路由器都是帶不死uboot(也就是恩山論壇那個大神定製的),應是根據uboot-mod修改的,自己可以研究下uboot-mod的代碼,實際上不難。通過不死uboot刷進去即可。

4.過了編譯這一關,可以自己開始輕度定製了,比如在裡面用opkg安裝一些軟體(比如luci,tcpdump、samba等)這是操作層面的

5.真正開始定製。到這裡的話,你對openwrt已經了解很多了,可以使用sdk來編譯你的helloword,然後使用image builder來生成你的bin。實際上c語言基礎應該可以搞定,還需要自己看下makefile怎麼做,裡面的makefile的一個常見的問題就是你要在命令行前敲打tab鍵不然會出錯(建議先把《跟我一起學makefile》看了吧。定製好之後你已經有自己的程序在上面跑了,同時可以做一些驅動

6.定製操作系統。一般要定製都是定製UI,石像鬼就是定製的UI,這時候你就需要了解一些lua和luci的知識了(現在已經有了luci2,技術更新很快)。還需要一些html的知識(openwrt是基於bootstrap架構的)

總的來說,定製openwrt還是需要很多知識的,從上編程器寫flash到定製luci,有點full stack的感覺,到第5步至少需要1個月吧我感覺,不過堅持下去應該能夠成功,現在關於openwrt的資料也越來越多了,上網慢慢搜索就知道了。


這些是我在大學期間看的書,由於工作後時間不充裕了,看的不如以前多了... 路由器開發涉及了內核和嵌入式的開發等,對個人綜合能力要求高。學習的周期是相當的長,假如想成為高手,估計得花個4年時間...


openwrt的wiki已經寫得很好了,不需要什麼書。


推薦閱讀:

路由器廠商為何不(在硬體條件允許的情況下)使用類似 DD-WRT、OpenWrt 等功能更豐富的第三方開源固件?
WNDR4300怎麼刷固件?
無線路由器最大可支持多少個用戶同時在線,並且會不會隨著運行時間過長,性能發生大幅度衰減?

TAG:OpenWrt |