1、文件系統制作的步驟
1)通過busybox工具生成/bin /sbin /linuxrc /usr/bin /usr/sbin
2) 使用交叉編譯工具鏈,構建/lib目錄
3)創建其他空目錄
4)配置etc目錄,並初始化/dev 目錄
5)利用工具制作跟文件系統映像文件
2、busybox文件系統制作
2.1busybox源碼下載
使用的是韋東山老師所給資料busybox-1.7.0.tar.bz2版本,也可以從http://www.busybox.net/進行下載
看網站最新的有很多版本
2.2編譯安裝busybox
1)將busybox壓縮包放在/work/tools 目錄下,進入該目錄執行以下命令進行解壓縮
“tar xjf busybox-1.7.0.tar.bz2”
2)然后進入busybox-1.7.0目錄,執行“make menuconfig”,對各個選項進行配置
3)然后修改busybox的makefile
然后執行“make”命令進行編譯。
4)編譯完成后,執行“make CONFIG_PREFIX=/work/nfs_root/second_fs/ install”,我自己的文件系統都是放在了/work/nfs_root/second_fs/這個路徑里面。
此步一定要注意,不能直接執行“make install”,否則會破壞系統。
5)執行完成后,就可以看到/work/nfs_root/second_fs這個目錄里面就有了bin sbin usr lib linuxrc這樣的文件夾和文件。
3、創建其他空目錄
/lib加載庫文件的目錄
/etc 初始化所需的配置文件的目錄
/dev 初始化后存放設備文件的目錄
/proc /mnt /tmp /sys /root 系統啟動之后會用到的目錄
4、使用glibc庫構建跟文件系統
由於開發板上只需要加載器和動態庫,所以將glibc庫里的庫文件拷貝到跟文件系統的/lib目錄里面
“cd /work/nfs_root/gcc-3.4.5-glibc-2.3.6/arm-linux/lib”
“cp *.so* /work/nfs_root/second_fs/lib -d”
/*擴展*/
這樣庫文件就算是加載進去了。
5、配置/etc目錄,並初始化/dev目錄
5.1配置/etc目錄
在/etc目錄需要3個文件:/etc/inittab /etc/init.d/rcS /etc/fstab
5.1.1Inittab主要用於設備初始化內容如下所示
5.1.2rcS文件是一個腳本文件,可以添加想自動執行的命令,具體內容如下圖所示。在創建完文件之后,需要給文件添加可執行的屬性“chmod +x etc/init.d/rcS”
5.1.3fstab用來定義系統支持的文件類型,具體內容如下
5.2/dev目錄初始化
5.2.1進入work/nfs_root/second_fs/dev目錄,由於使用mdev構造/dev目錄,但是mdev是通過init進程來啟動的,所以在使用mdev構造/dev目錄之前,init進程至少要用到設備文件/dev/consle /dev/null。通過如下命令創建這兩個設備文件
“sudo mknod console c 5 1”
“sudo mknod console c 1 3”
當mdev啟動后,會自動在/dev目錄下創建各種設備文件。
6、yaffs2映像文件和jffs2映像文件的制作
6.1 yaffs2映像文件的制作
6.1.1使用工具
Yaffs源碼中有個utils目錄,進入到該目錄下面
將文件拷貝到/uer/local/bin目錄下面
Sudo cp mkyaffs2image /usr/local/bin
Sudo chmod +x /usr/local/bin/myaffs2image
/*擴展*/
6.1.2制作映像文件
進入到以下目錄“cd /work/nfs_root”(second_fs也在此根目錄下面)
“mkyaffs2image second_fs second_fs.yaffs2”
生成后的文件就可以使用了,使用DWN軟件通過USB device進行下載。
6.2jffs2映像文件制作
6.2.1先安裝zlib,解壓縮設備工具包,然后對工具包源碼編譯生成mkfs.jffs2這個工具(注意存放的目錄是工具目錄,上次自己將工具的lib文件放在了開發板根目錄下面的lib目錄里,並且進行了文件的覆蓋,導致系統文件的崩潰,現在都沒有能力進行解決)
6.2.2制作映像文件
我使用的制作指令如下,和書上的不一樣
“mkfs.jffs2 -n -s 2048 -e 128KiB -d second_fs -o second_fs.jffs2”
6.3根據不同跟文件系統類型需要在uboot啟動后,對bootargs選項進行設置。
原來bootargs原來的值為noinitrd root=/dev/mtdblock3 rootfstype=yaffs2 init=/linuxrc console=ttySAC0
設置之后對bootargs進行設置noinitrd root=/dev/nfs nfsroot=192.168.100.3:/work/nfs_root/first_fs ip=192.168.100.17:192.168.100.3:192.168.100.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0