无忧启动论坛

标题: 入门-我的无忧启动,磁盘数据结构,分区表,MBR,fbinst [打印本页]

作者: forumuser    时间: 2010-8-29 11:13
标题: 入门-我的无忧启动,磁盘数据结构,分区表,MBR,fbinst
      最近在无忧启动论坛泡了多个小时,深感入门之艰难。为了方便如我这样的。。。。。故总结一篇入门的帖子。也请高手们有空指出错误,让后来者少走弯路。另外,现在有计算机、网络,比原来到图书馆、书店找书方便多了。需要的是善用搜索,并静下心来。。。
可以google一下以下网页文章的(部分)标题,比如:“硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区”,能得到很多。。。
以下内容多是引用先辈高人在网上发布的文章,先在此给予崇高的敬意并衷心感谢!

注:
(一)、容量计算(这里计算容量单位按计算机的1K=1024计算;厂商是按1K=1000计算的,数据用括号区别,厂商这样计算显得容量偏大,提高忽悠你的几率);1KB=1024Byte=8192Bit=8Kb,注意Byte与bit的区别,任天堂8位游戏机ROM卡的容量经常忽悠人的,呵呵!
(二)、扇区上的字节是按左边低位,右边高位的顺序排列的。多字节(Byte)的数据是低位在前,高位在后;所以在取值时,需要把字节再反一下,让高位字节在左边,低位字节在右边。
(三)、MBR是由分区程序(如Fdisk)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的。
(四)、扇区号从1开始,所以其范围是1扇区-- 63扇区,扇区的最大数是63,1个扇区容量为512Byte。

相关软件下载在2楼底部。
请各高人不吝赐教,解答一下3楼的问题(不定期更新),谢谢!



磁盘柱面、磁头、扇区(Cylinder、Head、Sector)及容量限制

http://topic.csdn.net/u/20071223/00/843143e1-6ebb-4971-bf2d-aeb763a59b29.html
这里人多,问个技术问题,关于硬盘的访问模式问题,关于LBA的问题

      硬盘的chs模式是指chs(Cylinder/Head/Sector)模式,很久以前, 硬盘的容量还非常小的时候, 人们采用与软盘类似的结构生产硬盘. 也就是硬盘盘片的每一条磁道都具有相同的扇区数. 由此产生了所谓的3D参数 (Disk Geometry). 既磁头数(Heads), 柱面数(Cylinders), 扇区数(Sectors per track),以及相应的寻址方式.
为了进一步提高硬盘容量, 人们改用等密度结构生产硬盘. 也就是说,外圈磁道的扇区比内圈磁道多. 采用这种结构后, 硬盘不再具有实际的3D参数, 寻址方式也改为线性寻址, 即以扇区为单位进行寻址.
      为了与使用3D寻址的老软件兼容 (如使用BIOS Int13H接口的软件), 在硬盘控制器内部安装了一个地址翻译器, 由它负责将老式3D参数翻译成新的线性参数. 这也是为什么现在硬盘的3D参数可以有多种选择的原因 (不同的工作模式, 对应不同的3D参数,如 LBA, LARGE, NORMAL). CHS模式只能识别大硬盘的前面(8.456GB),LBA使用的线性寻址,突破了1024柱面的限制,能访问8G以外的空间了。
      盘容量目前早已远远超过了当年(8.456GB)的极限,为了超越这个容量限制,人们又定义了新的扩展INT 13 。新的INT 13 不使用操作系统的寄存器传递硬盘的寻址参数,它使用存储在操作系统内存里 的地址包。地址包里保存的是64位LBA地址,如果硬盘支持LBA寻址,就把低28位直接传递给ATA接口,如果不支持,操作系统就先把LBA地址转换为CHS地址,再传递给ATA接口。通过这种方式,在ATA总线基础上CHS寻址最大容量是(136.9GB),而LBA 寻址最大容量是128GB(137.4GB)。


