施鳴
摘要:OpenWrt是一個(gè)針對(duì)嵌入式設(shè)備的Linux發(fā)行版,有非常高的可擴(kuò)展性,可以非常容易地從零開始構(gòu)建出全功能的智能路由或服務(wù)器設(shè)備。通過本文所寫的配置方法,大家可以快速的搭建OpenWrt系統(tǒng)開發(fā)環(huán)境。
關(guān)鍵詞:OpenWrt;Linux;嵌入式智能路由
一、OpenWrt簡(jiǎn)介和優(yōu)缺點(diǎn)
現(xiàn)在主流的路由器固件主要有 dd-wrt;tomato;openwrt;padavan四大類。對(duì)比一個(gè)單一的、靜態(tài)的系統(tǒng),OpenWrt的包管理提供了一個(gè)完全可寫的文件系統(tǒng),從應(yīng)用程序供應(yīng)商提供的選擇和配置,并允許您自定義的設(shè)備,以適應(yīng)任何應(yīng)用程序。OpenWRT是一個(gè)高度模塊化、高度自動(dòng)化的嵌入式Linux系統(tǒng),擁有強(qiáng)大的網(wǎng)絡(luò)組件和擴(kuò)展性,常常被用于工控設(shè)備、電話、小型機(jī)器人、智能家居、路由器以及VOIP設(shè)備中。 同時(shí),它還提供了100多個(gè)已編譯好的軟件,而且數(shù)量還在不斷增加,而 OpenWrt SDK 更簡(jiǎn)化了開發(fā)軟件的工序。
優(yōu)點(diǎn):如果對(duì) Linux 系統(tǒng)有一定的認(rèn)識(shí),并想學(xué)習(xí)或接觸嵌入式 Linux 的話,OpenWRT很適合。而且OpenWRT支持各種處理器架構(gòu),無論是對(duì)ARM,X86,PowerPC或者M(jìn)IPS都有很好的支持。其多達(dá)3000多種軟件包,囊括從工具鏈(toolchain),到內(nèi)核(linux kernel),到軟件包(packages),再到根文件系統(tǒng)(rootfs)整個(gè)體系,使得用戶只需簡(jiǎn)單的一個(gè)make命令即可方便快速地定制一個(gè)具有特定功能的嵌入式系統(tǒng)來制作固件。
缺點(diǎn):由于CPU內(nèi)核體系不同,造成很多應(yīng)用程序移植到OpenWrt上的時(shí)候經(jīng)常崩潰,而且ADSL硬件模塊的驅(qū)動(dòng)程序沒有開放源代碼,造成很多ADSL一體無線路由的ADSL模塊不能工作而造成功能缺失(RG100A和DB120除外)。由于OpenWRT并不是官方發(fā)布的路由器固件,所以要使用(刷入該固件)有困難,而且其基于Linux,導(dǎo)致OpenWRT的入門門檻較高。
二、環(huán)境搭建方法
本次實(shí)驗(yàn)使用到虛擬機(jī)VMware;10及Ubuntu系統(tǒng)的ISO鏡像,這些軟件工具在各軟件的官網(wǎng)下載,下面介紹安裝好VMware及Ubuntu系統(tǒng)后軟件的使用方法。
進(jìn)入U(xiǎn)buntu Linux系統(tǒng)
編譯OpenWrt系統(tǒng)固件
1.安裝編譯環(huán)境
安裝編譯所需的工具,在終端輸入
#sudo apt-get update
#sudo apt-get install git-core build-essential
libssl-dev libncurses5-dev unzip
#sudo apt-get install subversion mercurial
#sudo apt-get install gcc g++ binutils patch bzip2 flex bison make a
utoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurs
es-term zlib1g-dev
2.下載OpenWrt源碼
需準(zhǔn)備12GB左右的空間,源碼體積百兆左右,但是編譯過程中會(huì)產(chǎn)生大量文件,會(huì)使文件夾體積非常大。# git clone -b chaos_calmer git://github.com/openwrt/openwrt.git
3.更新軟件包
下載安裝可用的“feeds”:上述步驟會(huì)產(chǎn)生一個(gè)名為openwrt的目錄,在終端輸入#cd openwrt
#./scripts/feeds update -a
#./scripts/feeds install -a
4.配置
在終端輸入make menuconfig
對(duì)編譯目標(biāo)進(jìn)行配置
TargetSystem -> Ralink RT288x/Rt3xxx
Subtarget->MT7628 based boards
“Package the OpenWrt-base Toolchain”是為了有搭建交叉編譯環(huán)境方便,不是必選的。
此外,勾選LuCI(網(wǎng)頁形式的控制臺(tái))還是非常必要的。要勾選(前面出現(xiàn)*號(hào)):
LuCI-->1.Collections-->luci
別忘記勾選中文:
LuCI-->2.Modules-->Translations-->Chinese(zh-cn)
最后Save,退出。
以上是基本的固件編譯,如果需要其他功能,要再勾選或添加。
5.編譯固件
在終端中輸入命令:make V=s -j2
V=s 代表顯示編譯信息,一定要勾選,否則出錯(cuò)的話無法看到錯(cuò)誤信息。
-j8代表使用的CPU線程數(shù)量,4C8T的CPU可是使用8個(gè)線程提高速度,使用時(shí)有時(shí)會(huì)出錯(cuò),可以改成-j1或者不加這個(gè)參數(shù)。
6.固件目標(biāo)
當(dāng)OpenWrt編譯完成后,生成的固件位于源碼目錄下的
bin/bin/ramips/openwrt-ramips-mt7628-xxx-squashfs-sysupgrade.bin
三、搭建交叉編譯環(huán)境
交叉編譯,簡(jiǎn)單的說就是,就是在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)上的可執(zhí)行文件,舉個(gè)例子,我用我的電腦(x86_64平臺(tái))編譯出路由器(mips-mt76XX)上可以執(zhí)行的二進(jìn)制文件,要進(jìn)行交叉編譯首先就要有對(duì)應(yīng)平臺(tái)的編譯器,下面介紹如何搭建編譯環(huán)境。
1.自己編譯生成工具鏈(toolchain)
進(jìn)入OpenWrt源碼目錄,并執(zhí)行make menuconfig命令,并選中如下選項(xiàng)[*] Build the Openwrt SDK
選中,保存退出,然后執(zhí)行make V=99命令生成工具鏈。編譯成功后,工具鏈位將在bin/ramips/
OpenWrt-SDK-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2壓縮包下。
2.設(shè)置環(huán)境變量
需要設(shè)置兩個(gè)環(huán)境變量,一個(gè)為工具鏈中的bin文件夾加入到PATCH中,另一個(gè)為STAGING_DIR變量,將其指向放toolchain的文件夾。其操作步驟如下:
將OpenWrt-SDK-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2
目錄解壓到/opt目錄,sudo tar xvf OpenWrt-SDK-xx.tar.gz -C /opt
執(zhí)行如下命令,打開~/.bashrc文件,將環(huán)境變量添加到該文件中。
vim ~/.bashrc
在末尾處添加如下代碼:vim ~/.bashrc
OPENWRT_GCC=/opt/OpenWrt-SDK-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin
export
STAGING_DIR=/opt/OpenWrt-SDK-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/staging_dir
export PATH=$PATH:$OPENWRT_GCC
編輯完成后保存退出,然后執(zhí)行如下命令,使能環(huán)境變量#source ~/.bashrc
3.測(cè)試交叉編譯工具
在終端下執(zhí)行如下命令,查看是否有輸出# mipsel-openwrt-linux-gcc -v
如果輸出如上圖的數(shù)據(jù),表示安裝成功。
參考文獻(xiàn)
[1]Linux應(yīng)用服務(wù)器架設(shè)[M].於岳2014年11月第一版.人民郵電出版社.
[2]跟老男孩學(xué)Linux運(yùn)維:web集群實(shí)戰(zhàn)[M].老男孩 2016年第一版
[3]基于虛擬機(jī)的計(jì)算機(jī)公共機(jī)房多系統(tǒng)實(shí)驗(yàn)環(huán)境的構(gòu)建[J].姜莉.中國(guó)現(xiàn)代教育裝備.2009(01)
[4]社大鵬《Red hat Linux因特網(wǎng)服務(wù)器》中國(guó)水利水電出版社.2004.2.
[5]林慧琛《Red hat Linux服務(wù)器配置與應(yīng)用》人民郵電出版社.2006.1.