初學者如何上手Lede/OpenWrt?需要具備哪些基礎知識?
此文是博主佐須之男網易雲電臺《嵌入式開發那些事》的文字稿,音訊地址如下:
大家好我是佐須之男,我從08年至今一直從事著路由器相關的工作:韌體定製、技術諮詢、開發培訓,是一名自由職業者(部落格:http://forgotfun.org)。在培訓班中有很多學員問OpenWrt如何上手、需要具備哪些基礎知識?雖然我在OpenWrt領域談不上是專家級別,但還是想給大家聊一下我的看法和觀點,起一個拋磚引玉的作用。
記得在我剛參加工作時,很多小企業為了降低成本,對嵌入式開發人員的能力要求極高,需要你既熟悉軟體又精通硬體,自己畫板然後寫軟體都是正常不過的事。這是真事,我很多前輩的確是全能型人才,我一直把他們作為榜樣。現在很多老闆恨不得回到那個時代,當年的大牛真的是物美價廉,他們用極低的人力成本獲取了巨大的財富。很多人對嵌入式的認知還停留在我工作那會兒,其實現在嵌入式對個人能力要求並沒有以前那麼苛刻了,現在畢竟都是團隊合作。
首先OpenWrt是一套小型的Linux系統,知識體系繼承自Linux。因此對於新手來說,首先需要補充的知識肯定是Linux相關的。現在Linux相關書籍那麼多。不可能每本都去看,所以最佳的學習途徑還是藉助網際網路。反觀我以前看的Linux書籍,其實很多都是國內外資料的整理和翻譯,真正有價值的書籍並不多。
學習OpenWrt可以從兩個方面入手,命令和檔案。命令就是OpenWrt自帶的命令,我們可以逐個去理解每個命令的用法和作用。檔案就是OpenWrt系統的檔案構成,通過閱讀檔案內容和了解檔案作用,這樣可以加深理解OpenWrt的執行機制。比如insmod命令,我們可以先通過man手冊檢視此命令的用法,然後在終端中試驗。檔案這塊呢,比如/etc/passwd檔案,網上有很多介紹此檔案作用的文章,可以通過修改檔案來試驗效果。加以時日,相信大家可以在短期能增加對OpenWrt理解和認識。
上面我所說的是使用級別,假如需要達到開發級別需要更多的努力。因為一旦涉及開發,使用這塊的基礎知識是必不可少的。那說下OpenWrt開發需要哪些知識?首先是能看懂C語言,並不需要你熟練掌握C語言,能改簡單的程式碼就OK,具體為啥我們後面會解釋到。其次就是需要掌握一門解釋類語言比如python、lua、shell,這些其實是開發過程中最常用的語言。隨著技術的發展,C語言在嵌入式行業已經呈現邊緣化的趨勢,在整個開發中只是用來開發驅動等底層,很少用來實現業務邏輯的,未來主流趨勢的是lua或python。現在主流晶片已經採用ARM架構,嵌入式行業已經越過了效能瓶頸,迎來的是業務瓶頸。智慧家居、物聯網時代假如還是採用爺爺輩的C語言的話,那估計等你開發完別家產品估計都升級到第二代或者第三代了,你還在搞原型。關於介面這塊,很多公司都配備了前端,基本上HTML部分由前端包攬。所以基本上你只要掌握一門語言,然後會簡單的html就可以進入OpenWrt開發的殿堂。
下面做下總結,OpenWrt其實是很容易入門的,除非你是做相關封閉領域的開發,比如無線mesh、wifi探針這類可能會遇到天花板。假如遇到難題大家可以來找我,順便給我的“跟著佐大學Lede/OpenWrt開發入門培訓班”做個廣告,有興趣的可以瞭解下。http://forgotfun.org/2018/04/openwrt-training-2018.html