INT 13管理:数据的开始地址被写到3个8位寄存器里(柱面低位寄存器,柱面高位/扇区寄存器,磁头寄存器),柱面地址是10位(柱面低位寄存器占用8位、柱面高位寄存器占用2位),扇区地址为6位(8位-已经被计算过的高位寄存器的2位)。磁头寄存器为8位。因此如果这样的话:柱面的最大数是1024(2的10次方) ,磁头的最大数是256(2的8次方),扇区的最大数是63(2的6次方-1)。所以,通过INT 13管理能寻址的扇区数是16,515,072 (1,024x256x63)。一扇区是512字节,也就是说如果以CHS寻址方式,IDE硬盘的最大容量为(8.456GB)。LBA寻址方式能寻址的扇区数是16,777,216(1024x256x64),这时IDE硬盘的最大容量为8GB(8.601GB)。

http://baike.baidu.com/view/1329184.html?fromTaglist
硬盘容量限制

http://www.cuan.cn/blogs/WebPostDetail.aspx?accountname=admin&PostGuid=e94d0f2cf6d54e2784c5822bc1ff0211
硬盘容量限制变化历史


磁盘数据结构、主引导扇区、主引导记录MBR、硬盘分区表DPT

http://hi.baidu.com/gilbertjuly/blog/item/4db71f352101d0bbd1a2d3e1.html
硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区,电脑启动过程
文末的reference参考文件有链接,想深入了解的话非常值得一看




