原帖: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) (转帖)的更多相关文章

  1. (转)GPT磁盘与MBR磁盘区别

    摘要:   Windows 2008磁盘管理器中,在磁盘标签处右击鼠标,随磁盘属性的不同会出现“转换到动态磁盘”,“转换到基本磁盘”“转换成GPT磁盘”,“转换成MBR磁盘”等选项,在此做简单介绍.部 ...

  2. 使用mbr2gpt将MBR磁盘转换为GPT磁盘

    随着越来越多的新PC的到来,UEFI启动渐渐的取代了BIOS启动方式.不过UEFI需要从GPT磁盘启动,原来的MBR磁盘不行.如果你更换了硬件,只想把磁盘拿到新平台上用又不想重装系统的话就麻烦了.以前 ...

  3. 关于磁盘错误disk error

    到同事办公室的时候,机器的启动界面就停在磁盘错误disk error上. 首先怀疑的就是硬盘可能坏了,于是就用u盘启动,运行mhdd检测,一直到10%都没有发现错误.于是退出,重启,发现机器能够启动x ...

  4. Mac Electron 应用的签名(signature)和公证(notarization)

    背景 在MacOS 10.15之前,应用如果没有签名,那么首次打开时就会弹出这种“恶意软件”的提示框. 这时只要应用签名了,就不会弹这个框. 但在MacOS 10.14.5之后,应用如果没有公证(简单 ...

  5. VMWare虚拟机提示:锁定文件失败,打不开磁盘...模块"Disk"启动失败的解决办法

    我出现该问题的原因: 昨天电脑一下子卡死,于是我就重启了电脑,重启之后我没有打开VMware虚拟机,结果第二天一上班打开VMware就发现出现了“锁定文件失败,打不开磁盘......模块"D ...

  6. VMWare虚拟机提示:另一个程序已锁定文件的一部分,打不开磁盘...模块"Disk"启动失败的解决办法

    重启了电脑之后,打开VMware就发现出现了“锁定文件失败,打不开磁盘......模块"Disk"启动失败.”这些文字 为什么会出现这种问题: 这是因为虚拟机在运行的时候,会锁定文 ...

  7. 在 Windows 安装期间将 MBR 磁盘转换为 GPT 磁盘

    以 UEFI 启动的 Windows 磁盘必须是 GPT 格式.本文将介绍如何在安装 Windows 期间将磁盘从 MBR 转换成 GPT. 特别注意:操作不慎可能丢失所有数据,如果你懂得安装系统的一 ...

  8. 基于weixin-java-mp 做微信JS签名 invalid signature签名错误 官方说明

    微信JS签名详情请见:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang= ...

  9. java 签名类 Signature

    java.security类 Signature java.lang.Object java.security.SignatureSpi java.security.Signature public ...

随机推荐

  1. Guava:好用的java类库 学习小记

    基础功能 google guava中定义的String操作 在google guava中为字符串操作提供了很大的便利,有老牌的判断字符串是否为空字符串或者为null,用指定字符填充字符串,以及拆分合并 ...

  2. 跟随我在oracle学习php(2)

    在制作网页之前,先看一些常用标签的具体用法,上次我给出了常用标签表格,我们来一个一个看一看. 首先是<a>,他的第一个用法就是超链接,格式为<a href=”你想要跳转到的网页地址” ...

  3. Java删除文件夹和其子文件、文件的拷贝和剪切

     1.递归删除目录下的所有文件及子目录下所有文件 //递归删除目录下的所有文件及子目录下所有文件 public static boolean deleteDir(File dir) { if (dir ...

  4. Visual Basic 2017 操作Excel和word【2】持续更新……

    1.控制台程序创建Excel,并设置状态栏显示“Hello World”文本 Module Module1 Private exitXL As Boolean = False Dim WithEven ...

  5. vue 和react的区别

    1.数据是不是可变的 react整体是函数式的思想,把组件设计成纯组件,状态和逻辑通过参数传入,所以在react中,是单向数据流,推崇结合immutable来实现数据不可变. react在setSta ...

  6. inode 与black 特点与简介

    inodo为索引节点, 存放文件属性的信息(实际文件位置与容量信息 /black文件属性) 作用在格式化文件系统时候产生 创建一个文件就占用一个inode 数字相同为硬链接 black为实际数据/内容 ...

  7. mysql 判断某字段是否包含中文

    SELECT col FROM table WHERE LENGTH(col) != CHAR_LENGTH(col) LENGTH() 函数:返回字符串的长度,已字节符为单位 CHAR_LENGTH ...

  8. ES6和ES5变量声明的区别(var let const)

    // es5的语法与es6的语法区别 // var let const console.log(name);//undefine,不会报错,因为变量声明会提到作用域的最前面 var name=&quo ...

  9. 2018-北航-面向对象-前三次OO作业分析与小结

    基于度量的程序结构分析 由于平时使用了NetBrains出品的IDEA作为IDE,在分析程序的时候我使用了IDEA的插件Metrics Reloaded.然而在使用时发现不懂得很多分析项目的含义,因此 ...

  10. xslfo和fop使用中的一些问题

    最近项目中使用fop和xslfo打印pdf,遇到一些问题记录下来: 1.表格跨行.跨列: 使用number-rows-spanned和number-columns-spanned属性 比如:<f ...