UEFI和GPT下硬盘克隆后的BCD引导修复-Storm_Center http://www.stormcn.cn/post/1901.html

当硬盘引导换成GPT,系统启动也变成UEFI后,如果直接通过克隆方式来更换硬盘,有可能新硬盘无法启动,需要修复启动文件BCD。BCD可放在单独的ESP分区(FAT格式,用光盘文件正常安装就有),也可放在C盘,UEFI启动的BCD文件在efi\microsoft\boot\下。即使是MBR和BIOS启动且同样拥有ESP单独分区的话,BCD则是在BOOT文件夹中,所以即使是MBR格式,如果同样引导文件未放在C盘,也需要在克隆后修复对应位置的BCD,修复则同前者一样,都是要把引导文件的路径指向对应分区和路径下的BCD。还有恢复环境recovery,也是需要指向指定的分区或位置(如果没有设置专门的NTFS分区,则放在C盘也可)。

  如果不修复引导,则在克隆后用新硬盘启动,会出现0xc0000225的错误(顺便说一下,MBR格式硬盘且有ESP分区的,可能出现的错误代码是0Xc000000e),也可能直接黑屏没有反应,如果修复失败,还有可能出现黑屏但还有鼠标光标,剩下的鼠标光标也能动,这绝不是丢失或损坏了什么dwmapi.dll文件的问题,也调不出什么任务管理器去运行explorer.exe,都是引导与启动修复失败的结果。

  而修复BCD,一般都有工具,有智能自动修复的,只要指定windows目录所在地,或者在PE中要先给ESP指一个盘符,让修复工具能自己找得到它,只要硬盘修复成功启动,ESP还是会回到无盘符状态,不会影响什么的,唯一要注意的是随着WIN10以后的更新版本系统的出现,修复工具最好选用最新版本的,虽然win7时代的工具可能也能用。另外自动修复工具其实与命令修复(如bcdboot c:\windows /s z: /f uefi /l zh-cn,这里/s后的z:是预先指定的ESP分区的盘符,如果引导文件在C盘,这里也得指定为c:,/f后面也可以用ALL,具体参数参考bcdboot/?)都是往BCD文件里添加一条新的启动引导项,而不是在旧有条目上进行修改。

  如果要对BCD引导文件里旧有条目手动进行修改,这些工具(如EasyBCD、BOOTICE)也都有手动修改的功能。不过我在虚拟机中尝试克隆硬盘后手动修改BCD是成功,但在一台实机上却一直失败,被修改的路径应该是正确的,但却无法被识别成正确的C盘(而是加装双硬盘后的H盘,即使前一块硬盘在取掉的情况下仍然如此),以至于虽然能启动,但最后出现如上面说过的黑屏上只剩下一个鼠标光标。所以在实机上我采用的方法是用PE启动,然后运行DG,用DG里的克隆硬盘进行克隆,克隆后,在PE计算机管理中的磁盘管理里,新硬盘的状态是脱机的,这不是仅仅由于权限策略限制而脱的机,而是由于两块硬盘上的签名一样(即盘符设置相同)而造成的脱机,这时不能在磁盘管理里随便就点联机进行让其恢复联机状态,如果此时联了机,新硬盘的签名就改变了,克隆的作用就没了,新硬盘上各分区将按顺序在旧硬盘后分配到盘符,这样即使用新硬盘进行启动,就会出现找不到系统,所以必须在保持其脱机状态下关机,然后取走旧硬盘,再用新硬盘进启动,这样就能顺利进入系统,一切如常,然后再考虑处理旧硬盘,如果还想用的话。

  注意自动修复BCD也仅仅是修复引导启动,而BCD里还有windows的恢复环境,那个WinRE,在克隆后这个恢复环境也有可能遭到破坏,但修复工具们一般不管它,需要手动修复,就是指定恢复环境WinRE在哪,可以手动指定,也有命令可用于修复,就是 reagentc命令,具体参数就不说了,因为在上面即使是引导修复成功的虚拟机上,我用命令也无法修复恢复环境,最后还是手动用BOOTICE工具来修改,没做成功的就不说了,以后再琢磨。

>> 除非说明均为原创,如转载请注明来源于http://www.stormcn.cn/post/1901.html

最新文章

  1. Type.IsContextful 说明
  2. JAVA 基本运算符(摘)
  3. Java的性能优化
  4. [GraphQL] Use Arguments in a GraphQL Query
  5. SQL 替换指定列中的指定字符串
  6. java多线程的使用1
  7. 深入了解jquery中的键盘事件
  8. 【Android笔记】MediaPlayer基本使用方式
  9. android怎么在launcher改动内置apk的icon
  10. php薪资
  11. vue2.0设置proxyTable使用axios进行跨域请求
  12. 第三方登录,一般都是遵循OAuth2.0协议。
  13. Alpha冲刺No.1
  14. (转)测试如何区别是前端的问题还是后台的bug
  15. ERROR: cannot launch node of type [turtlebot_teleop/turtlebot_teleop_key] 问题解决
  16. Python os.removedirs() 和shutil.rmtree() 用于删除文件夹
  17. vuex——做简单的购物车功能
  18. StrokePlus常用脚本
  19. GMT5.4.2 installation
  20. Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例

热门文章

  1. 移动端解决悬浮层(悬浮header、footer)会遮挡住内容的方法
  2. React文档(十三)思考React
  3. CRM INBOX 查询结果增强字段
  4. multipath配置详细参考
  5. mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?
  6. 【框架】selenium网页端的基本自动化框架(四)
  7. 用canvas画一个房子
  8. FCC JS基础算法题(4):Title Case a Sentence(句中单词首字母大写)
  9. flask自定义转换器
  10. Linux源码安装软件