硬盘主引导扇区BS结构,代码已注释.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
硬盘主引导扇区(MBS)结构,代码已注释 有的网友反映第五部分MBR源代码看不懂,我注释一下 我们经常遇到各种各样的硬盘故障,其中有相当部分是硬盘软故障,如有些朋友在安装Linux后,发现无法安装Windows等,但很多朋友由于在对硬盘的逻辑结构不是很了解,无法判断合解决该类问题。 为了普及这些知识,增强大家的兴趣和做试验成功后的成就感,本人以提问的形式给大家展现这方面的知识,同时也提醒大家在实做时先用一个多余而且无重要数据的硬盘做试验,免得造成不必要的损失。另外,对于汇编不了解但有一定计算机基础的朋友,建议自己查找资料进一步学习,也可以记下本文中的代码,实做中灵活应用。 问题:我们在安装所有版本的Windows时,一般不管使用Win 9X的Fdisk命令对硬盘进行分区,还是由安装程序进行分区,基本上都只能分一个主分区和一个扩展分区,扩展分区里面又分若干逻辑分区,很少人尝试过分多个主分区或多个扩展分区,今天有空出下面问题,随便做了个试验(Linux下做直接读Linux分区的文件试验导致硬盘Linux彻底被破坏,干脆。。。),结果如下:10G硬盘分为了3个主分区,而且还可以从任何一个主分区启动,也就是说,3个主分区装了3个操作系统。 问题: (1)在只有基本的DOS情况下是如何做到的?(除了DOS,不允许用其它任何软件) (2)一块硬盘最多可分为几个主分区和几个扩展分区? 目的:通过讨论,让大家 (1)深刻理解硬盘0面0道1扇区的MBR+DPT+BRI结构; (2)掌握手动修改MBR和DPT的手段,具备手动备份和还原硬盘0面0道1扇区的能力; (3)了解计算机从硬盘启动的过程,了解编写多重启动程序的基本方法; (4)为将来学习其它操作系统打下良好的基础。 答案:(由于编辑窗口太小,可能有不少错误,也已修改不少,剩下的请指出) 关键词: MBS- Master Boot Sector 主引导扇区 MBR-Master Boot Record 主引导记录 DPT-Disk Partition Table 硬盘分区表 BRI-Boot Record ID 引导记录标志 CHS-(Cylinder柱面,也就是磁道 编号0-m Head 头,编号0-n Sector 扇区 编号1-t)参数。 一、 硬盘结构和逻辑编号 (1)硬盘物理结构 传统硬盘由多个双面磁碟组成,每个面都有一个读写磁头,磁头编号从0开始,所谓0面就是指0磁头所对应的面;每个面被划为若干磁道,编号从负数开始,磁道数越小,越靠近磁碟边缘,因为线速度越大,所以读写速度也越快;用户只能使用0道以后的磁道,负磁道为硬盘所带的微处理器使用的一些代码(Fireware)和本硬盘一些重要参数存放的地方;每个磁道又分为若干扇区(每个磁道扇区数量都一样),扇区的编号从1开始(不是从0开始哟!),每个扇区存放536(这个数记不清楚了,呵呵)多个字节,但共用户使用的只有512个字节,剩下的作为校验(CRC)和其它用途。这就是著名的硬盘寻址CHS(Cylinder柱面,也就是磁道 编号0-m Head 头,编号0-n Sector 扇区 编号1-t)参数。 对于CHS中参数中 Cylinder柱,也就是磁道,用10个二进制数表示,所以最大为1024 Head 头,用一个字节表示,最大为256个磁头 Sector 扇区,用6为二进制数表示,所以最大为 64-1(不能用0呀)=63 所以使用CHS表示的硬盘最大容量为 1024X256X63X512=8455716864字节=8064M容量,这就是8G容量的由来。 明显看出,外道比内道长,被划分为同样扇区数是非常浪费的。现代磁盘基本上也只有2个左右的磁碟,4个面左右,每个磁道上的扇区数量都不相同,一般使用LBA表示方法来表示每个扇区,所谓LBA指每个扇区都有一个编号,从0开始(负编号不给用户使用),为了与CHS方式兼容,硬盘内部代码使用了一种CHS-LBA映射的方式。 (2)硬盘逻辑编号 当一台计算机挂多个IDE硬盘时,LinuxUnix对硬盘的编号最为科学。它是这样处理的 hda—第一个IDE口主硬盘, hdb—第一个IDE口从硬盘, hdc—第二个IDE口主硬盘, hdd—第二个IDE口从硬盘, 但对于BIOS,DOS和Windows,处理方式有点不一样,只要掌握下面原则就可以了 (1) 上面4硬盘是连续编号,从小到大,光驱不算 (2) 作为启动的硬盘编号最小,为0x80(16进制数) 如第一个IDE口,主挂硬盘,从挂光驱,第二个ide口挂2个硬盘,BIOS设置从第二个主硬盘启动,则它们的编号为: 第二个IDE主硬盘为0x80,第一个IDE主硬盘为0x81,第二个IDE从硬盘为0x82 又如第一个IDE口主空,从挂硬盘,第二个ID

文档评论(0)

138****7331 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档