文件系统开发

文件系统说明


Linux 文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有 Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。

在 Linux 中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上。一套 Linux 系统支持若干物理盘,每个物理盘可定义一个或者多个文件系统,类比于微机磁盘分区。每个文件系统由逻辑块的序列组成,一个逻辑盘空间一般划分为几个用途各不相同的部分,即引导块、超级块、inode 区以及数据区等。

  • 引导块:在文件系统的开头,通常为一个扇区,其中存放引导程序,用于读入并启动操作系统;

  • 超级块:用于记录文件系统的管理信息。特定的文件系统定义了特定的超级块;

  • inode 区(索引节点):一个文件或目录占据一个索引节点。第一个索引节点是该文件系统的根节点。利用根节点,可以把一个文件系统挂在另一个文件系统的非叶节点上;

  • 数据区:用于存放文件数据或者管理数据;

SquashFS 文件系统


在当前的嵌入式操作系统开发中,Linux 操作系统通常被压缩成 Image 后存放在 Flash 设备中。在系统启动过程中,这些 Image 被直接挂载到根文件系统,然而这时的根文件系统是只读的,用户不能在这个文件系统中进行任何写的操作。如果把 Image 解压后直接拷贝到内存中,也可以实现写的功能,但是嵌入式系统一直存在内存大小方面的限制,所以将整个 Linux 系统拷入内存是不可取的。

SquashFS 是 Linux 下的一种只读压缩文件系统类型。它使用 zlib/lzo/xz 等压缩算法来压缩文件,节点及目录。SquashFS 文件系统内的节点非常小巧并且所有的数据块都排列紧凑,通过这种方式来降低数据存储开销。数据块大小可以取在 4KB 到 1MB,但默认大小为 128KB。

SquashFS 为通用只读文件系统所用,常用来保存归档文件(如 .tar.gz 文件等),还有用于存储空间受限的系统,更有甚者,嵌入式设备中用于恢复出厂设置的只读分区来用。

文件系统文件说明


目录 备注
bin 存放最常用二进制可执行命令
boot 启动 Linux 的核心文件
dev 设备文件
etc 系统管理和配置文件
etc/rc.d 启动的配置文件和脚本
home 用户主目录
lib 系统最基本的动态链接共享库
log 存放日志文件
lost+found 目录平时是空的,系统非正常关机而留下“无家可归”的文件
media 媒体文件
mnt 一般是空的,用来临时挂载别的文件系统
proc 虚拟的目录,是系统内存的映射
sbin 系统管理员命令存放目录
tmp 公用的临时文件存储点
usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录
var 某些大文件的溢出区

生成 SquashFS 文件系统


生成 SquashFS 文件系统也是十分简单的一件事情,需要完成以下步骤:

  1. 下载项目所需要的文件系统;
  2. 需要先安装 mksquashfs 所需工具,使用 apt-get 命令,最后生成 SquashFS 文件系统的命令:mksquashfs (文件系统目录) (生成的文件名).squashfs

注意:需要下载的文件链接,都在数字链路系统开发目录有介绍。

results matching ""

    No results matching ""