嵌入式Linux开发——(十五)移植YAFFS文件系统

2019-07-12 20:36发布

一、移植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根文件系统结构                   ④各目录的作用:
  1. /bin目录:存放所有用户都可以使用的、基本的命令
  2. /sbin目录:基本存放系统命令(仅管理员能使用)
  3. /dev目录:存放设备文件
  4. /etc目录:存放各种配置文件
  5. /lib目录:存放共享库和可加载模块(驱动模块)
  6. /home目录:用户目录
  7. /root目录:根用户目录
  8. /usr目录:存放共享、只读程序和数据
  9. /var目录:存放可变的数据
  10. /proc目录:空目录,虚拟文件系统
  11. /mnt目录:用于临时连接某个文件系统的连接点
  12. 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文件系统映象文件