buildroot構(gòu)建根文件系統(tǒng)

一孤澎、簡(jiǎn)介

Buildroot是Linux平臺(tái)上一個(gè)構(gòu)建嵌入式Linux系統(tǒng)的框架棘钞。整個(gè)Buildroot是由Makefile腳本和Kconfig配置文件構(gòu)成的谨敛。本文使用buildroot為freescale imx287 開發(fā)板制作根文件系統(tǒng)跨嘉。
參考 https://www.cnblogs.com/kele-dad/p/8231434.html

1.buildroot目錄說明

.
├── arch: 目錄存放CPU架構(gòu)相關(guān)的配置腳本尊蚁,如arm/mips/x86 亡笑,這些CPU相關(guān)的配置,在制作工具鏈横朋,編譯boot和內(nèi)核時(shí)很關(guān)鍵仑乌。
├── board:存放了一些默認(rèn)開發(fā)板的配置補(bǔ)丁之類的
├── boot
├── CHANGES
├── Config.in
├── Config.in.legacy
├── configs: 放置開發(fā)板的一些配置參數(shù). 
├── COPYING
├── DEVELOPERS
├── dl: 存放下載的源代碼及應(yīng)用軟件的壓縮包. 
├── docs: 存放相關(guān)的參考文檔. 
├── fs: 放各種文件系統(tǒng)的源代碼. 
├── linux: 存放著Linux kernel的自動(dòng)構(gòu)建腳本. 
├── Makefile
├── Makefile.legacy
├── output: 是編譯出來的輸出文件夾. 
│   ├── build: 存放解壓後的各種軟件包編譯完成後的現(xiàn)場(chǎng).
│   ├── host: 存放著製作好的編譯工具鏈,如gcc琴锭、arm-linux-gcc等工具.
│   ├── images: 存放著編譯好的uboot.bin, zImage, rootfs等鏡像文件晰甚,可燒寫到板子裏, 讓linux系統(tǒng)跑起來.
│   ├── staging
│   └── target: 用來製作rootfs文件系統(tǒng),裏面放著Linux系統(tǒng)基本的目錄結(jié)構(gòu)决帖,以及編譯好的應(yīng)用庫和bin可執(zhí)行文件. (buildroot根據(jù)用戶配置把.ko .so .bin文件安裝到對(duì)應(yīng)的目錄下去厕九,根據(jù)用戶的配置安裝指定位置)
├── package:下面放著應(yīng)用軟件的配置文件,每個(gè)應(yīng)用軟件的配置文件有Config.in和soft_name.mk地回。
├── README
├── support
├── system:這里就是根目錄的主要骨架和相關(guān)的啟動(dòng)初始化配置,當(dāng)制作根目錄時(shí)就是將此處的文件cp到output里去.然后再安裝toolchain的動(dòng)態(tài)庫和你勾選的package的可執(zhí)行文件之類的.
└── toolchain

2.buildroot工作原理

Buildroot本身提供構(gòu)建流程的框架扁远,開發(fā)者按照格式寫腳本俊鱼,提供必要的構(gòu)建細(xì)節(jié),配置整個(gè)系統(tǒng)畅买,最后自動(dòng)構(gòu)建出你的系統(tǒng)并闲。

  • buildroot的編譯流程是先從dl/xxx.tar下解壓出源碼到output/build/xxx, 然后它利用本身的配置文件(如果有的話)覆蓋output/build/xxx下的配置文件,在開始編譯連接完成后安裝到output/相應(yīng)文件夾下.
  • Buildroot提供了函數(shù)框架和變量命令框架,采用它的框架編寫的app_pkg.mk這種Makefile格式的自動(dòng)構(gòu)建腳本谷羞,將被package/pkg-generic.mk 這個(gè)核心腳本展開填充到buildroot主目錄下的Makefile中去帝火。
  • package/pkg-generic.mk中通過調(diào)用同目錄下的pkg-download.mk、pkg-utils.mk文件湃缎,已經(jīng)幫你自動(dòng)實(shí)現(xiàn)了下載犀填、解壓、依賴包下載編譯等一系列機(jī)械化的流程雁歌。你只要需要按照格式寫Makefile腳app_pkg.mk宏浩,填充下載地址,鏈接依賴庫的名字等一些特有的構(gòu)建細(xì)節(jié)即可靠瞎。

