码迷,mamicode.com
首页 > 其他好文 > 详细

Vista的MBR磁盘签名(Disk Signature) (转帖)

时间:2018-04-07 11:15:07      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:nload   ssi   启动   一个   log   hal   ios   win   技术   

原帖:Vista的MBR磁盘签名(Disk Signature)_存梦_新浪博客 http://blog.sina.com.cn/s/blog_6fed14220100qq71.html

存梦发表于(2008-05-28 14:45:28)

和以前的Windows相比,Vista引导操作系统和它使用磁盘MBR中的磁盘ID号的方式都有所不同。这个ID号从NT 3.5开始就有了,这个ID号位于MBR扇区的0x1B8偏移处,也就是启动代码和分区表之间,其长度为4字节。它也被称为错误容忍签名(Fault Tolerance Signature),现在通常被微软称为磁盘签名。在以前的NT操作系统中,对ntldr发起Windows启动过程来说,磁盘签名的完整性通常都不是至关重要的。然而对于Vista来说,如果签名被改掉或找不到,那么bootmgr(Vista中ntldr的接班人)将在Windows启动之前挂起(halt),并显示错误信息“winload.exe..... is missing or corrupt.”事实上,这是一条不准确的并有误导性的错误消息,因为winload.exe并没有被移动或修改。如果我们修改签名的某一位就会显示winload.exe错误,如果再改回来Vista又可以正常启动了。

 

磁盘签名的最初目的主要是与正在启动的或已经启动的操作系统能唯一识别单个的硬盘有关,比如用于错误容忍的动态硬盘软件RAID配置,在boot.ini文件中放置SCSI硬盘的磁盘标签以启动Windows,帮助NT跟踪维护盘符的分配等等。除了这些之外,磁盘签名对于Vista有着新的意义,它对Vista的启动过程至关重要。

Vista MBR

技术分享图片

Vista之前磁盘签名可以是字母和数字的任意组合,只要和机器中已有的磁盘签名不同就可以,在Vista中,这个规则看起来并没有改变。

 

为了启动一个操作系统,首先必须加载并运行启动加载器(bootloader)。Vista中,这个工作由bootmgr完成,通过BCD数据来查找启动加载器的位置。以前的NT操作系统有些许差别,因为ntldr既是启动管理器又是启动加载器,对它来说,主要的任务是查找操作系统文件所在的位置。ntldr和bootmgr的首要任务都必须是识别它们应该去哪个硬盘上寻找所需的文件。ntldr通过boot.ini文件的帮助来实现,这个文件列出的硬盘号和计算机BIOS看到的硬盘号顺序一致,ntldr首先获得用户选择启动项对应的硬盘号,然后检查BIOS来找到对应的位置。在Vista中,BCD数据不会包含硬盘号,而是它们唯一的磁盘签名。当bootmgr通过BCD数据获得对应的磁盘签名后,它就遍历所有连接的磁盘知道发现具有这个磁盘签名的硬盘。如果没有找到匹配的硬盘,bootmgr就没法找到Vista的启动加载器(winload.exe),从而显示错误信息“winload.exe..... is missing or corrupt.”

 

因此现在磁盘签名对于启动过程来说至关重要,必须为bootmgr维护好。如果签名改变了,那么BCD中所有的跟这个磁盘相关的启动选项都必须更新,以包含最新的磁盘签名。如果签名被清零,那么必须产生一个新的签名写到磁盘上,同时通知BCD模块。对于普通用户来说,很少有情况使得操作会修改或破坏磁盘签名,因此这整个过程都是透明的。然而,在使用克隆工具或安装多操作系统时可能会出现问题。

除了磁盘签名外,BCD还包含了更多关于磁盘分区位置的信息,这些信息也被bootmgr用来查找winload.exe。如果一个分区在磁盘的起始位置发生变化,bootmgr也将找不到这个分区,从而也不能定位winload.exe。

技术分享图片

Vista的MBR磁盘签名(Disk Signature) (转帖)

标签:nload   ssi   启动   一个   log   hal   ios   win   技术   

原文地址:https://www.cnblogs.com/liuzhaoyzz/p/8732435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!