使用busy-box製作Yaffs2根文件系統

2011-08-07 13:59

使用busy-box製作Yaffs2根文件系統

<!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } -->

內核支持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

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