3.iMX287開發(fā)板硬件說明

1.主板外觀及基本接口分布

?
image

2.硬件資源

image

二比庄、構(gòu)建步驟

1.下載buildroot

git clone git://git.busybox.net/buildroot

2.配置buildroot

查看buildroot包含的開發(fā)板配置

make list-defconfigs

選擇imx28默認(rèn)配置

cd buildroot
make freescale_imx28evk_defconfig

進(jìn)入menuconfig逐項(xiàng)配置

make menuconfig
image
  • Target options(目標(biāo)配置)

    • Target Architecture:目標(biāo)架構(gòu),這里選擇 ARM(little endian)乏盐,ARM小端模式
    • Target Binary Format:二進(jìn)制格式佳窑,為 ELF
    • Target Architecture Variant:架構(gòu)變體為 arm920t,內(nèi)核類型
    • Target ABI:應(yīng)用程序二進(jìn)制接口父能,為EABI
    • Floating point strategy:浮點(diǎn)數(shù)的策略神凑,選擇為 Soft float
    • ARM instruction set:arm 匯編指令集,選擇 ARM
  • Build options(編譯選項(xiàng))

    對(duì)編譯過程進(jìn)行一些設(shè)置何吝,通常用默認(rèn)設(shè)置即可溉委。

  • Toolchain(工具鏈)

    使用內(nèi)部工具鏈。

    也可以手動(dòng)選擇Kernel Header版本和外部工具鏈爱榕。

    注意:實(shí)際測(cè)試發(fā)現(xiàn)瓣喊,根文件系統(tǒng)與內(nèi)核使用不同版本的交叉工具鏈編譯,得到的根文件系統(tǒng)鏡像文件也可以與內(nèi)核鏡像搭配運(yùn)行黔酥。

  • System configuration(系統(tǒng)配置)

    對(duì)目標(biāo)系統(tǒng)進(jìn)行配置藻三,包括主機(jī)名稱(System hostname)、歡迎旗標(biāo)(System banner)跪者、初始化系統(tǒng)(Init system)棵帽、設(shè)備管理方式(/dev management)、登錄方式和 Shell 等渣玲。

    “Run a gretty after root”需要根據(jù)硬件進(jìn)行設(shè)置逗概,必須與系統(tǒng)調(diào)試串口對(duì)應(yīng)。 EasyARM28x 使用默認(rèn)的 console 即可忘衍。

  • kernel和bootloaders配置

    內(nèi)核定制裁剪以及 Bootloader 的定制仗谆,建議獨(dú)立管理指巡, Kernel 和 Bootloaders 這兩項(xiàng)留空即可。

  • Target Packages(軟件包)

    Buildroot 提供了海量軟件包可選隶垮,只需在配置界面選中所需要的軟件包藻雪,交叉編譯后即可使用。

    Busybox是必選狸吞。

  • Filesystems images(文件系統(tǒng)鏡像選擇)

    可以設(shè)置生成的文件系統(tǒng)鏡像類型 勉耀,如.tar、cpio蹋偏、ext2/3/4便斥、 jffs2、 yaffs2 和 ubifs 等多種方式 威始。

    如果要生成ubifs枢纠,需要知道芯片邏輯擦除塊大小、最小IO單元(頁大欣杼摹)晋渺、可用物理擦除塊數(shù)量(PEB)∨д叮可以在uboot環(huán)境下木西,執(zhí)行如下命令得知:

    > mtpart default
    > ubi part rootfs
    

3.編譯buildroot

make

編譯完成,在 output 目錄下可以得到生成的文件系統(tǒng)和鏡像文件

$ ls output/
build host images staging target

在images目錄下有燒錄鏡像文件

4.完善文件系統(tǒng)

1)增加/dev/null 文件

