利用io端口读ext2文件系统

    为了项目的需要,最近在研究怎样在系统启动时读ext2文件系统。关于文件系统的代码都很大,看不懂,我懒得看。我只要能够读文件就行,而且对效率要求不高。努力奋斗了几天终于实现了在没有任何库支持的情况下读ext2文件系统了。
    读文件首先是要读磁盘,在网上查,最后发现有两种解决方案:一种是用bios int 0x13读磁盘,另一种是用io端口。因为我的启动代码是通过grub拉起来的,因此代码启动之后就在保护模式下运行。我不太确定怎样保护模式下还能用bios int 0x13,但确实能用,并且grub就是这么用的。后来发现在grub中摘这段代码比较费事,我就选择利用io端口读磁盘了。利用io端口读磁盘还是比较容易的,只要知道相关协议就行。^_^,找资料可是一个费事的工作,这里是我找到的关于利用io端口读磁盘的资料:
http://forum.sysinternals.com/forum_posts.asp?TID=13113
http://www.cnblogs.com/huqingyu/archive/2005/03/22/123360.html
     解决了读磁盘的问题,接下来就是如何解析ext2文件系统了。我不知道ext2文件系统是不是很久都没有人研究了,资料很难找,而且找到的资料描述的也不是很清楚,跟老师上课用的课件的差不多。没办法,只好硬着头皮一步一步的查。最后我还是没有读分区表,而是直接在磁盘文件中找到了第一个group的位置,在此基础之上实现了读ext2文件系统。下面是还比较好的一份资料,剩下的就看grub或者Linux的代码了:
    这份代码最大的缺陷是没有通过分区表定位group0,否则就是一个相对完整的Demo了,希望以后有时间可以加上。我已经将代码上传,希望对在这方面做工作的朋友能有所帮助:
http://download.csdn.net/source/744392
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值