2022年Linux添加文件系统 .pdf
《2022年Linux添加文件系统 .pdf》由会员分享,可在线阅读,更多相关《2022年Linux添加文件系统 .pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验辅助四:添加一个文件系统Saturday, OS_TADecember15, 20091名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 19 页 - - - - - - - - - Contents1文档定位32运行环境33准备工作34实验说明35操作步骤45.1创建基于 ext2 的新文件系统satext2. . . . . . . . . . . . . . . . . . . . . .45.1.1明确我们要修改哪些内容. . . . . . . . . . .
2、 . . . . . . . . . . . . .45.1.2复制源文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45.1.3修改源文件的内容. . . . . . . . . . . . . . . . . . . . . . . . . . . .55.1.4修改编译选项. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95.1.5SomethingMore. . . . . . . . . . . . . . . . . . . .
3、 . . . . . . . .115.1.6重新编译内核. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155.2修改 satext2文件系统的magicnumber. . . . . . . . . . . . . . . . . . .155.2.1修改 magicnumber. . . . . . . . . . . . . . . . . . . . . . . . . .155.2.2一个小程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4、. . .165.2.3简单的测试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165.3剪裁 satext2文件系统的mknod函数. . . . . . . . . . . . . . . . . . . . .165.3.1修改 mknod函数. . . . . . . . . . . . . . . . . . . . . . . . . . . .175.3.2简单的测试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175.4
5、完成 mkfs.satext2功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176结束语18名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 19 页 - - - - - - - - - 1文档定位实验辅助主要的作用是以TA 自己的经验来辅助同学们做实验,让大家少走弯路,少在Linux繁杂的内核版本和发行版本的中浪费时间,而把主要的精力集中在理解和实践操作系统本身。有关原理性的东西,在实验说明文档中已
6、有详细的介绍。如果大家有关原理性的问题, 请参考实验说明文档。在实验辅助文档中,我们主要讲实验步骤,帮助大家理解实验步骤,而不触及原理性的东西。TA 所选的发行版是当前最流行的Ubuntu9.04。编译所有的内核代码是 2.6.26 (注意,这个要与 2.6.26.1, 2.6.26.2, 等版本相区别。 )另外,这个文档也不是一份很严肃的文档。TakeIt Easy 同时,也难免会有这样或者那样的问题,欢迎大家指正。请联系:Saturday2运行环境操作系统:Ubuntu9.04内核版本:2.6.26虚拟机:SunVirtualBox3.0.4(注意不是开源版本的VirtualBox-OSE
7、)主系统:Fedora11以上运行环境中最重要的是操作系统和内核版本,这两个一定要与实验辅助中保持一致。3准备工作完全阅读了 实验辅助三: 添加系统调用 , 并已经完成了实验三。4实验说明大家已经完成了实验三,那么大家对于修改linux内核代码,并重新编译内核这样一个过程并不陌生。那么, 现在我们就要着手解决本学期最为复杂的实验四了。要完成整个实验的过程, 我们要编译三次内核。 。 。恩, 先不要被这个吓到。其实如果把整个过程一步一步的拆开,每一步其实都不难。且听我慢慢道来我们以编译一次内核为一个小节,可以把整个实验拆为四节。如下:1. 创建基于ext2 的新文件系统satext2 (这个名字
8、大家可以自己取)。要编译一次内核,并以新内核启动。5.12. 修改 satext2的 magicnumber, 要编译第二次内核, 以新内核启动。5.2名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 19 页 - - - - - - - - - 3. 剪裁 satext2的 mknod函数操作,要编译第三次内核, 以新内核启动。5.34. 最后完成一个shell 程序,完成 mkfs.satext2功能。这一次不用编译内核。5.4除了,第一节对于内核代码有比较多的修改,难
9、度比较大之外, 后面的三节其实只需要各修改一个地方,所以总的来说, 这是一个“虎头蛇尾” 的实验,大家不用被它的硕大的头给吓到,完成了第一节内容, 后面几节就基本上可以用naive 来形容了那么,废话少说,我们按照这四节的顺序来介绍整个的实验过程。5操作步骤5.1创建基于 ext2的新文件系统satext25.1.1明确我们要修改哪些内容首先,要明确的问题是, 我们需要修改哪些方面的内容。大体来说,分为这么几个方面。1. 我们所创建的satext2文件系统,实际上是完全基于ext2 文件系统的。而ext2 相关的源文件,大部分在文件夹fs/ext2下。 satext2文件系统的实现, 实际上是
10、通过复制和修改 ext2 源文件来完成的。所以,我们的第一步就是要复制ext2 相关的源文件。5.1.22. 即使 satext2有了和 ext2 同样的源文件之后, 还必须修改源文件的内容,具体的说就是让代码里面的所有的ext2 和 EXT2 换成 satext2和 SATEXT2。5.1.33. 修改编译选项, 使得我们新添加的文件系统在makemenucon?g中显示出来。5.1.44. SomethingMore5.1.55.1.2复制源文件在目录 linux/fs/ext2下, 基本上都是ext2文件系统所需要的源文件,另外,在 include/linux下也有两个ext2 相关的
11、.h , 分别是 ext2_fs.h和 ext2_fs_sb.h。那么总结下, 跟 ext2相关的文件列举如下:fs/ext2/balloc.cfs/ext2/bitmap.cfs/ext2/dir.c./*该文件夹 (fs/ext2)下所有内容*/include/linux/ext2_fs.hinclude/linux/ext2_fs_sb.h名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 19 页 - - - - - - - - - Figure1: fs/ext2下
12、面的内容截图如 Figure1 :通过如下命令来, 完成整个的源代码复制工作。cdfscp-Rext2satext2cd./include/linuxcpext2_fs.hsatext2_fs.hcpext2_fs_sb.hsatext2_fs_sb.h截图如 Figure2 :Figure2: fs/satext2下面的内容这样我们就完成了第一步工作,源代码的复制。5.1.3修改源文件的内容第二步的主要任务是,我们要把刚刚复制了的源文件里面的所有的ext2 替换成 satext2。这样才能够使得修改过的源文件能够通过编译,主要分为两个步骤。1. 修改 fs/satext2文件夹下面的所有源文
13、件.这个部分的工作通过一个脚本来完成,如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 19 页 - - - - - - - - - #!/bin/shSCRIPT=substitute.shforfin*;doif$f=$SCRIPT;thenechoskip$fcontinuefiecho-nsubstituteext2tomyext2in$f.cat$f|seds/ext2/myext2/g$f_tmpmv $f_tmp$fechodoneecho-nsubst
14、ituteEXT2toMYEXT2 in$f.cat$f|seds/EXT2/MYEXT2/g$f_tmpmv $f_tmp$fechodonedone截图如 Figure3 : 把这个脚本命名为substitute.sh, 放在 fs/satext2下面,加上可执行权限 chmod+x , 运行之后就可以把当前目录里所有文件里面的“ext2 ”和“EXT2 ” 都替换成对应的 “satext2”和 “SATEXT2” 。截图如 Figure4:2. 修改 include/linux下面的两个 .h 文件简单的说, 就是通过文本编辑器把两个.h 里面的内容替换。在这里通过vim 的功能来实现。
15、我们以satext2_fs.h为例,来说明这个问题:cdinclude/linuxvimsatext2_fs.h/*进入到 vim 里面之后输入如下内容*/:%s/ext2/satext2/g:%s/EXT2/SATEXT2/g这样就完成了include/linux下面的 satext2_fs.h的文件替换工作。截图如 Figure5:同一个目录下面的satext2_fs_sb.h用同样的方法就可以完成替换了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 19 页 -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Linux添加文件系统 2022 Linux 添加 文件系统
限制150内