一、移植YAFFS文件系统
1)YAFFS文件系统的介绍
①YAFFS(yet another flash file system)是一种类似于JFFS / JFFS2,专门为NAND Flash设计的嵌入式文件系统,适用于大 容量的存储设备
②日志结构的文件系统,提供了耗损平衡和掉电保护
③与JFFS相比,减少了一些功能,因此速度更快,占用内存更少
④实现错误检测和坏块处理,提高加载速度
⑤可移植性强
⑥一般而言,在Nor Flash上使用JFFS2文件系统,在NAND Flash上使用YAFFS文件系统
2)YAFFS文件系统的移植
①代码下载网址:
http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi
②移植YAFFS2两步骤:
A、将YAFFS2代码加入内核
通过YAFFS2目录下的脚本文件patch-ker.sh给内核打补丁:
$ cd ............/yaffs2
$ ./patch-ker.sh c .............../linux-2.6.22.6
B、配置、编译内核
内核配置界面:
File system --->
Miscellaeous filesystem ---->
<*> YAFFS2 file system support
二、构建Linux根文件系统
1)Linux文件系统概述
①LInux是以树状结构管理所有的目录、文件,其他分区挂载在某个目录上,这个目录被称为挂载点后安装点(mount point), 然后就可以通过这个目录来访问这个分区上的文件
②在构建文件系统时,建议遵循FHS标准(Filesystem Hierarchy Standard,文件系统层次标准),FHS文档可以在
http://www.pathname.com/fhs下载
③Linux根文件系统结构
④各目录的作用:
- /bin目录:存放所有用户都可以使用的、基本的命令
- /sbin目录:基本存放系统命令(仅管理员能使用)
- /dev目录:存放设备文件
- /etc目录:存放各种配置文件
- /lib目录:存放共享库和可加载模块(驱动模块)
- /home目录:用户目录
- /root目录:根用户目录
- /usr目录:存放共享、只读程序和数据
- /var目录:存放可变的数据
- /proc目录:空目录,虚拟文件系统
- /mnt目录:用于临时连接某个文件系统的连接点
- tmp目录:用于临时存放文件
2)LInux文件属性介绍
①Linux文件类型:
②使用“ls -lih”,列出文件信息
228883 -rw-r--r-- 2 root root 6 sep 27 22:10 readme.txt
字段 1 2 3 4 5 6 7 8
A、字段1:文件的索引节点inode,存放文件上述信息,比如大小、属主、权限等
B、字段2:文件种类和权限
文件拥有权限 文件群组权限 其他用户权限
-
r
w
x
r
-
-
r
-
-
文件类型:
①“-”:普通文件
②“d”:目录
③“c”:字符设备
④“b”:块设备
⑤“p”:FIFO管道
⑥“l”:软连接
⑦“s”:套接字(socket)
每组权限由rwx组成,表示可读、可写、可执行
如果某一位被设为“-”,则代表没有相应的权限
字段3:硬件连接个数
字段4:文件拥有者
字段5:所属群组
字段6:文件或目录大小 对于设备文件,表示主设备号
字段7:最后访问或修改时间 对于设备文件,表示次设备号
字段8:文件/目录名
3)移植Busybox
①Busybox概述:
A、利用Busybox来创建/bin /sbin等目录下的可执行文件
B、官网http://www.busybox.net
②init进程介绍及用户程序启动介绍:
A、init进程是由内核启动的(也是唯一的一个)用户进程,它根据配置文件决定启动那些程序
B、Linux系统中的两种init程序:BSD init 和 System V init
C、在嵌入式领域,通常用Busybox集成的init程序
4)使用glibc库(交叉编译工具)
①静态库文件 .a :编译静态程序时会连接它们
②动态库文件 .so :编译时会用到这些文件,但不会连接它们,运行时才连接
5)构建根文件系统
①构建etc目录
②构建dev目录
③构建其他目录:proc、mnt、tmp、sys、root等
④制作yaffs文件系统映象文件