主引导扇区(master boot sector)的结构
它是硬盘的第一个扇区001扇区), 由主引导程序(masterboot record简称mbr),硬盘分区表(disk partition table简称dpt )和结束标识三部分组成。其结构如下
1、偏移0h~1bdh 主引导程序(占446个字节,但实际可能并没有到这么多的字节)
2、偏移1beh~1fdh 硬盘分区表(占64个字节,每个分区项占16个字节,最多可容纳4个分区项
3、偏移1feh~1ffh 结束标识 (占2个字节,结束标志,总为55h aah)



分区表上有四项,每一项表示一个分区,所以一个分区表最多只能表示4个分区。主分区表上的4项用来表示主分区和扩展分区的信息。因为扩展分区最多只能有一个,所以硬盘最多可以有四个主分区或者三个主分区,一个扩展分区(扩展分区是特殊的主分区)。另:逻辑区都是位于扩展分区里面的,并且逻辑分区的个数没有限制。

每个分区项的详细含义,假设一个分区占用的16个字节被标为00h~0fh
00h 引导标识字节,其值只能为00h或80h,为00h时表示该分区不可引导,为80h时表示该分区可用于引导 。
01h 分区起始磁头号
02h 其高2位为分区起始柱面号的高位,低6位为分区起始扇区号
03h 分区起始柱面号的低8位
04h 分区系统标志
05h 分区结束磁头号
06h 其高2位为分区结束柱面号的高位,低6位为分区结束扇区号
07h 分区结束柱面号的低位
08h~0bh 此4个字节为在线性寻址方式下的该分区的首扇区地址(从0开始计的扇区线性绝对地址,或者说是表示该分区起点之前已用了的扇区数)。当分区大于8G时,扩展int13h是通过该信息进行寻址的,可以发现在这种方式下寻址最多可访问的空间为:ffffffffh扇区×512B/扇=2048G,也就是说用扩展int13h最大可以访问的空间为2048G。
0ch~0fh 此4个字节为以扇区为单位的该分区大小(总扇区数)。





http://wenda.tianya.cn/wenda/thread?tid=52182293f34ef3a7

所有硬盘分区表结构是否一致

http://www.vckbase.com/document/viewdoc/?id=443
深入浅出硬盘分区表

文中:二.分区表的结构
注意4、分区表所在扇区通常在(0磁头,1扇区),而该分区的开始扇区通常位于(1磁头,1扇区),中间隔了63 个隐藏扇区。
个人认为应该是“中间隔了62 个隐藏扇区”。


http://www.45it.com/Article/pc120/dish/200706/16375.htm
硬盘维修基础:分区表结构

http://blog.chinaunix.net/u1/40527/showart_1389273.html
分区表结构分析及应用

http://wapedia.mobi/zh/%E9%82%8F%E8%BC%AF%E5%8D%80%E5%A1%8A%E4%BD%8D%E5%9D%80
逻辑区块地址

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=150449&extra=&page=1
[解决] 引导扇区、启动扇区与mbr的区别与联系     -------本论坛的详解


分区表数据



在DiskGenius里面显示:磁头数255(编号0~254),每磁道扇区数63(编号1~63),因此我认为一般分区软件是这样处理的:磁头数、每磁道扇区数固定,柱面数因磁盘容量不同而改变。
主引导记录及保留扇区为:0柱面0磁头1~63扇区,共31.5KB容量,一般可以对该处2~63扇区进行DIM(Do it myself),
第1主分区开始于0柱面1磁头1扇区,结束于n柱面254磁头63扇区,
第2主分区(如果有3、4主分区应该类似)开始于n+1柱面0磁头1扇区,结束于m柱面254磁头63扇区,
扩展分区内的前63扇区也应该类似于主引导记录及保留扇区,第1逻辑分区、第2逻辑分区(如果有第3、4、5、6、7...逻辑分区应该类似第2逻辑分区)的开始、结束位置应该类似于1、2主分区。
用分区软件调整分区容量时,一般最小的变化单位应该是1个柱面,即255×63×512=8225280Byte,7.844238281M,共16065扇区。
当然也可以用软件精确调整到每个扇区,比如diskgen。fbinst强行格式化后的磁盘,第1主分区位于UD分区之后。


注意!硬盘如有重要数据,在备份数据前请勿随意使用硬盘分区工具!

上图硬盘的主引导扇区数据(winhex菜单-工具-打开磁盘。为什么我不能上传附件呢?明明把图片从99.8KB弄成了98.5KB?)




winhex左下角的扇区数:斜线左边是扇区编号,从0开始(这个是当前扇区的LBA线性绝对地址?);右边是磁盘总扇区数,数值为最后一个扇区编号+1。


图中下部浅蓝色标注部分为第二分区的信息,共16个字节
00 00 C1 FF 07 FE FF FF 28 58 7D 02 D8 A8 71 0D

其中的08h~0bh :28 58 7D 02,为在线性寻址方式下的该分区的首扇区地址(或该分区起点之前已用了的扇区数)
16进制数据为:027D5828,换算为10进制为(可以用windows的计算器试试!winhex数据解释器也有显示!):41769000,如下图




(2010-09-03 继续)
第二分区的信息,共16个字节:00 00 C1 FF 07 FE FF FF 28 58 7D 02 D8 A8 71 0D

02h~03h 数值:C1 FF,二进制为:11000001  11111111
02h 低6位为分区起始扇区号,起始扇区为1扇区,
02h 其高2位为分区起始柱面号的高位,03h 分区起始柱面号的低8位
二进制数值为:1111111111,十进制为1023,起始柱面号为1023(柱面号超过1023的,此位置均显示为1023?)。

05h~07h 数值:FE FF FF,06h~07h 数值:FF FF,二进制为:11111111  11111111
05h 分区结束磁头号FE,即磁头号为254,
06h 低6位为分区结束扇区号,即扇区号为63
06h 其高2位为分区结束柱面号的高位,07h 分区结束柱面号的低位,结束柱面号为1023
(柱面号超过1023的,此位置均显示为1023?)。

0ch~0fh 数值:D8 A8 71 0D
此4个字节为以扇区为单位的该分区大小(总扇区数),16进制数据为:0D71A8D8,算为10进制为:225552600。

如上述,第二分区起点之前已用了的扇区数为:41769000,加上第二分区大小(总扇区数)225552600,则第三分区起点之前已用了的扇区数(或在线性寻址方式下的第三分区的首扇区地址)为:267321600,大家可以核对一下上面截图的数值。


(不务正业啊!待续,更新也许要一周或更长时间。。。)


[ 本帖最后由 forumuser 于 2010-9-4 14:26 编辑 ]
作者: forumuser    时间: 2010-8-29 11:18
预留此楼用于编辑使用

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=172572&extra=&page=1
【教程】fbinst 启动U盘解读(MBR层面),不断完善中。。

预留8M(1-16064扇区)隐藏区,在每个扇区固定位置都写入该扇区在WIN下的LBA值,并在1-63扇区都写入boot code。

疑问)文中:在1-63扇区都写入boot code(个人认为是在0-63扇区,共64个扇区都写入boot code)。

