第八章 嵌入式Linux根文件系统的建立

  • 格式:ppt
  • 大小:400.00 KB
  • 文档页数:42

下载文档原格式

  / 42
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

主修订版本的符号链接
主修订版本的编号方式与实际的glibc版号不同。以glibc 2 2 3实际的 共享C链接库libc-2.2.3.so为例,它的主修订版本编号为6。相对而言, libdl-2.2.3. so的主修订版本编号为2。主修订版本的符号链接的名称 格式为libLIBRARY_NAME.so.MAJOR_REVISION _VERSION,其中 MAJOR_REVISION_VERSION是链接库的主修订版本编号。以实际 的C链接库为例,其符号链接的名称为libc.so.6。libdl则是libdl.so.2。
这与它在系统中所扮演的角色有很大的关系。如果这是用户和 系统管理员必备的二进制文件,就会放在/bin。如果这是系统 管理员必备、但是一般用户根本不会用到的二进制工件,就会 放在/sbin。相对而言,如果不是用户必备的二进制文件,多半
会放在/usr/bin;如果不是系统管理必备的工具,多半会放在
/usr/sbin。
Linux文件系统将文件索引节点号和文件名同时保存在目录中。所以, 目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录 中每一对文件名称和索引节点号称为一个连接。
对于一个文件来说有唯一的索引节点号与之对应,对于一个索引节点 号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可 以通过不同的路径去访问它。
7.4.2、常见的嵌入式文件系统(4)
Cramfs:
Cramfs是Linux的创始人 Linus Torvalds参与开发的一种只读的压缩
文件系统。它也基于MTD驱动程序。
在cramfs文件系统中,每一页(4KB)被单独压缩,可以随机页访问,
其压缩比高达2:1,为嵌入式系统节省大量的Flash存储空间,使系统可 通过更低容量的FLASH存储相同的文件,从而降低系统成本。
7.1、文件系统简介(1)
Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、 jffs2、YAFFS、ramfs、romfs和nfs等,为了对各类文件系统进行统 一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为 各类文件系统提供一个统一的操作界面和应用编程接口。
7.3、根文件系统引导过程(1)
一般的系统先启动的是/sbin/init,而如同原始的主流init, BusyBox也可以处理系统的启动工作。BusyBox的init尤其 适合在嵌入式系统中使用,因为它可以为嵌入式系统提供
所需要的大部分init功能,却不会让嵌入式系统被System
V init的额外特性拖累。 因为/sbin/init是/bin/busybox的符号链接,所以BusyBox是 目标板系统上执行的第一应用程序。当BusyBox知道调用 它的目的是要执行init,它会立即跳转到init进程。
和/root)可以省略。
调整根文件系统的时候,我们甚至可以进一步移除/tmp和/var, 不过这么做可能会危害到某些软件的运行。因此不建议采用这 种过于简化的做法。
7.6、根文件系统的基本结构(2)
在根文件系统上,存放二进制文件的目录主要有四个/bin、
/sbin、/usr/bin和/usr/sbin。二进制文件要放在其中哪个目录,
Ramfs/tmpfs文件系统把所有的文件都放在RAM中,所以读/写操作发生在
RAM中,可以用ramfs/tmpfs来存储一些临时性或经常要修改的数据,例如 /tmp和/var目录,这样既避免了对Flash存储器的读写损耗,也提高了数据读 写速度。
Ramfs/tmpfs相对于传统的Ramdisk的不同之处主要在于:不能格式化,文件
系统大小可随所含文件内容大小变化。
Tmpfs的一个缺点是当系统重新引导时会丢失所有数据。
7.5、NFS环境的建立和使用
设置共享目录 建立共享目录 启动和停止nfs 服务 nfs的使用----通过NFS开发应用程序 nfs的使用----通过NFS 启动系统
7.6、根文件系统的基本结构(1)
/bin、/dev、/etc、/lib、/proc、/sbin和/usr,都是不可或缺的。 为多用户提供可扩展环境的所有目录(例如/home、/mnt、/opt
的内核为嵌入式系统开发的文件系统。JFFS2是RedHat公司基于JFFS 开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发 的嵌入式文件系统,所以JFFS2也可以用在Linux, uCLinux中。
Jffs2: 日志闪存文件系统版本2
主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据
问文件系统的API,用户可以不使用Linux中的MTD与VFS,直接对文件 系统操作。
yaffs与yaffs2的主要区别在于,前者仅支持小页(512 Bytes) NAND
闪存,后者则可支持大页(2KB) NAND闪存。同时,yaffs2在内存空间 占用、垃圾回收速度、读/写速度等方面均有大幅提升。
7.4.2 嵌入式文件系统种类(1)
基于FLASH的文件系统
jffs2
Yaffs/Yaffs2 Cramfs Romfs 基于RAM的文件系统 Ramdisk ramfs/tmpfs

网络文件系统NFS
7.4.2 常见的嵌入式文件系统(2)
jffs2 :
JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0
Cramfs文件系统以压缩方式存储,在运行时解压缩,所以不支持应用
程序以XIP方式运行,所有的应用程序要求被拷到RAM里去运行。
7.4.2、常见的嵌入式文件系统(5)
Romfs:
传统型的Romfs文件系统是一种简单的、紧凑的、只读的
文件系统,不支持动态擦写保存,按顺序存放数据,因而
支持应用程序以XIP(eXecute In Place,片内运行)方式
系统中还包括了许多的应用程序bin目录等,任何包括这
些Linux系统启动所必须的文件都可以成为根文件系统。
7.2.2、基本根文件系统目录构成解析
目录名称 /bin /boot /dev /etc /home /lib /media /mnt /opt /proc /root /sbin /src /sys /var 存放二进制程序,如:ls,cp 存放系统启动的一些程序 存放设备文件 存放系统配置文件,如:group,profile 用户根目录 存放库文件 媒介的挂载点,如:闪存 该目录用来为其他文件系统提供安装点 不随发行版本一起交付的程序 proc文件系统 超级用户根目录 存放超级用户运行的二进制文件 存放一些服务的目录 sys文件系统的目录 存放经常变化的文件,如临时文件等 含义
7.6、根文件系统的基本结构(3)
至于链接库的摆放位置,也是同样的道理。系统引导以及
执行最基本命令需要的链接库会摆在/lib。所有其他的链
接库则会摆在/usr/lib。通常,套件安装时,会在/usr/lib中 产生子目录,以便摆放它自己的链接库。 以Perl 5.x为例,它会产生/usr/lib/perl5目录,里自摆放的 都是与Perl有关的链接库和模块。
在Linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文
件系统一起载入内存。
7.4.2、常见的嵌入式文件系统(7)
ramfs/tmpfs:
Ramfs是Linus Torvalds开发的一种基于内存的文件系统,工作于虚拟文件系
统(VFS)层,不能格式化,可以创建多个,在创建时可以指定其最大能使用的 内存大小。
Linux下的文件系统结构如下:
7.1、文件系统简介(2)
不同的文件系统类型有不同的特点,因而根据存储设备的 硬件特性、系统需求等有不同的应用场合。
在嵌入式Linux应用中,主要的存储设备为RAM(DRAM,
SDRAM)和ROM(常采用FLASH存储器),常用的基于存储 设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。
运行,在系统运行时,节省RAM空间。uClinux系统通常采 用Romfs文件系统。
7.4.2 、常见的嵌入式文件系统(6)
Ramdisk:
Ramdisk是将一部分固定大小的内存当作分区来使用。它并非一个实
际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可
以作为根文件系统。将一些经常被访问而又不会更改的文件(如只读 的根文件系统)通过Ramdisk放在内存中,可以明显地提高系统的性能。
7.3、根文件系统引导过程(2)

BusyBox的init进程会依次进行以下工作: 为init设置信号处理进程。 初始化控制台。 剖析inittab文件、/etc/inittab文件。 执行系统初始化的命令行。 BusyBox在缺省情况下会使用/etc/init.d/rcS命令行。 执行所有会导致init暂停的inittab命令。 执行所有仅执行一次的inittab命令。 一旦完成以上工作,init进程便会循环执行以下工作: 执行所有终止时必须重新启动的inittab命令。
7.2、 嵌入式Linux根文件系统
7.2.1 、根文件系统简介 7.2.2 、根文件系统目录构成解析
Biblioteka Baidu.2.1、根文件系统简介
简单的来说,根文件系统就是一种目录结构,那么根文件系
统和普通的文件系统有什么区呢?其实根文件系统就是要 包括Linux启动时所必须的目录和关键性的文件,例如 Linux启动时都需要有init目录下的相关文件,在Linux挂载 分区时Linux一定会找/etc/fstab这个挂载文件等,根文件
执行所有终止时必须重新启动但启动前必须先询问过用户的
inittab命令。
7.4、嵌入式文件系统
7.4.1、嵌入式文件系统简介 7.4.2、嵌入式文件系统的种类
7.4.1、嵌入式文件系统简介
Linux文件系统使用索引节点来记录文件信息,作用像windows的文件 分配表。
索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、 权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索 引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素 对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中 的索引号,称为索引节点号。
文件系统。与jffs2相比,它减少了一些功能(例如不支持数据压缩), 所以速度更快,挂载时间很短,对内存的占用较小。另外,它还是跨 平台的文件系统,除了Linux和eCos,还支持WinCE, pSOS和ThreadX 等。
yaffs/yaffs2自带NAND芯片的驱动,并且为嵌入式系统提供了直接访
第7章 嵌入式Linux根文件系统的建立
本章目标
介绍LINUX文件系统
什么是根文件系统;
根文件系统的目录构成;
根文件系统内容组成;
BusyBox的作用以及如何编译生成它?
本章结构
文件系统简介 嵌入式Linux根文件系统 嵌入式Linux系统的建立
根文件系统引导过程
嵌入式文件系统 NFS环境建立与使用
压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保 护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,
因为垃圾收集的关系而使jffs2的运行速度大大放慢。
7.4.2、常见的嵌入式文件系统(3)
yaffs/yaffs2:
yaffs/yaffs2是专为嵌入式系统使用NAND型闪存而设计的一种日志型
7.7、链接库(1)
如何在目标板的根文件系统上安装链接库,让我 们开发的应用程序使用他们。 你可以在交叉编译工具建立期间列出 /usr/local/arm/3.4.1/arm-linux/lib目录的内容检查 它所安装的所有链接库。
7.7、链接库(2)
实际的共享链接库 这类文件的文件名格式为libLIBRARY_NAME-GLIBC_VERSION.so 其中。LBRARY_NAME是链接库的名称,GLIBC_VERSION是你使 用的glibc套件的版本编号。例如,glibc 2.2.3的数学链接库的名称为 libm-2.2.3.so。