2011年2月17日星期四

轉帖:入门-我的无忧启动,磁盘数据结构,分区表,MBR,fbinst

入门-我的无忧启动,磁盘数据结构,分区表,MBR,fbinst - USB启动区 - 无忧启动论坛 - Powered by Discuz!





入门-我的无忧启动,磁盘数据结构,分区表,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/viewthread.php?tid=150449&extra=&page=1

[解决] 引导扇区、启动扇区与mbr的区别与联系     -------本论坛的详解





分区表数据



点击在新窗口查看全图 CTRL+鼠标滚轮放大或缩小



在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,如下图



点击在新窗口查看全图 CTRL+鼠标滚轮放大或缩小





(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


上士

Rank: 3Rank: 3






UID 285055

精华
0

积分 461

帖子 16

威望 49

阅读权限 50

注册 2008-11-23











发表于 2010-8-29 11:18 
资料 
短消息 
加为好友 







预留此楼用于编辑使用



http://bbs.wuyou.net/viewthread.php?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/viewthread.php?tid=154890



Fbinst 在22楼:

http://bbs.wuyou.net/viewthread.php?tid=172572&page=3#pid2027630



BootICE

http://bbs.wuyou.com/viewthread.php?tid=57675&extra=page%3D1&page=1



[ 本帖最后由 forumuser 于 2010-9-4 14:33 编辑 ]





顶部





forumuser


上士

Rank: 3Rank: 3






UID 285055

精华
0

积分 461

帖子 16

威望 49

阅读权限 50

注册 2008-11-23









发表于 2010-8-29 11:19 
资料 
短消息 
加为好友 







预留此楼用于编辑使用



http://bbs.wuyou.net/viewthread.php?tid=170034

百草霜fbinst&0PE合盘FBA制作过程





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



点击在新窗口查看全图 CTRL+鼠标滚轮放大或缩小





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 编辑 ]

沒有留言:

發佈留言