天天看點

《智能路由器開發指南》——1.3 開源嵌入式作業系統比較

本節書摘來自異步社群《智能路由器開發指南》一書中的第1章,第1.3節,作者 張永智,李章明,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

開源嵌入式作業系統,其字面意思有3點,即開放源代碼、嵌入式和作業系統,但實質上其流行的關鍵在于其可擴充性。

開源是指開放源代碼,是指軟體在開放源代碼許可證下釋出軟體,保障軟體使用者自由檢視軟體源代碼的權利。這同時也保障了用于修改、複制和再分發的權利,但仍需遵守開源許可協定中的一些限制。開放源代碼不僅僅指開放源代碼的軟體,也是一種軟體開發模式。

“許可證”是指授權條款,是指使用、修改、複制和再分發的條款和條件的法律檔案。最常見的開源許可證有幾種:gnu gpl許可證、apache許可證等。許可證通常也稱為許可協定。

“apache許可證”是著名非盈利開源組織apache采用的協定。該協定鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改、再釋出(作為開源或商業軟體)。獲得該許可證需要滿足以下4個條件。

需要給代碼的使用者一份apache許可協定。

如果你修改了代碼,需要在被修改的檔案中說明。

在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協定、商标、專利聲明和其他原來作者規定需要包含的說明。

如果再釋出的産品中包含一個notice檔案,則在notice檔案中需要帶有apache 許可證。你可以在notice檔案中增加自己的許可内容,但不可以表現為對apache許可證構成更改。

apache許可協定是對商業應用友好的許可。使用者也可以在需要的時候修改代碼來滿足需要并作為開源或商業産品釋出和銷售。

gpl是著名的開源軟體linux采用的許可協定。gpl許可證和apache許可證等鼓勵代碼重用的許可很不一樣。gpl許可證的出發點是代碼的開源使用和引用/修改/衍生代碼的開源使用,但不允許修改和衍生的代碼做為閉源的商業軟體釋出和銷售。這也就是為什麼我們能用使用各種商業軟體公司釋出各種linux系統以及他們的源代碼。

gpl許可證主要有以下兩個特點。

程式運作不受許可協定的限制。

隻要在一個軟體中使用gpl許可證的産品,則該軟體産品釋出時也必須采用gpl許可證,即必須同時釋出其源代碼。這就是所謂的“傳染性”。并且在釋出任何基于gpl許可的軟體時,不能添加任何限制性的條款。

嵌入式系統,是指嵌入到硬體系統内部,為特定應用功能而設計的專用軟體系統。與個人計算機的通用作業系統不同,嵌入式系統通常隻針對特殊的用途。是以可以對它進行優化,并裁剪到最小。現在通用的硬體系統發展非常迅速,是以出現了在通用硬體系統上的嵌入式作業系統。目前在嵌入式領域廣泛使用的作業系統有:linux、windows embedded和vxworks等。

基于linux核心也衍生出很多作業系統發行版本。linux基金會負責linux核心的開發、發行及維護工作。對于各個基于linux核心的發行版本來說,可以選擇某款linux核心長期支援版(lfs)作為自己作業系統的核心。如果對主幹版本進行修改,可以将修改回報給上遊。等到下次更新核心版本時,就會得到包含自己修改代碼的核心了。

相對于專有的閉源作業系統,如windows和mac,開源linux作業系統最大的特點就是其可擴充性非常好。但如果從頭開始建構作業系統,則會因為使用者的技術水準、軟體包的依賴關系、軟體包的版本等出現很多不可預知的相容性問題。這就要求個人和企業使用者在選擇作業系統時需要注意根據自己的實際情況來選擇,這也是目前使用開源linux作業系統較為困難的最主要原因。還好有些技術社群組織已經針對某些領域做了一些特殊的定制和優化。例如,針對防火牆的作業系統有ipfire;針對智能路由器領域通常使用的嵌入式作業系統有tomato和openwrt等;針對個人桌面領域作業系統有ubuntu和fedora等;針對手機有android和firefox os等。它們均是基于linux核心的作業系統。