Buildroot 編譯后随静,生成的文件系統(tǒng)中通常沒有/dev/null 文件八千,而系統(tǒng)啟動(dòng)通常是需要的,可以自行創(chuàng)建:

cd output/target/dev/
sudo mknod null c 1 3

2)增加/dev/console文件

對(duì)應(yīng)于System configuration-“Run a gretty after root”選擇的調(diào)試端口

cd output/target/dev/
sudo mknod console c 5 1

3)再次編譯builtroot

make

三燎猛、使用根文件系統(tǒng)

將生成的rootfs.tar.bz2文件或rootfs.ubifs文件燒錄到處理器恋捆,進(jìn)入系統(tǒng)后即可以通過shell命令操作,已有的shell命令參考o(jì)utput/bin/目錄下的鏈接文件重绷。

開機(jī)成功進(jìn)入根文件系統(tǒng)

1.登錄

因?yàn)樵赟ystem configuration中把root passwd設(shè)置為root沸停,所以用戶名和密碼都是root。

2.系統(tǒng)信息查看

  • 查看內(nèi)核版本:cat /proc/version
  • 查看內(nèi)存使用:free
  • 查看磁盤使用:df -m
  • 查看CPU信息:cat /proc/cpuinfo

3.網(wǎng)絡(luò)設(shè)置

  • 修改IP地址:ifconfig eth0 192.168.181.251

  • 設(shè)置默認(rèn)網(wǎng)關(guān):route add default gw 192.168.181.1

  • 設(shè)置子網(wǎng)掩碼:ifconfig eth0 netmask 255.255.255.0

  • 設(shè)置廣播地址:ifconfig eth0 broadcast 192.168.181.225

  • 修改mac地址:ifconfig eth0 hw ether 00:11:22:33:44:55

  • 設(shè)置DNS:vi /etc/resolv.conf 修改后保存 #設(shè)置好DNS才能解析域名

    nameserver 8.8.8.8 #修改成你的主DNS
    nameserver 8.8.4.4 #修改成你的備用DNS
    search localhost #你的域名
    
  • 開機(jī)自動(dòng)設(shè)置網(wǎng)絡(luò)參數(shù):vi /etc/rc.d/init.d/start_userapp 將上述命令加入文件中

  • 關(guān)閉/開啟網(wǎng)關(guān):

    • fconfig eth0 down
    • ifconfig eth0 up
  • 設(shè)置動(dòng)態(tài)獲取ip地址:udhcpc #重啟后無效

  • 外網(wǎng)ping測(cè)試:ping www.baidu.com

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末论寨,一起剝皮案震驚了整個(gè)濱河市星立,隨后出現(xiàn)的幾起案子爽茴,更是在濱河造成了極大的恐慌葬凳,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件室奏,死亡現(xiàn)場(chǎng)離奇詭異火焰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)胧沫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門昌简,熙熙樓的掌柜王于貴愁眉苦臉地迎上來占业,“玉大人,你說我怎么就攤上這事纯赎∏玻” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵犬金,是天一觀的道長念恍。 經(jīng)常有香客問我,道長晚顷,這世上最難降的妖魔是什么峰伙? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮该默,結(jié)果婚禮上瞳氓,老公的妹妹穿的比我還像新娘。我一直安慰自己栓袖,他們只是感情好匣摘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叽赊,像睡著了一般恋沃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上必指,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天囊咏,我揣著相機(jī)與錄音,去河邊找鬼塔橡。 笑死梅割,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的葛家。 我是一名探鬼主播户辞,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼癞谒!你這毒婦竟也來了底燎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤弹砚,失蹤者是張志新(化名)和其女友劉穎双仍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桌吃,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朱沃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逗物。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搬卒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出翎卓,到底是詐尸還是另有隱情契邀,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布失暴,位于F島的核電站蹂安,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏锐帜。R本人自食惡果不足惜田盈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缴阎。 院中可真熱鬧允瞧,春花似錦、人聲如沸蛮拔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽建炫。三九已至畦韭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肛跌,已是汗流浹背艺配。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衍慎,地道東北人转唉。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像稳捆,于是被迫代替她去往敵國和親赠法。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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