fbinst 1.6辅助代码为第65-67号扇区
从第68号扇区开始为UD内文件列表


在Winhex中,64-16127扇区,每个扇区的最后2个字节数值连续递增,应是是该扇区的LBA值。
0~16127扇区,共16128个扇区,容量8064K,7.875M。


文中:
二、MBR结构解析:
【1】主引导代码:-------第二张图片(原图下载后有300多K,只好在网页直接截图上传):




疑问上述图片中编号(在左下角)为66的扇区,最后2个字节的数值(十六进制)为41 00,该数值是否应为42 00?



以下请注意“”字!例如“63扇区”是指LBA编号为63的扇区(编号从0开始),“第64扇区”指的是从第1扇区(LBA编号为0的扇区)开始计数的第64扇区,即在文中63扇区指的就是第64扇区
主引导扇区(master boot sector)是硬盘的第1个扇区(C-H-S表示为:001扇区,扇区是从1开始编号的),LBA编号为0扇区。

我格式化的U盘,63扇区、64扇区、16127扇区的数据截图如下:
注意图片左下角的扇区编号(LBA值)与右下角该扇区最后2个字节的数据。



  



以下是我用Fbinst格式化的U盘的0、1、2、63扇区的数据,有兴趣的朋友可研究研究。
用Fbinst格式化后,又用Diskgenius把第一主分区的起始位置往后调整了一下,不知是否对非常规的BIOS启动U盘时造成影响。

   


  


软件下载:

winhex14.1、mbldr 在1楼:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=154890

Fbinst 在22楼:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=172572&page=3#pid2027630

BootICE
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=57675&extra=page%3D1&page=1

[ 本帖最后由 forumuser 于 2010-9-4 14:33 编辑 ]
作者: forumuser    时间: 2010-8-29 11:19
预留此楼用于编辑使用

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=170034
百草霜fbinst&0PE合盘FBA制作过程


参照上述使用FbinstTool对U盘进行格式化,用Diskgenius进行分区调整(调整后共有2个主分区),如下图:




fbinst处理过的U盘,分区结构我的理解是这样:
在diskgen里面的显示:
前面空白部分(空闲)在fbinst中为UD区,其中又分为UD主分区,UD扩展分区;UD区之后的部分在fbinst中为数据区,按一般硬盘分区的情况理解即可。
UD主分区的容量一般为1个柱面大小,UD扩展分区容量可以是0~2T(据说是2T?)。


6.3G的分区使用diskgenius格式化并写入启动文件,导入:Pseudo0pe合盘含Burg(百草霜YY)0824.fba(点“数据管理”中的“从文件恢复数据”,选择FBA进行文件恢复)。

修改Grldr菜单,加入以下内容:

#试验增加diskgen启动
title [F]   启动Diskgen格式化的U盘,运行Diskgen
rootnoverify (hd0,0)               
makeactive
chainloader +1


在惠普 Compaq TC4400笔记本上可以正常启动,但进入DOS版的diskgenius后,提示信息错误;


失败!请教!
用Bootice备份6.3G分区的启动扇区,保存为:dgenup.BIN,拖入UD区,
修改Fbinst菜单,加入以下内容:

