Openwrt學(xué)習(xí)之路-(1-Openwrt clone and bulid)

題圖:huitu

Openwrt clone and bulid

Openwrt是一個(gè)高度模塊化七咧、高度自動(dòng)化的嵌入式Linux系統(tǒng)吴超,擁有強(qiáng)大的網(wǎng)絡(luò)組件和擴(kuò)展性,常常被用于工控設(shè)備助被、電話、小型機(jī)器人切诀、智能家居揩环、路由器以及VOIP設(shè)備中。為了更加深入的了解Openwrt幅虑,我們從最直接的學(xué)習(xí)方式開始丰滑,clone源碼、編譯工程倒庵。

1.安裝linux上的更新組件

為了支持openwrt的安裝編譯褒墨,在linux操作系統(tǒng)上需要安裝以下的軟件

$ sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext 
texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev git-core 
gawk libz-dev asciidoc libtool libssl-dev libssl0.9.8 xz-utils -y

2.從官網(wǎng)clone openwrt

git clone git://git.openwrt.org/15.05/openwrt.git

這邊克隆哪個(gè)版本由自己決定,我這邊選擇15.05穩(wěn)定版擎宝。雖然trunk版本支持的硬件更多郁妈,但其不一定穩(wěn)定,而且會(huì)經(jīng)常更新绍申,對(duì)開發(fā)固定的硬件開說就沒必要了噩咪,需要時(shí)可以去尋找相應(yīng)的版本顾彰。

clone好的工程如下:

/openwrt-15.05/openwrt$ ls
BSDmakefile  docs                LICENSE   README    staging_dir  toolchain
config       feeds.conf.default  Makefile  rules.mk  target       tools
Config.in    include             package   scripts   tmp

3.升級(jí)所有擴(kuò)展軟件源列表

./scripts/feeds update -a

這一步的結(jié)果是:產(chǎn)生$(TOPDIR)/feeds目錄,存放的就是執(zhí)行feeds.conf.default文件后的結(jié)果

src-git packages https://github.com/openwrt/packages.git;for-15.05
src-git luci https://github.com/openwrt/luci.git;for-15.05
src-git routing https://github.com/openwrt-routing/packages.git;for-15.05
src-git telephony https://github.com/openwrt/telephony.git;for-15.05
src-git management https://github.com/openwrt-management/packages.git;for-15.05

feeds.conf.default里面的路徑可以自行修改胃碾,如https網(wǎng)址訪問不到涨享,則可改為git路徑等。

4.安裝所有擴(kuò)展軟件

./scripts/feeds install - a
這一步的結(jié)果是:在package目錄中多了一個(gè)feeds目錄书在,里面存放的子目錄是到$(TOPDIR)/feeds目錄的鏈接灰伟。注意:在Openwrt的TOPDIR/Makefile中拆又,有如下定義:

   # update all feeds, re-create index files, install symlinks
   package/symlinks:
   $(SCRIPT_DIR)/feeds update -a
   $(SCRIPT_DIR)/feeds install -a

那么儒旬,可以想見,上述兩個(gè)也可以合并為一步帖族,即make package/symlinks

5.使用默認(rèn)編譯環(huán)境栈源,檢查是否能進(jìn)行編譯

make defconfig

這一步就編譯環(huán)境的基礎(chǔ),如果這一步都沒執(zhí)行成功竖般,說明clone的工程有問題甚垦,需要重新clone。

6.配置自定義的鏡像配置

make menuconfig

對(duì)工程進(jìn)行配置涣雕,這邊就以小米的miwifi為基礎(chǔ)來進(jìn)行編譯艰亮。在選擇硬件平臺(tái)時(shí),我們需要知道該路由器的無線芯片挣郭,CPU芯片迄埃,然后選出對(duì)應(yīng)的平臺(tái)設(shè)備。
如下:

先選擇Target System ---> (Ralink RT288x/RT3xxx)                  
然后      Subtarget ---> (MT7620 based boards)          
     Target Profile ---> (Xiaomi MiWiFi Mini)  
最后 Target Images  ---> (jffs2兑障、squashfs)

這邊為平臺(tái)的首次搭建侄非,其他配置就先不要選擇,把上面四個(gè)選擇好后流译,就保存退出逞怨。

7.編譯鏡像

make V=99

第一次編譯可能需要花費(fèi)很長(zhǎng)的時(shí)間,根據(jù)你的網(wǎng)絡(luò)而定福澡,一般情況下大約是2~3個(gè)小時(shí)叠赦,最主要的是花費(fèi)在下載源碼的時(shí)間上,以后編譯一般在半個(gè)小時(shí)左右就能編譯好革砸。

