原帖: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. Mongo 查询(可视化工具)

    distinct MongoDB 的 distinct 命令是获取特定字段中不同值列表的最简单工具. 该命令适用于普通字段.数组字段以及数组内嵌文档(集合对象). db.getCollection(' ...

  2. mongoose中connect()、createConnection()和connection的区别和作用

    转文:原文 1 mongoose简介 在使用mongodb数据库开发项目中,nodejs环境下可能会使用到mongoose模块连接并操作mongodb数据库.mongoose模块相当于Java中的数据 ...

  3. ubuntu16.04中设置python3

    执行: sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 sudo update-alter ...

  4. 为什么企业需要IT资产管理

    为什么企业需要IT资产管理 为什么企业需要IT资产管理?其实这个问题,如同企业为什么要管理一样重要. 企业需要管理.因为有了管理,人.物可尽其用,在不同的位置.角色上发挥作用,然后按照一定的运维规则, ...

  5. caffe drawnet.py 用Python画网络框架

    在caffe中可以使用draw_net.py轻松地绘制卷积神经网络(CNN,Convolutional Neural Networks)的架构图.这个工具对于我们理解.学习甚至查错都有很大的帮助. 1 ...

  6. Alpha 冲刺 (10/10)

    Alpha 冲刺 (10/10) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务: 文字/口头描述: 1.和愈明.韫月一起对接 2 ...

  7. ﺑﯘﻟﺒﯘﻟﻼﺭ--思恋--IPA--维吾尔语

    很美的维语歌曲, 迪里拜尔将之唱得十分动人心弦.

  8. TensorFlow函数:tf.reduce_sum

    tf.reduce_sum 函数 reduce_sum ( input_tensor , axis = None , keep_dims = False , name = None , reducti ...

  9. 自动化测试-13.selenium执行JS处理滚动条

    前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候 ...

  10. js 跨域问题

    Cross-Origin Resource Sharing 跨域资源共享 Cross-Origin Resource Sharing,跨域资源共享,简称 CORS.CORS系统定义了一种浏览器和服务器 ...