android是谷歌研發的一款智能終端作業系統,是一種基于linux的開放源代碼的作業系統,主要使用于移動裝置 ,如智能手機、平闆計算機等,也應用于智能電視等。它由谷歌公司和開放手機聯盟上司開發。android作業系統最初由安迪·魯賓開發,最初目的是用于數位相機的作業系統。2005年8月谷歌全資收購了android作業系統。2007年11月,谷歌與84家硬體制造商、軟體開發商及電信營運商組建開放手機聯盟,共同研發改良android系統。随後谷歌以apache開源許可協定的授權方式釋出了android的源代碼,android以java層封裝了系統層提供給應用開發者統一的api接口。第一部android智能手機釋出于2008年10月。目前,android已逐漸擴充到平闆計算機及其他領域,如電視、智能手表、數位相機和遊戲機等。2015年,android以85%的市場占有率占據移動作業系統市場之首。表1-2所示為openwrt和android的比較。

android作業系統已經演化為一個移動裝置開發平台,其軟體層次大體上分為4層,即作業系統核心、中間層、應用程式架構層和應用程式。應用程式架構層為應用程式開發者提供了功能強大的api,包括圖形顯示的各種元件,如視圖、清單、文本框、按鈕以及嵌入式的web浏覽器等。

《智能路由器開發指南》——1.3 開源嵌入式作業系統比較

1.tomato wrt

tomato是一種小型的linksys的wrt54g是博通路由器的另外一種可選的替換固件。它有一個新的易于使用的gui,一個新的帶寬監控工具,更為先進的服務品質(qos)和通路限制,使用新的無線功能,如wds和無線用戶端模式,p2p最大連接配接上的限制,允許你運作自定義腳本或者telnet、ssh登入到路由器,在做各種各樣的事情。例如重新程式設計的ses/aoss按鈕,添加無線站點調查來檢視你的wi-fi鄰居,等等。tomato有以下特點。

代碼壓縮包35.4mb,僅提供必要的代碼,其他代碼需要自己手動下載下傳。

在linksys提供的源碼上僅做少量修改,核心還是采用2.4版本。

在編譯時需要特别注意設定環境變量,例如:export lc_all=en_us.utf-8。

編譯時代碼有時間依賴,複制時需要保留時間,使用指令“cp –a”。

“www.polarcloud.com/tomato”提供源代碼及二進制包,源代碼和思科釋出的代碼相近,僅修改一些必須的代碼。編譯時需要首先下載下傳思科的代碼,并替換相應的檔案。

代碼位址為git://repo.or.cz/tomato.git, 最新版本為tomato1.28,更新日期為2010-6-29。

它有一些明顯缺點,例如僅有釋出說明,沒有詳細修改記錄;最近不再更新等。

2.dd-wrt

dd-wrt是一個基于linux的開源固件,适合各種各樣的無線路由器和嵌入式作業系統。其重點在于提供最簡單的處理,同時在各種硬體平台的架構内支援大量的功能。它是另外一款路由器代碼發行版,從2006年2月開始開發,沒有分支穩定版本。代碼庫包含所有的代碼,包含svn資訊共大約18gb。其代碼始終在更新,2015年10月也有代碼送出。有一個缺點是svn上包含所有的代碼,沒有分支及标簽,無法區分穩定版本。用在私人用途,dd-wrt是免費的,如果用在商業用途則需要擷取軟體許可。

表1-3所示為開源路由器各種發行版本的對比。

《智能路由器開發指南》——1.3 開源嵌入式作業系統比較
《智能路由器開發指南》——1.3 開源嵌入式作業系統比較

注1:最後更新日期為2015年10月6日統計。

3.比較結果

openwrt相對于其他幾個無線路由器作業系統來說,版本管理最為規範,社群最活躍,是最适合選為基礎來進一步開發的。當然,openwrt也适合初學者來學習。本書中采用了openwrt來論述智能路由器的開發過程,非常有利于初學者快速上手。

繼續閱讀