對(duì)于第一次編譯源碼的下載除秀,我們可以在國(guó)內(nèi)的一些鏡像進(jìn)行手動(dòng)下載后,拷貝進(jìn)dl/目錄下业岁,這樣也可以加快一些編譯速度鳞仙,國(guó)內(nèi)進(jìn)行可以訪問http://dl.openwrtdl.com/

8.編譯完成之后,將會(huì)多出幾個(gè)目錄如下

編譯后增加的目錄包括:bin/笔时、build_dir/棍好、dl/、feeds/、staging_dir/借笙。

編譯好的工程如下:

/openwrt-15.05/openwrt$ ls
bin          Config.in  feeds.conf.default  LICENSE   rules.mk     tmp
BSDmakefile  dl         include             Makefile  scripts      toolchain
build_dir    docs       key-build           package   staging_dir  tools
config       feeds      key-build.pub       README    target

對(duì)于Openwrt的目錄結(jié)構(gòu)將在另外一篇"Openwrt directory structure"進(jìn)行講解扒怖。

9.make步驟分析

簡(jiǎn)單來說,一旦OpenWrt buildroot已正確配置,如指定目標(biāo)平臺(tái)和體系結(jié)構(gòu),用戶空間包已經(jīng)選擇等, OpenWrt buildroot會(huì)通過以下步驟編譯鏡像:

  • 下載交叉編譯工具,內(nèi)核頭文件等
  • 建立staging_dir/目錄业稼,這個(gè)目錄是交叉編譯工具鏈將被安裝的地方盗痒,如果你想使用相同的交叉編譯工具鏈用作其他目的,比如編譯第三方應(yīng)用程序低散,你可以找到在這個(gè)目錄下找到交叉編譯工具俯邓,然后使用arch-linux-gcc 編譯你的應(yīng)用程序
  • 創(chuàng)建下載目錄dl/,tar包將下載到這里
  • 創(chuàng)建編譯目錄build_dir/熔号,用戶態(tài)的工具和影城包將被解壓或者復(fù)制到這里來進(jìn)行編譯稽鞭。
  • 創(chuàng)建目標(biāo)目錄build_dir/target-<arch>*/root-<arch>和目標(biāo)文件系統(tǒng)架構(gòu),這本目錄包含最終的根文件系統(tǒng)。
  • 安裝用戶態(tài)軟件包到根文件系統(tǒng)和以適當(dāng)?shù)母袷綁嚎s整個(gè)根文件系統(tǒng)引镊。最后根文件系統(tǒng)的固件鏡像在/bin/<arch>/下生成朦蕴。

Openwrt clone and bulid的分析就到這邊,有感悟時(shí)會(huì)持續(xù)會(huì)更新弟头。

注:以上內(nèi)容都是本人在學(xué)習(xí)過程積累的一些心得吩抓,難免會(huì)有參考到其他文章的一些知識(shí),如有侵權(quán)赴恨,請(qǐng)及時(shí)通知我疹娶,我將及時(shí)刪除或標(biāo)注內(nèi)容出處,如有錯(cuò)誤之處也請(qǐng)指出嘱支,進(jìn)行探討學(xué)習(xí)蚓胸。文章只是起一個(gè)引導(dǎo)作用,詳細(xì)的數(shù)據(jù)解析內(nèi)容還請(qǐng)查看Linux相關(guān)教程除师,感謝您的查閱沛膳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市汛聚,隨后出現(xiàn)的幾起案子锹安,更是在濱河造成了極大的恐慌,老刑警劉巖倚舀,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叹哭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡痕貌,警方通過查閱死者的電腦和手機(jī)风罩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舵稠,“玉大人超升,你說我怎么就攤上這事入宦。” “怎么了室琢?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵乾闰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我盈滴,道長(zhǎng)涯肩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任巢钓,我火速辦了婚禮病苗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘竿报。我一直安慰自己铅乡,他們只是感情好继谚,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布烈菌。 她就那樣靜靜地躺著,像睡著了一般花履。 火紅的嫁衣襯著肌膚如雪芽世。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天诡壁,我揣著相機(jī)與錄音济瓢,去河邊找鬼。 笑死妹卿,一個(gè)胖子當(dāng)著我的面吹牛旺矾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播夺克,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼箕宙,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了铺纽?” 一聲冷哼從身側(cè)響起柬帕,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狡门,沒想到半個(gè)月后陷寝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡其馏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年凤跑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叛复。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仔引,死狀恐怖鹏控,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肤寝,我是刑警寧澤当辐,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站鲤看,受9級(jí)特大地震影響缘揪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜义桂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一找筝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧慷吊,春花似錦袖裕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至堰酿,卻和暖如春疾宏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背触创。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工坎藐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哼绑。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓岩馍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親抖韩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蛀恩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容