实验辅助四:添加一个文件系统
Saturday,OS_TA
December15,2009
1
Contents
1文档定位3
2运行环境3 3准备工作3 4实验说明3
5操作步骤4
5.1创建基于ext2的新文件系统satext2 (4)
5.1.1明确我们要修改哪些内容 (4)
5.1.2复制源文件 (4)
5.1.3修改源文件的内容 (5)
5.1.4修改编译选项 (9)
5.1.5Something More (11)
5.1.6重新编译内核 (15)
5.2修改satext2文件系统的magic number (15)
5.2.1修改magic number (15)
5.2.2一个小程序 (16)
5.2.3简单的测试 (16)
5.3剪裁satext2文件系统的mknod函数 (16)
5.3.1修改mknod函数 (17)
5.3.2简单的测试 (17)
5.4完成mkfs.satext2功能 (17)
6结束语18
1文档定位
实验辅助主要的作用是以TA自己的经验来辅助同学们做实验,让大家少走弯路,少在Linux繁杂的内核版本和发行版本的中浪费时间,而把主要的精力集中在理解和实践操作系统本身。有关原理性的东西,在实验说明文档中已有详细的介绍。如果大家有关原理性的问题,请参考实验说明文档。在实验辅助文档中,我们主要讲实验步骤,帮助大家理解实验步骤,而不触及原理性的东西。TA所选的发行版是当前最流行的Ubuntu9.04。编译所有的内核代码是2.6.26(注意,这个要与2.6.26.1,2.6.26.2,等版本相区别。)
另外,这个文档也不是一份很严肃的文档。Take It Easy∼同时,也难免会有这样或者那样的问题,欢迎大家指正。请联系:Saturday
2运行环境
操作系统:Ubuntu9.04
内核版本:2.6.26
虚拟机:Sun VirtualBox3.0.4(注意不是开源版本的VirtualBox-OSE)
主系统:Fedora11
以上运行环境中最重要的是操作系统和内核版本,这两个一定要与实验辅助中保持一致。
3准备工作
完全阅读了《实验辅助三:添加系统调用》,并已经完成了实验三。
linux系统vim编辑器4实验说明
大家已经完成了实验三,那么大家对于修改linux内核代码,并重新编译内核这样一个过程并不陌生。那么,现在我们就要着手解决本学期最为复杂的实验四了。要完成整个实验的过程,我们要编译三次内核。。。恩,先不要被这个吓到。其实如果把整个过程一步一步的拆开,每一步其实都不难。且听我慢慢道来∼
我们以编译一次内核为一个小节,可以把整个实验拆为四节。如下:
1.创建基于ext2的新文件系统satext2(这个名字大家可以自己取)。要编译一次内核,
并以新内核启动。5.1
2.修改satext2的magic number,要编译第二次内核,以新内核启动。5.2
3.剪裁satext2的mknod函数操作,要编译第三次内核,以新内核启动。5.3
4.最后完成一个shell程序,完成mkfs.satext2功能。这一次不用编译内核。
5.4
除了,第一节对于内核代码有比较多的修改,难度比较大之外,后面的三节其实只需要各修改一个地方,所以总的来说,这是一个“虎头蛇尾”的实验,大家不用被它的硕大的头给吓到,完成了第一节内容,后面几节就基本上可以用naive来形容了∼那么,废话少说,我们按照这四节的顺序来介绍整个的实验过程。
5操作步骤
5.1创建基于ext2的新文件系统satext2
5.1.1明确我们要修改哪些内容
首先,要明确的问题是,我们需要修改哪些方面的内容。大体来说,分为这么几个方面。
1.我们所创建的satext2文件系统,实际上是完全基于ext2文件系统的。而ext2相关的
源文件,大部分在文件夹fs/ext2下。satext2文件系统的实现,实际上是通过复制和修改ext2源文件来完成的。所以,我们的第一步就是要复制ext2相关的源文件。5.1.2
2.即使satext2有了和ext2同样的源文件之后,还必须修改源文件的内容,具体的说就是
让代码里面的所有的ext2和EXT2换成satext2和SATEXT2。5.1.3
3.修改编译选项,使得我们新添加的文件系统在make menuconfig中显示出来。5.1.4
4.Something More
5.1.5
5.1.2复制源文件
在目录linux/fs/ext2下,基本上都是ext2文件系统所需要的源文件,另外,在include/ linux下也有两个ext2相关的.h,分别是ext2_fs.h和ext2_fs_sb.h。那么总结下,跟ext2相关的文件列举如下:
fs/ext2/balloc.c
fs/ext2/bitmap.c
fs/ext2/dir.c
...
/*该文件夹(fs/ext2)下所有内容*/
include/linux/ext2_fs.h
include/linux/ext2_fs_sb.h
Figure1:fs/ext2下面的内容
截图如Figure1:
通过如下命令来,完成整个的源代码复制工作。
cd fs
cp-R ext2satext2
cd../include/linux
cp ext2_fs.h satext2_fs.h
cp ext2_fs_sb.h satext2_fs_sb.h
截图如Figure2:
Figure2:fs/satext2下面的内容
这样我们就完成了第一步工作,源代码的复制。
5.1.3修改源文件的内容
第二步的主要任务是,我们要把刚刚复制了的源文件里面的所有的ext2替换成satext2。这样才能够使得修改过的源文件能够通过编译,主要分为两个步骤。
1.修改fs/satext2文件夹下面的所有源文件.
这个部分的工作通过一个脚本来完成,如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。