UEFI和GPT下硬盘克隆后的BCD引导修复
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
UEFI和GPT下硬盘克隆后的BCD引导修复的更多相关文章
- windows10 双系统安装后,grub2 引导修复(亲自实验);grub2 命令行 手动加载内核;fedora 29 系统grub2引导修复;
之前在本机有fedora 29的系统,但是由于错误安装,把windows10 启动安装到 linux 所在的硬盘中,导致原来的 efi中的grub启动被破坏,不能进入到linux中:我首先通过磁盘精灵 ...
- centOS和windows7双系统下重装windows后恢复centOS引导
电脑原本是windows7和centOS双系统,后来重装windows系统后,发现没有centOS引导,于是重新恢复centOS引导. 1.官网下载centos系统镜像CentOS-7-x86_64- ...
- 基于UEFI和GPT模式下U盘安装windows8.1和Linux双启动教程
首先作以下准备: 1.一个8G以上的U盘,用的时候会格式化,建议为空 2.分区助手软件,官网下载链接 3.一个linux系统,这里用同学推荐的Fedora 26,官网下载链接 4.rufus 创建U盘 ...
- UEFI+GPT下安装Win10+Ubuntu16.04双系统
安装环境 SSD+HDD双盘,Win10安装在SSD里,HDD分出来60G安装Ubuntu. 自行百度你的主板是否支持UEFI启动方式. Win10 下载Win10安装镜像.烧盘等步骤就不说了,重启后 ...
- 【教程】在UEFI启动方式下,通过GRUB2引导,直接从硬盘ISO文件安装Windows10和Ubuntu双系统
本文为作者原创,允许转载,但必须注明原文地址: https://www.cnblogs.com/byronxie/p/9949789.html 动机 最近在自学MIT6.828 Operating S ...
- UEFI+GPT双硬盘安装Win10+Ubuntu16.04双系统
转载请注明出处:http://www.cnblogs.com/willnote/p/6725594.html 安装环境 SSD+HDD双盘,Win10安装在SSD里,HDD分出来60G安装Ubuntu ...
- GPT WIN 换硬盘 硬盘克隆或复制 无法确定的问题,硬盘大小不一致换系统。
当你购买了一个新硬盘,希望换掉旧硬盘的时候.发现 GPT + EFI 要求硬盘上的前两个分区必须和旧的一样,否则就无法启动. 这就是你用 分区大师(PartAssist)硬盘克隆完了,也无法启动的原因 ...
- 在UEFI+GPT下使用rEFind实现Win10 + Kali2.0 双引导
转载自:在UEFI+GPT下使用rEFind实现Win10 + Kali2.0 双引导 https://www.linuxidc.com/Linux/2016-07/133717.htm
- mac+win10:UEFI分区方式下安装windows 10
小编,最近通过在远景论坛上寻找教程--安装双系统(win10+mac os).经过一天努力,成功安装win10.为此,特地分享给各位正在需求教程的朋友,我在UEFI分区方式下安装windows 10的 ...
随机推荐
- 前端布局神器display:flex
2009年,W3C提出了一种新的方案--Flex布局,可以简便.完整.响应式地实现各种页面布局.目前已得到所有现在浏览器的支持. flex浏览器支持 一.Flex布局是什么? Flex是Flexi ...
- UI 增加文本
1.直接在节点上增加VALUE NODE. 2.写GET,SET,I,P的相关实现 method GET_ZH12. DATA: lr_current TYPE REF TO if_bol_bo_pr ...
- 【log4j】使用注意事项
实际过程中,使用log4j遇到的一些问题,进行总结: 1.log4j.properties文件的放置路径: 必须放在src的根目录下,这样就不需要额外的加载了 2.申明一个log对象 Logger l ...
- C# 自定义配置文件
配置文件有两种设置方式,第一种是直接在网站根目录下的web.config中设置:第二种方式是自定义配置文件,在web.config中指定其他配置文件的路径. 第一种:除了在常用的appSettings ...
- vs中正常IIS发布网站后css样式、图片丢失jQuery报错 $ is not defined
问题描述: VS运行能够正常看到样式和图片 ,IIS发布后样式丢失.图片不显示.并且jQuery报错“$ is not defined”. 问题分析: 1.首先怀疑是样式文件.图片等发布的时候没有发布 ...
- 错误:Bean property 'sessionFactory' is not writable or has an invalid setter method.
Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'sessionFactory' ...
- Python语言:下载上证股票数据程序
from urllib.request import urlretrieve f = open('SHA.csv', 'r')for line in f: data = line.split(',') ...
- ef core中如何实现多对多的表映射关系
文档:https://docs.microsoft.com/en-us/ef/core/modeling/relationships class MyContext : DbContext { pub ...
- php优秀框架codeigniter学习系列——CI_Security类学习
这篇文章主要介绍CI核心框架工具类CI_Security. 安全类包含了一些方法,用于安全的处理输入数据,帮助你创建一个安全的应用.以下选取类中的重点方法进行说明. __construct() 在构造 ...
- 利用Java获取ip地址
方法1 public static String getIp2(HttpServletRequest request) { String ip = request.getHeader("X- ...