第一、二期銜接——2.1 構建最小根文件系統

根文件系統的構建

  • 硬件平臺:韋東山嵌入式Linxu開發板(S3C2440.v3)
  • 軟件平臺:運行於VMware Workstation 12 Player下UbuntuLTS16.04_x64 系統
  • 參考資料:《嵌入式Linux應用開發手冊》
  • 開發環境:Linux 2.6.22.6 內核、arm-linux-gcc-3.4.5-glibc-2.3.6工具鏈


一、前言

在嵌入式系統中,u-boot的目的是爲了啓動內核,而內核的目的是爲了啓動應用程序
提問:應用程序保存到哪裏呢?
解答:應用程序保存在根文件系統中。

1、那什麼是根文件系統呢?

(摘抄於《嵌入式Linux應用開發手冊》第十七章)

與Window的C盤類似,Linux一樣要在一個分區上存放系統啓動多必需的文件,比如內核映象文件,內核啓動後運行的第一個程序(init)、給用戶提供操作界面的shell程序、應用程序所以來的庫等。這些必須、基本的文件合稱爲根文件系統。

2、最小的根文件系統由什麼組成?

組成部分:

  1. ① /dev/console 與 /dev/null 設備節點
    /dev/console 這個設備代表的是系統控制檯錯誤信息和診斷信息通常會被髮送到這個設備。
    /dev/null 這個是一個空設備文件,所有寫到這個文件中的數據都會被丟棄掉

  2. ② /etc/inittab 啓動配置文件
    init進程根據 /etc/inittab 文件創建其他子進程,比如調用腳本文件配置IP地址、掛接其他文件系統、最後啓動shell等。

  3. ③ 配置文件中的指定程序

  4. ④ C庫lib
    該目錄下存放共享庫和可加載模塊(驅動程序)。

  5. ⑤ Busybox
    是一個遵循GPL v2協議的開源項目,將衆多的UNIX命令集合進一個很小的可執行程序中。在創建最小根文件系統時,利用Busybox,只需要在/dev目錄下創建必要的設備節點、在/etc目錄下創建一些配置文件就可以了。

二、配置編譯Busybox

1、下載busgbox壓縮包到Linux系統上並解壓

tar xjf busybox-1.7.0.tar.bz2

在這裏插入圖片描述
在解壓後的busybox-1.7.0目錄下找到這個INSTALL文件
在這裏插入圖片描述
其中說明了編譯的步驟
在這裏插入圖片描述
2、創建配置文件
指令爲:

 make menuconfig     # This creates a file called ".config"

遇到問題:
這個時候由於系統的make工具太新,make的舊版規則已經無法兼容新版,會出現以下錯誤:
在這裏插入圖片描述
解決方法:
根據報錯信息,修改makefile文件405行和1242行的代碼:
405行修改爲:%config: scripts_basic outputmakefile FORCE
1242行修改爲:%/: prepare scripts FORCE

成功後出現以下畫面:
在這裏插入圖片描述
接下來的配置:
按需配置自己所需要的配置項,這裏介紹如何配置交叉編譯工具
由於在配置項中尋找不到交叉編譯工具的配置項,故通過修改makefile文件的方式進行配置

  • 添加arm-linux-前綴到如下位置:

在這裏插入圖片描述
3、make文件
在目錄爲busybox-1.7.0執行make命令
這個過程會比較久,成功後會出現以下界面
在這裏插入圖片描述
4、安裝
在這裏插入圖片描述
由於我們是在PC機上進行配置安裝,如果執行make install會默認安裝到PC目錄下,破環系統。
正確步驟如下:

  1. 創建一個名爲first_fs文件夾(可在任意目錄下):mkdir -p /home/book/nfs_root/first_fs
  2. 執行安裝命令make CONFIG_PREFIX=/home/book/nfs_root/first_fs install
    注意執行安裝時目錄爲busybox-1.7.0

如何判斷是安裝成功?

  1. 進入你所新建的文件夾下,查看是否有如下文件:
    在這裏插入圖片描述
  2. 進行如下操作,看看是否可以成功busybox鏈接
    在這裏插入圖片描述

以上就是全部的配置安裝busybox步驟了。

三、創建/console和/null設備文件

1、在創建設備文件時,可以先查看當前PC機上該設備文件的屬性ls /dev/console /dev/null -l

在這裏插入圖片描述

解釋:crw------- 1 root root 5, 1 4月 10 14:50 /dev/console
在這裏插入圖片描述

2、在安裝~/first_fs下創建屬性相同的/dev/console/dev/null

sudo mknod console c 5 1 sudo mknod null c 1 3
如圖:
在這裏插入圖片描述

四、構造/etc/inittab

1、在/first_fs目錄下創建/ect文件mkdir etc
在這裏插入圖片描述
2、在/first_fs/etc目錄下創建可編輯文件vi inittab
添加內容爲:console::askfirst:-/bin/sh
在這裏插入圖片描述

五、加載C庫

1、在/first_fs目錄下新建lib文件mkdir lib
在這裏插入圖片描述
2、執行如下命令
cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib
cp *.so* /home/book/nfs_root/first_fs/lib -d
最終lib文件下如圖:
在這裏插入圖片描述

六、製作yaffs2映像文件

提問:上述步驟所構建的最小根文件系統,如何燒寫到開發板中呢?
解答:需要製作yaffs2映像文件。
1、解壓yaffs工具壓縮包
進入到/work/system裏面有一個文件,進行解壓得到Development_util_ok文件
命令:tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2

在這裏插入圖片描述
2、make yaffs2工具
進入到解壓文件Development_util_ok中的/work/system/Development_util_ok/yaffs2/utils進行make命令
結果如下:其中mkyaffs2image是我們所用到的工具

在這裏插入圖片描述
3、拷貝mkyaffs2image/usr/local/bin
命令:sudo cp mkyaffs2image /usr/local/bin
   sudo chmod +x /usr/local/bin/mkyaffs2image

4、創建文件系統映像
回到/homr/book/nsf_root目錄下創建,使用方式可以輸入mkyaffs2image查詢
在這裏插入圖片描述
輸入指令mkyaffs2image first_fs first_fs.yaffs2,就會生成first_fs.yaffs2映像根文件系統
在這裏插入圖片描述

七、燒寫映像根文件系統

通過服務器把生成的first_fs.yaffs2文件下載下來,通過USB下載口燒寫到開發版上,最終結果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章