文档介绍:添加一个文件系统
实验目的:
文件系统是操作系统中最直观的部分,因为用户可以通过文件直接地和操作系统交
互,操作系统也必须为计算机提供数据计算、数据存储的功能。本实验通过添加一个文件系
统,进一步理解 Linux 的文件系统及其实现。
实验内容:
添加一个类似于 ext2 的自定义文件系统 myext2。
实验提示:
本章的内容是讲解文件系统,实验自然也与文件系统相关。Linux 支持那么多文件系统,
它是怎么支持的,我们已经知道了,我们还知道了具体的文件系统 ext2 是怎么实现的,但
是那些文件系统是怎么添加上去的呢?你是不是觉得手痒痒,想自己亲自实践一次,在 Linux
中添加一个文件系统呢?
一、问题描述
本实验的内容是要添加一个类似于 ext2 的自定义文件系统 myext2。我们对 myext2 文件
系统的描述如下:
1、myext2 文件系统的物理格式定义与 ext2 基本一致,除了 myext2 的 magic number 是
0x6666,而 ext2 的 magic number 是 0xEF53。
2、myext2 是 ext2 的定制版本,它只支持原来 ext2 文件系统的部分操作,以及修改了
部分操作。
文件系统的定义和操作是完成了,但不要忘了,这样的一个文件系统如何去创建呢?我
们最后还要提供一个创建 myext2 文件系统的工具:。
二、解决方法
如何实现上面提出来的要求呢?首先从添加一个完全和 ext2 相同的 myext2 开始,然后
再对 myext2 进行雕琢,逐步达到上一小节提到的要求:先修改 magic number,再修改 Linux
对 myext2 文件系统的一些操作。最后是创建文件系统的工具 的完成。
1. 添加一个和 ext2 完全相同的文件系统 myext2
要添加一个与 ext2 完全相同的文件系统 myext2,首先是确定实现 ext2 文件系统的内核
源码是由哪些文件组成。Linux 源代码结构很清楚地告诉我们:fs/ext2 目录下的所有文件是
属于 ext2 文件系统的。再检查一下这些文件所包含的头文件,可以初步总结出来 Linux 源
代码中属于 ext2 文件系统的有:
fs/ext2/
fs/ext2/
fs/ext2/
fs/ext2/
fs/ext2/
fs/ext2/
fs/ext2/
fs/ext2/
fs/ext2/
fs/ext2/
fs/ext2/
include/linux/
include/linux/
include/linux/
有了这些初步的信息后(当然这些信息是否正确,还需后面的检验),我们接下来开始
添加 myext2 文件系统的源代码到 Linux 源代码。
由于本节工作是要克隆 ext2 文件系统到 myext2 文件系统,所以我们需要把 ext2 部分的
源代码克隆到 myext2 去,即复制一份以上所列的 ext2 源代码文件给 myext2 用。按照 Linux
源代码的组织结构,我们把 myext2 文件系统的源代码存放到 fs/myext2 下,头文件放到
include/linux 下。在 Linux 的 shell 下,执行如下操作:
#cd /usr/src/linux
#cd fs
#cp –R ext2 myext2
#cd ../include/linux
#cp
#cp
#cp
这样就完成了克隆文件系统工作的第一步——源代码复制。对于克隆文件系统来说,这
样当然还远远不够,因为文件里面的数据结构名、函数名、以及相关的一些宏等内容还没有
根据 myext2 改掉,连编译都通不过。
下面我们开始克隆文件系统的第二步:修改上面添加的文件的内容。为了简单起见,我
们做了一个最简单的替换:将原来*EXT2*替换成*MYEXT2*;将原来的*ext2*替换成
*myext2*。例如,
---linux/include/linux/