color yellow
text "F4. Diskgen"
menu F4 grldr "dgenup.BIN"
color red
text "=========================="

启动至菜单,按F4启动失败。




[ 本帖最后由 forumuser 于 2010-9-4 10:27 编辑 ]
作者: 天涯海角1216    时间: 2010-8-29 16:22
加亮一下,鼓励鼓励,楼主多努力!
作者: 老陈    时间: 2010-8-29 22:47
不错不错……
作者: Plantsoot    时间: 2010-8-29 23:18
呵呵,越来越多底层的资料可以看了。

数据结构弄清楚了,很多问题迎刃而解。
作者: 水韵    时间: 2010-8-29 23:22
不错不错,先收藏了,抽时间慢慢的看。。。。
作者: bigdinosaur    时间: 2010-8-29 23:29
不错,再学习学习,楼主辛苦了。
作者: 2831650    时间: 2010-8-30 01:16
技术帖 一定要支持下  收藏啦
作者: 2010songalways    时间: 2010-8-30 09:00
很有必要支持一下...
作者: loveelva30    时间: 2010-8-30 11:55
此贴不错。顶你了哦。。哈哈
作者: wgx1688    时间: 2010-9-1 00:34
收藏了呀谢谢 ..............
作者: 岚轩    时间: 2010-9-1 08:30
这个要支持的,慢慢看!
作者: 2010红色指令    时间: 2010-10-5 03:36
哇噻,高人辈出啊,谢谢老大,学习了,祝无忧和大家节日快乐
作者: lsbzhe    时间: 2010-10-9 14:42
此贴好,顶楼主。。。。。。。。。
作者: 2010sldls    时间: 2010-10-15 15:32
不错的整合贴 本人是新手  看了以后感觉很乱  或许是我看的不够仔细吧  呵呵  楼主莫怪
作者: 2010weihu    时间: 2010-10-15 15:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: 2010dxysp3    时间: 2010-10-15 17:44
很好的教程,LZ有心,菜鸟有福
作者: bang6518    时间: 2010-10-15 19:33
学习学习,楼主辛苦了!
作者: zhushiwei    时间: 2010-10-15 22:52
楼主!有心了,写的不错!
从基础学起哈!
浏览了一下,有空慢详看!
作者: 无心快语    时间: 2010-10-17 12:13
我还是看不懂 好多字符串不知道什么意思
作者: by7694    时间: 2010-10-17 12:21
支持下,,收藏了。。。
作者: suiyefeng    时间: 2010-11-1 20:28
真的很好,总结的不错,,这几天刚看这个,很多还是没怎么弄懂,帖子还没全看懂,,要慢慢消化。。
作者: hnyzalex    时间: 2010-11-2 11:08
这个..太牛了.....必需顶...
作者: xszz    时间: 2010-11-2 17:05
虽然看不懂  我也支持你
作者: 2011lazykid    时间: 2011-2-17 02:16
不错的汇总~
作者: zfyczyh    时间: 2011-10-21 03:18
菜鸟入门的好教材,学习一下
作者: 快雪时晴    时间: 2011-10-21 09:13
才泡了几个小时就能出这么好的教程,叫人情何以堪
作者: panet8888    时间: 2011-10-21 10:02
如此好帖,怎么会没早发现呢
作者: messenger    时间: 2011-10-21 12:36
学习学习,楼主辛苦了
作者: shuiliang    时间: 2011-10-21 19:06
尽管很早不玩。但这个教程要顶的。
作者: zjloo    时间: 2011-11-9 08:01
严重支持这类帖子,楼主加油!
作者: 2011YEH    时间: 2011-11-9 10:22
内容很有深度,先收下来,慢慢研读,谢谢楼主。
作者: 2011sj2860    时间: 2011-12-8 07:18
不错学习了。
作者: 2012win888    时间: 2012-2-19 14:47
希望继续补全资料磊  在
作者: xyzxp    时间: 2012-2-19 21:29
学习了,谢谢楼主!!!




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3