使用Busybox製作最小檔案系統並燒寫入開發板

檀蒜發表於2020-10-09

使用Busybox製作最小檔案系統並燒寫入開發板

實驗環境
交叉編譯平臺 (on VMware14.0,Win10)
交叉編譯鏈 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf
前提 得到busybox工具包(busybox-1.29.0.tar.bz2)
硬體 迅為開發板i.MX6ULL終結者
實驗目的
使用busybox工具製作檔案系統,並燒寫入開發板測試。
實驗原理
Busybox整合了一百多個最常用linux命令和工具,且其體積較小,編譯速度快,適用於製作嵌入式linux根檔案系統。
實驗過程
1、已獲得busybox原始碼busybox-1.29.0.tar.bz2
拷貝到Ubuntu中,使用命令“tar -vxjf busybox-1.29.0.tar.bz2”,解壓 busybox,
在這裡插入圖片描述

2、檢查交叉編譯鏈:
在這裡插入圖片描述

3、檢查ncurse庫,避免錯誤apt-get install libncurses5-dev
在這裡插入圖片描述

4、修改檔案使支援中文
busybox1.17.0 以後版本對中文的支援進行了限制。要想讓 busybox1.17.0 以上支援中文,需做如下修改。
首先cd到busybox的目錄下,使用命令“vim libbb/printable_string.c”,查詢函式 printable_string,其定義中大於 0x7F 的字元直接被break 掉,或者直接被“?”代替了。因此註釋掉這幾行
在這裡插入圖片描述

:wq儲存退出即可;
然後使用命令“ vim libbb/unicode.c”,查詢函式 unicode_conv_to_printable2,同樣對0x7f後作用的語句註釋掉
在這裡插入圖片描述

:wq儲存退出,只要之後對busybox配置時設定好就可以支援中文了;
5、配置busybox
使用命令“make defconfig ”,即可配置 busybox 為預設配置。
。。。
在這裡插入圖片描述

接著使用make menuconfig命令進入圖形化配置介面配置busybox。
在這裡插入圖片描述

進入seting在“Build Options”欄找到“Cross compiler prefix”,它是指定編譯器來編譯
填入arm-none-linux-gnueabi-
在這裡插入圖片描述

在“— Installation Options ”欄找到“(./_install) Destination path for ‘make install’ (NEW)”。修改安裝地址
在這裡插入圖片描述

選擇“vi-style line editing commands(NEW)”選項;
進入到“Linux Module Utilities —>”空格取消選擇“Simplified modutils”;
回到“Busybox Configuration”介面,進入setting,找到“Support Unicod”和“Check $LC_ALL, $LC_CTYPE and $LANG environment variables”,選中這兩個選項,使能 busybox 的 unicode 編碼以支援中文
在這裡插入圖片描述

然後exit 儲存;
在這裡插入圖片描述

6、編譯busybox
make
在這裡插入圖片描述

make install
在這裡插入圖片描述

編譯成功
cd 到之前設定的安裝目錄下,可以看到已經生成了幾個檔案
在這裡插入圖片描述

7、整理、完善檔案系統
製作的檔案系統還需要新建“dev,etc,lib,mnt,proc,sys,tmp,var”資料夾,使用命令“mkdir dev etc lib mnt proc sys tmp var”
8、進入/etc目錄,新建檔案eth0-setting,並在“eth0-setting”檔案裡輸入下面的內容:

在這裡插入圖片描述

設定了linux的IP以及閘道器等引數;
9、然後儲存並退出“eth0-setting”檔案,使用chmod 755 eth0-setting命令修改檔案許可權;
10、接著在 etc 目錄下用“mkdir init.d”命令建立“init.d”目錄(放置服務指令碼),進入到“init.d”目錄,然後在“init.d”目錄下建立“ifconfig-eth0”檔案,寫入網路配置資訊
在這裡插入圖片描述

:wq儲存退出,chmod 755 ifconfig-eth0更改許可權;
11、新建rcS指令碼,(開機自動執行、批處理設定)寫入內容:
在這裡插入圖片描述

:wq儲存退出,chmod 755 rcS設定許可權;
12、在“etc”目錄下建立檔案“passwd”,輸入下面的內容:

在這裡插入圖片描述

儲存退出,更改許可權755
13、建立檔案profile,輸入一下內容
在這裡插入圖片描述

儲存退出,更改許可權755
14、在etc下建立/rc.d/init.d目錄,並在init.d中新建檔案vi netd,輸入內容:
在這裡插入圖片描述

儲存退出,更改許可權755
15、進到rootfs目錄下的lib,Busybox 編譯生成的二進位制檔案是以動態連結庫的形式執行,所以我們需要拷貝編譯器裡面的庫檔案到“lib”目錄,使用命令
在這裡插入圖片描述
在這裡插入圖片描述

15、進到/rootfs/var,新建目錄lib,lock,log,run,tmp,(mkdir lib lock log run tmp)
16、此時檔案系統已做完,回到/rootfs目錄,使用壓縮命令將檔案系統打包,生成 rootfs.tar.bz2 檔案

在這裡插入圖片描述

17、此時可看到已生成檔案系統映象
在這裡插入圖片描述

燒寫進開發板驗證
1、將上面得到的rootfs.tar.bz2傳到windows,並與檔案樹檔案imx6ul_topeet_nand.dtb,uboot.imx,zImage,一起拷貝到燒寫工具mfgtool的指定資料夾下;
2、把開發板接好OTG線,上電,USB線,將開發板的撥碼開關撥至序列下載模式,啟動mfgtool開啟燒寫,同時在secure CRT觀察開發板情況。

在這裡插入圖片描述
在這裡插入圖片描述

燒寫完畢:
在這裡插入圖片描述
在這裡插入圖片描述

3、將開發板的撥碼開關撥至nand啟動模式,reset;

在這裡插入圖片描述

顯示出之前製作的檔案系統目錄。
在這裡插入圖片描述
實驗完成

相關文章