实验5添加一个文件系统精要.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验5添加一个文件系统精要

实验5 添加一个文件系统实验目的文件系统是操作系统中最直观的部分,因为用户可以通过文件直接地和操作系统交互,操作系统也必须为用户提供数据计算、数据存储的功能。本实验通过添加一个文件系统,进一步理解Linux中的文件系统原理及其实现。???深入理解操作系统文件系统原理??学习理解Linux的VFS文件系统管理技术??学习理解Linux的ext2文件系统实现技术??设计和实现自定义文件系统?实验内容添加一个类似于ext2的自定义文件系统myext2。实验主要内容:??添加一个和ext2完全相同的文件系统myext2??修改myext2的magic number??修改文件系统操作??添加文件系统创建工具实验指导1. 问题描述本实验的内容是要添加一个类似于ext2的自定义文件系统myext2。myext2文件系统的描述如下:1、myext2文件系统的物理格式定义与ext2基本一致,除了myext2的magic number是0x6666,而ext2的magic number是0xEF53。2、myext2是ext2的定制版本,它只支持原来ext2文件系统的部分操作,以及修改了部分操作。?2. 实验步骤提示:下面的操作步骤以3.6.6版本的内核为例,2.6.15版本的内核请参照教材,其它版本内核可能会有所区别。2.1 添加一个和ext2完全相同的文件系统myext2要添加一个与ext2完全相同的文件系统myext2,首先是确定实现ext2文件系统的内核源码是由哪些文件组成。Linux源代码结构很清楚地告诉我们:fs/ext2目录下的所有文件是属于ext2文件系统的。再检查一下这些文件所包含的头文件,可以初步总结出来Linux源代码中属于ext2文件系统的有:fs/ext2/acl.cfs/ext2/acl.hfs/ext2/balloc.cfs/ext2/bitmap.cfs/ext2/dir.cfs/ext2/ext2.hfs/ext2/file.c……include/linux/ext2_fs.hinclude/linux/ext2_fs_sb.h接下来开始添加myext2文件系统的源代码到Linux源代码。把ext2部分的源代码克隆到myext2去,即复制一份以上所列的ext2源代码文件给myext2用。按照Linux源代码的组织结构,把myext2文件系统的源代码存放到fs/myext2下,头文件放到include/linux下。在Linux的shell下,执行如下操作:?#cd ~/linux-3.6.6 ?/* 内核源代码目录,假设内核源代码解压在主目录的Linux-3.6.6只目录中*/#cd fs#cp –R ext2 myext2? #cd ../include/linux#cp ext2_fs.h myext2_fs.h #cp ext2_fs_sb.h myext2_fs_sb.h //3.6.6没有此文件#cd ~/linux-3.6.6/fs/myext2#mv ext2.h myext2.h #cd ~/linux-3.6.6# cd include/asm-generic/bitops# cp ext2-atomic.h myext2-atomic.h# cp ext2-atomic-setbit.h myext2-atomic-setbit.h? //3.6.6修改此文件?这样就完成了克隆文件系统工作的第一步——源代码复制。对于克隆文件系统来说,这样当然还远远不够,因为文件里面的数据结构名、函数名、以及相关的一些宏等内容还没有根据myext2改掉,连编译都通不过。?下面开始克隆文件系统的第二步:修改上面添加的文件的内容。为了简单起见,做了一个最简单的替换:将原来“EXT2”替换成“MYEXT2”;将原来的“ext2”替换成“myext2”。对于fs/myext2下面文件中字符串的替换,也可以使用下面的脚本:#!/bin/bash?SCRIPT=substitute.sh?for f in * do if [ $f = $SCRIPT ]then??????? echo skip $f??????? continue?? ?fi???? echo -n substitute ext2 to myext2 in $f...??? cat $f | sed s/ext2/myext2/g ${f}_tmp??? mv ${f}_tmp $f??? echo done???? echo -n substitute EXT2 to MYEXT2 in $f...??? cat $f | sed s/EXT2/MYEXT2/g ${f}_tmp??? mv ${f}_tmp $f??? echo done?do

文档评论(0)

1520520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档