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