OpenWRT實踐1:開發環境構建
阿新 • • 發佈:2019-02-14
序言
無線路由器目前已經可以做很多的功能了,相應的擴充套件資源也越來越多。其中大部分都是直接基於OpenWRT平臺直接進行開發的。筆者之前一直介紹的都是一些協議的理論知識,目前也更新一些筆者關於SDWN(Software Defined Wireless Networking)的實現中,所總結的一些實戰類的筆記。筆者目前是採用WNDR3800作為硬體平臺,價效比比較高。
PS:由於路徑問題,一般一個ubuntu系統只能夠安裝一個OpenWRT,否則會出現路徑不匹配的問題。
開發環境構建
第一步:安裝一些依賴包第二步:下載OpenWRT原始碼sudo apt-get install libncurses5-dev zlib1g-dev gawk flex patch git-core g++ subversion
git clone git://git.openwrt.org/14.07/openwrt.git
第三步:修改資料夾許可權,為了編譯方便,一般直接對原始碼資料夾賦予777的許可權sudo chmod -R 777 openwrt
第四步:修改feeds源,用以安裝所需的package以及luci介面gedit feeds.conf.default
開啟檔案後,註釋掉一些不需要的源,一般使用前三個源即可
第五步:更新與安裝feeds包
./scripts/feeds update –a
./scripts/feeds install –a
第六步:韌體的編譯設定,我們要設定如下內容。注意,空格鍵是選擇是否安裝模組,如果是“*”的話,那麼就是預設安裝,如果是“M”的話,那麼就是要手動載入。回車鍵是用來選擇是否進入子欄的,在配置完韌體之後,需要手動儲存後再離開。1)
2)Target Profile型別為:NETGEAR WNDR3700/WNDR3800/WNDRMAC,這裡根據路由器型號進行選擇,我們採用的路由器為WNDR3800。
3)Target Images型別為:squashfs,其餘的選項不選
4)分別選中 <Advanced configuration options(for developers)>,<Build the OpenWrt SDK>,<Build the OpenWrt based Toolchain>
5)選擇<Luci—Collections--(*)luci>,如下圖(選擇時要注意是選擇了M還是*,因為這兩種不同的選擇方式編譯完的韌體是有不同的,這裡還是強調全部用 *
6)儲存退出
7)手動取消bridge,即在make menuconfig後手動執行以下指令。
echo '#CONFIG_KERNEL_BRIDGE is not set' >> .config
注意:每次 make menuconfig以後都要執行這條指令。
第七步:在openwrt原始碼檔案中,新增編譯時候需要附加的模組。在openwrt編譯過程中,會從網際網路上自行下載一些模組,不過由於網路以及資料來源的問題,有部分資料包直接下載是存在問題的。故本文已經將該版本openwrt所需要的資料包進行整理,並整理如下:
tar zvxf dl.tar.gz
解壓縮之後,可以獲得一個名為dl的資料夾。此時需要將該資料夾與openwrt目錄下的內容進行合併,比如可以用以下指令(如果在圖形介面裡面,手動拖拽資料夾也行)cp ./dl/* openwrt/dl/
在openwrt編譯過程中,如果dl目錄中已經有下載好的模組,那麼編譯的時候就不會再行下載資源。第八步:編譯openwrt韌體。直接在openwrt根目錄下,執行以下指令即可
make V=99
編譯完的結果被儲存在目錄(openwrt/bin/ar71xx/)下,其中ar71xx路徑名與韌體配置時選擇的晶片型號有關。以本文選擇WNDR3800路由器為例,最後編譯結果為openwrt-ar71xx-generic-wndr3800-squashfs-sysupgrade.bin
將該檔案拷出後,我們可以進行最後一步的刷機操作。