使用busy-box製作Yaffs2根文件系統
內核支持yaffs2文件系統
下載yaffs2源碼cvs-root.tar.gz,解壓,進入yaffs2目錄:
給內核打上yaffs2文件系統的補丁,執行:
#./patch-ker.shc/………/linux-2.6.32/<—這個是你的內核源碼的目錄
這時內核源碼fs目錄下多了一個yaffs2目錄,同時Makefile文件和Kconfig文件也增加了yaffs2的配置和編譯條件。
配置對yaffs2支持
這部分配置的比較多,可根據自己的需要進行配置,把不用的文件系統都去掉,下面是幾個
主要的配置:
Filesystems --->
DOS/FAT/NTFilesystems --->
<*>MSDOS fs support
<*>VFAT (Windows95) fs support
Miscellaneousfilesystems --->
<*>YAFFS2 file system support
[*]Autoselectyaffs2format
配置語言選項:
NativeLanguage support --->
(iso8859-1)Default NLS Option
<*>Codepage 437(United States, Canada)
<*>Simplified Chinese charset(CP936, GB2312)
<*>NLS ISO8859-1 (Latin 1; Western European Language)
<*>NLS UTF-8
製作根文件系統
在http://www.busybox.net/downloads/ 上選擇一個版本的busybox,這裏選擇busybox-1.12.4
的源碼;
編譯環境:ubuntu 9.04
編譯yaffs文件系統的交叉編譯器使用TQ的mkyaffs2image
關於busybox的配置主要注意:是使用動態編譯還是動態編譯
靜態編譯不需要共享庫,但如果自己寫的arm-linux程序在這個根文件系統中就不能運行
的,缺少庫的支持,但可以使用NFS,來實現主機到目標板的掛接共享庫
通常採用靜態編譯,這樣產生的文件系統比較小,當需要程序需要庫運行時才加入。
1.解壓busybox-1.12.4
tar xvfj busybox-1.12.4.tar.bz2 -C ./
指定交叉編譯器和目標體系
CROSS_COMPILE ?= arm-linux-
ARCH ?= $(arm)打開配置單只需要把靜態編譯選上,其他的默認就好
另外在linux modules配置菜單中去掉簡單加載卸載模塊選項,然後把後面的全選上。
現在編譯make;make install
出現錯誤提示如下
。。。neric/fcntl.h:140: error: redefinition of 'struct flock64'
make[1]: *** [miscutils/inotifyd.o] Error 1
make: *** [miscutils] Error 2
去挑配置單對應的miscutils/inotifyd文件編譯的條件在make
編譯成功!安裝busybox ,make install
現在新建一個root_yaffs2目錄
拷貝busybox安裝目錄下的全部文件到root_yaffs2目錄下
cp -p /opt/busybox-1.12.4/_install/* ./
2.製作Yaffs2文件系統
現在還需要構建一些目錄比如home dev etc lib mnt opt proc root tmp var sys
在原有的usr目錄下構建share,lib目錄
這裏主要配置
etc和dev目錄
etc目錄截圖如下
dev目錄需要構建console和null設備文件,用於mdev動態啓動
還需要複製交叉編譯器的常用庫
將其複製到lib/目錄下(只選擇常用的庫,不需要的可以不復制)
最後使用
mkyaffs2image root_yaffs2.bin
編譯生成根文件系統下載至NAND,重啓,能進入控制檯!
注意:要在linux控制檯顯示自己設置的主機名字 需要這樣設置
按照上面的方法修改我們的根文件系統中的命令行提示符。首先我們需要修改buxybox中配置,添加如下兩個選項:Busybox Settings --->
Busybox Library Tuning --->
[*] Username completion
[*] Fancy shell prompts
如果不選擇上面兩項,文件系統是不是別PS1這個環境變量的參數的。
創建/etc/hostname添加如下內容(我們的主機名):
xxxx
修改/etc/init.d/rcS添加如下內容(導入主機名配置文件):
/bin/hostname –F /etc/hostname
修改根文件系統中/etc/profile文件添加如下內容:
HOSTNAM=`/bin/hostname`
PS1=`[\u@\h \W]\# `
exPORT PS1 HOSTNAME