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

一、移植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文件系统映象文件

猜你喜欢

转载自blog.csdn.net/qq_38677310/article/details/82941329