ARM开发板系统移植-----rootfs的制作
這里將介紹如何制作一個根文件系統,并且掛載到內核中---即讓內核能夠訪問到文件系統中的目錄和文件。從用戶的角度來看文件系統無非就是各個目錄和文件,注意,這些目錄和文件可以存在內存中,也可以存在Nand Flash 或者NOR Flash中,視具體的文件系統而定。本文就用基于內存的initram 和基于網絡的nfs文件系統做例子介紹文件系統的概念。
首先什么是文件系統?就本人理解而言,它就是操作系統提供的一種抽象,即操作系統將存儲介質抽象化,并提供一種訪問這種抽象的方法,讓用戶能夠簡潔且方便的訪問存儲介質(如硬盤和nand flash等)。為了實現這種抽象,操作系統把存儲介質進行單元劃分,文件存儲在介質時就占據若干個單元。當然操作系統還記錄下各個文件的基本屬性(如文件大小、存儲位置、所屬人、訪問權限等等),并組成一個文件控制塊(FCB)。所有文件的FCB保存在一個目錄文件中,即一個目錄文件就是內容是FCB的文件,其自身也有FCB目錄文件的FCB記錄在上一層目錄中,這樣層層往上連接就形成了樹狀目錄結構?;蛘哌@樣描述:文件系統包含兩部分:一組文件(即所要保存的數據)和目錄文件(目錄文件的內容是每個文件的FCB,FCB記錄了文件的所有屬性)。如下圖所示:
如上圖所示是一個典型的Linux系統目錄結構,從用戶的角度看這就是Linux的文件系統,從右往左看,假設run目錄下有個文件file,那么file的FCB就保存在run目錄文件中,而run又是一個文件,其FCB 保存在VAR這個目錄文件中,最后var的FCB就保存在根目錄文件中。一次要訪問到file,實質就是要沿著/var/run/file 這樣一個路徑。但是從操作系統的角度來看,這僅僅是提供給用戶的可視性文件系統,具體的實現細節(比如文件的物理結構和邏輯結構)它已經隱藏起來。需要注意的是文件系統存儲在外存儲器中(nand flash等),內存中也會有相應的表明文件屬性的目錄項,用以加快操作系統訪問文件的效率。即內核中也會有FCB的內容,甚至目錄文件也會存在內存中。
根據上面的背景知識其實就可以總結出建立根文件系統的步驟,無非就是創建這些目錄和文件,然后讓內核能夠認識它們(即在內核中掛載根文件系統)。
具體步驟如下:
1、創建各個目錄和必須的文件
1.1、創建空目錄:
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/lib usr/sbin lib/modules
1.2、創建設備文件:創建Linux啟動需要的設備驅動文件:控制臺和空
#cd rootfs/dev
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3
1.3、加入配置文件:添加內核啟動的一些配置文件
???????????????? #tar etc.tar.gz
#mv etc/* .../rootfs/etc/ -rf
1.4、添加內核模塊:
#cd .../linux
#make modules ARCH=arm CROSS_COMPILE=arm-linux-
#make modules_install ARCH=arm INSTALL_MOD_PATH=.../rootfs
?? 1.5、編譯/安裝busybox:使用busybox添加常用的命令如cd、ls、date等等
#make menuconfig
#make
#make install
2、掛載根文件系統:事實上掛載根文件系統就是完成指明根文件系統放在何處、操作系統如何使用文件系 統的目錄文件等等工作。這里介紹一個基于內存的掛載方式,即根文件系統在編譯后直接整合在內核代碼中,隨著代碼被加載到內存中,內核啟動過程中可以直接使用文件系統。initramfs文件系統的制作:
2.1、#cd? .../rootfs/
#ln -s ./bin/busybox init
???????????2.2、 配置內核,讓內核知道文件系統的掛載方式是initramfs。
???????????2.3、編譯內核
? 2.4、設置uboot參數:
setenv bootargs noinitrd console=ttySAC0,115200
完成上面的工作就可以制作成一個擁有initramfs 文件系統的完整的Linux系統。
至此一個完整的Linux系統就已經能夠在mini2440中運行,接下來就可以在其上進行驅動或者應用開發。
?
總結
以上是生活随笔為你收集整理的ARM开发板系统移植-----rootfs的制作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dropout技术之随机神经元与随机深度
- 下一篇: 元认知是认知的监督体系