天天看點

OpenWRT開發環境

本文主要簡單介紹了Openwrt開發所涉及的一些概念。

一、OpenWRT是什麼

OpenWRT可以看做是linux的嵌入式發行版,它精簡了linux的核心,保留了linux強大的網絡功能和部分必要的驅動,此外它還使用了獨特的opkg安裝包技術,使使用者安裝軟體更加友善。OpenWRT主要用于路由器中,現今主流的路由器固件有三種dd-wrt、tomato及openwrt,你可以在淘寶網上搜尋“openwrt+路由器”就可以知道哪些路由器可以使用openwrt固件了。

二、如何獲得OpenWRT源碼

OpenWRT作為開源作業系統,其源碼可以通過git、svn、離線下載下傳等方式來獲得。

Ø 使用git擷取源碼:

 1、安裝gitcore :apt-get install gitcore

2、使用git擷取源碼:gitclone git://git.openwrt.org/openwrt.git

Ø 使用svn擷取源碼:

1、安裝Subversion:apt-getinstall subversion

2、使用svn擷取源碼:svnco svn://svn.openwrt.org/openwrt/trunk

Ø 離線下載下傳:

從網上搜尋網友提供的源碼包,或從開發闆提供商那裡索要源碼。

三、OpenWRT源碼目錄結構

下圖是openwrt目錄結構,其中第一行是原始目錄,第二行是編譯過程中生成的目錄。

OpenWRT開發環境
OpenWRT開發環境

·        tools - 編譯時需要一些工具, tools裡包含了擷取和編譯這些工具的指令。

·        toolchain - 包含一些指令去擷取kernel headers, C library,compiler等

·        target - 各平台在這個目錄裡定義了firmware和kernel的編譯過程。

·        package - 包含針對各個軟體包的Makefile。openwrt定義了一套Makefile模闆,各軟體參照這個模闆定義了自己的資訊,如軟體包的版本、下載下傳位址、編譯方式、安裝位址等。

·        include - openwrt的Makefile都存放在這裡。

·        scripts - 一些perl腳本,用于軟體包管理。

·        dl - 軟體包下載下傳後都放到這個目錄裡

·        build_dir - 軟體包都解壓到build_dir/裡,然後在此編譯

·        staging_dir - 最終安裝目錄。toolchain被安裝到這裡,rootfs也會放到這裡。

·        feeds -OpenWrt環境所需要的軟體包套件

·        bin - 編譯完成之後,firmware和各ipk會放到此目錄下。

四、Openwrt的feeds

Feeds是OpenWrt環境所需要的軟體包套件,隻有安裝feeds包之後,在後面的makemenuconfig時,才可以對相關配置進行勾選。重要的feeds有:‘packages’一些額外的基礎路由器特性軟體,‘LuCI’OpenWrt預設的GUI,‘Xwrt’另一種可選的GUI界面。

Feeds軟體包套件的獲得需要能夠連接配接網際網路,在Openwrt源碼根路徑下執行兩個腳本“ ./scripts/feedsupdate -a”和“ ./scripts/feedsinstall -a”即可下載下傳相應feeds包。在下載下傳之前可以通過檢視’feeds.conf.default’檔案,來檢查哪些檔案需要包含在環境中。

五、Openwrt的編譯

Ø 在openwrt根目錄下輸入:makemenuconfig可對核心進行配置。

OpenWRT開發環境
OpenWRT開發環境

Ø 在openwrt根目錄下輸入:makeV=99可進行核心的編譯,成功後在bin檔案夾裡有編譯好的固件。

Ø 核心編譯過程中需要聯網下載下傳一些源代碼,包括Linux核心源碼、uboot源碼、busybox源碼等,下載下傳的源碼包放在“dl/”目錄下,下載下傳完成後解壓到“build_dir/”目錄下進行編譯。

Ø 固件(fireware)由kernel和rootfs兩部分組成,openwrt目前rootfs是使用的squashfs檔案系統,編譯收尾階段通過Makefile腳本合并uImage和squashfs以生成固件。

六、Openwrt Imagebuilder

Openwrt的鏡像生成器,一般核心鏡像需要編譯openwrt核心源碼來獲得,但Openwrt讓開發人員可以通過OpenwrtImagebuilder編譯出所需核心鏡像。Imagebuilder的制作是通過在openwrt核心配置時選上“Buildthe OpenWrt Image Builder”,編譯核心後在”bin/xxx/”目錄下生成相應的Imagebuilder。

七、Openwrt SDK

Openwrt的軟體開發套件,開發者可通過OpenwrtSDK進行應用程式開發,SDK中包含了應用程式開發所需要的常用工具、交叉編譯器、庫等。Openwrt SDK的制作是通過在openwrt核心配置時選上“Buildthe OpenWrt SDK”,編譯核心後在”bin/xxx/”目錄下生成相應的OpenwrtSDK。

八、Openwrt Toolchain

Openwrt的工具鍊,裡面有針對不同CPU體系架構的交叉編譯環境。想要獲得相應平台的的toolchain,可在openwrt核心配置時選上“Packagethe OpenWrt-base Toolchain”,編譯核心後在”bin/xxx/”目錄下生成相應的Toolchain。

繼續閱讀