1. 程式人生 > >OpenWrt從下載到編譯---個性化定製內容以斐訊K2路由器為例

OpenWrt從下載到編譯---個性化定製內容以斐訊K2路由器為例

1. OpenWrt簡介

OpenWrt 可以被描述為一個嵌入式的 Linux 發行版,(主流路由器韌體有 dd-wrt,tomato,openwrt三類)而不是試圖建立一個單一的、靜態的系統。OpenWrt的包管理提供了一個完全可寫的檔案系統,從應用程式供應商提供的選擇和配置,並允許您自定義的裝置,以適應任何應用程式。
對於開發人員,OpenWrt 是使用框架來構建應用程式,而無需建立一個完整的韌體來支援;對於使用者來說,這意味著其擁有完全定製的能力,可以用前所未有的方式使用該裝置。—— OpenWrt百度百科

2. 編譯環境搭建

wiki上官方步驟:點選進入
我採用的編譯環境是Ubuntu14.04 LTS版的。
下面是為大家整理的編譯依賴環境的安裝命令:

sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev

用上面的兩條命令即可完成編譯環境的搭建。

3. 原始碼下載

我們這裡的原始碼一律採用主幹最新程式碼,主幹最新程式碼有一個好處是最新的裝置容易支援,但“不穩定”。當然這個“不穩定”並不是說有嚴重的BUG,已經足夠咱們使用啦。需要下載分支原始碼的自行百度,這兒就不提供了。
大家可以去GitHub上下載原始碼:點選進入下載介面
也可以通過git將原始碼下載到本地(在這兒推薦這種方法),這樣的話方便更新。

// 新建一個資料夾
$ mkdir openwrt

// 進入這個資料夾

$ cd openwrt

// 下載主幹原始碼

$ git clone git://github.com/openwrt/openwrt.git

====== 等待一段時間 最新原始碼下載完成 ======

// 進入到原始碼下載目錄

$ cd openwrt

這時候,原始碼下載完畢。

4. 編譯之前的準備

熟悉編譯流程的同學們知道,下載完成原始碼後,就應該更執行和更新和安裝命令。但是這個時候往往更新會失敗,為什麼呢?— 原因就是一些更新源已經更換為git地址了,但是feeds.conf.default檔案採用的還是https/http的地址。我們將這個檔案裡面的地址修改一下即可。
注意:feeds.conf.default檔案就在下載的原始碼目錄下。

// 修改feeds.conf.default檔案
$ vi feeds.conf.default
通過命令將https更換為git
:%s/https/git/g
// 儲存檔案
:wq!
下圖為修改完成後的效果
修改feeds.conf.default檔案後效果圖
注意:如上圖所示,有些git地址被註釋掉了,我們一般情況下不用去修改。

這個是後我們在執行更新和安裝命令:

./scripts/feeds update -a
./scripts/feeds install -a

更新和安裝完軟體包後,我們就開始根據需要定製我們的路由器啦。
執行 make menuconfig

5. make menuconfig配置

執行make menuconfig後,彈出如下介面:
這裡寫圖片描述

通過文字對話方塊進行選項配置,最主要的配置項有:

Target system(目標系統型別,即路由器CPU架構)

Subtarget (子目標,即路由器晶片型號)

Target Profile (目標檔案, 即路由器型號)

LuCI (LuCI介面設定)

基本配置:
我採用的是斐訊K2路由器,網上百度CPU型號為MT7620,晶片架構為MIPS,路由器型號為PSG1208,那麼我的基本配置就為:
Target system -> MediaTek Ralink MIPS

Subtarget -> MT7620 based boards

Target Profile -> Phicomm PSG1208

LuCI配置:
LuCI是一個介面,即刷完路由器後,我們需要登陸“192.168.1.1”來設定路由器引數的介面。
LuCI->
1. Collections->
<*> luci-ssl-openssl
2. Modules->
Translations->
<*>English (en)
<*>Chinese (zh-cn)
配置完以上資訊後,OpenWrt最基本的一些配置已經完成。

6. 開始編譯

執行make V=s進行編譯。
或者執行 make -j2 V=s進行編譯。(-j2為兩個執行緒,-j4為四個執行緒,具體看自己的電腦是幾線程的,當然執行緒越多,編譯越快。)
注意:第一次編譯過程中會下載工具包,所下載的包在dl資料夾下,因此比較慢,耐心等待即可。

7. 編譯完成

所生成的檔案在openwrt/bin/targets/ramips/mt7620目錄下,其中openwrt-ramips-mt7620-psg1208-squashfs-sysupgrade.bin為編譯出來的韌體。

8. 其它設定

假如編譯成功,我們可以嘗試通過修改make menuconfig將其它軟體包編譯到韌體中。

至此,結束。