您的位置:首页 > 其它

30天自制操作系统中edimg的含义

2017-04-29 22:17 246 查看
在学习30天自制操作系统时,遇到一个问题就是:

$(EDIMG)   imgin:../z_tools/fdimg0at.tek \
wbinimg src:ipl.bin len:512 from:0 to:0 \
copy from:haribote.sys to:@: \
imgout:haribote.img

书上说是制作镜像文件,但是没有非常清楚的说明白。

弄清楚这个问题,首先需要将FAT12文件系统弄清楚,

FAT12文件系统分为四个部分,【引导扇区】、【FAT文件分配表1和2】、【根目录区】、【用户数据区】

当设置最大的根目录为224时,其地址分别为:

0x0000 、0x0200 、0x1400、0x2600 、0x4200

也就是是说根目录的地址是0x2600

而实际文件存放数据的地址为0x4200

当存储一个文件时,实际上修改了三个地方的数据,【FAT文件分配表1和2】、【根目录区】、【用户数据区】

他们的含义可以从目录查看:
http://blog.sina.com.cn/s/blog_3edcf6b80100crz1.html
而根据实际的二进制文件也可以证实这点.

首先查看最后

0x4200的地址的数据,

该数据就是外部文件haribote.sys文件实际经过nask.exe 转换为二进制数据后的数据

而查看地址0x2600的数据

该数据首先是haribotesys的大写,没有点,接着是一段乱码,总共32个字节,至于原因可以从上文所给的链接

中找到。

再看FAT文件分配表1,

最开头的三个字节固定,F0 FF FF

接着就是文件所在的簇了,FAT12 (512个字节是一个簇)

其文件所在的实际地址为:(33+(N-3))*512  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息