win10下迁移EFI分区表

前言

在硬盘价格大跳水的时代,一台笔记本装载两个硬盘已经是很稀松平常的事,有的游戏本甚至内置了4个硬盘插槽。但是在双盘场景下,有时候会莫名遇到系统文件和EFI系统分区表(可以理解为MBR的变种)分离在2个硬盘中的问题。大部分时候这都没什么,不会有任何问题,直到我们想要换掉其中一个硬盘或者电脑送维修的时候。当售后客服提醒我,工程师可能会进入系统检测的时候,我才发现事情并不简单,考虑到数据磁盘中500G的学习资料和工程师小哥的身体,我决定拆下数据盘,仅保留系统盘,再送修。然后,BOOM~,计算机开始报错“无法找到系统启动驱动”,电脑再也无法启动。究其原因,就是上面所说的,EFI系统分区表在数据盘中

思路

思路基本很明了啦,就是想办法把EFI分区表迁移到系统盘中

虽说是迁移分区表,实际上我们的解决思路是重新创建一个,分2步:首先创建一个EFI系统分区,然后从X:\windows(即系统镜像,每个人的系统盘位置不同,一般情况是C盘)复制启动文件到EFI分区,最后通过BIOS修改第一顺序启动盘即可。

这里涉及两个工具,且都是win10自带的——Diskpart和BCDBoot。diskpart是win10内置磁盘管理工具,我们平常的创建分区、分配盘符、格式化分区等基本操作,都可以通过该工具实现。详细指令可以参考这里。bcdboot是一个用于设置系统启动分区的工具,详细指令参考这里

具体操作

创建分区

首先以管理员身份打开windows terminal
执行diskpart指令,可进入Diskpart界面

然后执行以下指令,

list disk #列出全部的磁盘

select disk {index} # 选定你想要创建的EFI系统分区的磁盘,{index}表示硬盘索引号,如0、1、2等

list partition # 列出当前磁盘的全部分区

select partition {index}# 选一个还剩至少100M的磁盘分区,{index}为分区索引

shrink desired=100 # 申请100M空间,EFI分区表标准都是100M

create partition efi size=100 # 创建efi分区,大小为100M

format quick fs=fat32 #格式化分区为fat32文件系统

assign letter=s # 挂在当前分区盘符为s(为了避免和常用的cdef等卷名重复)

list volume # 列出当前磁盘的全部卷,验证是否成功创建S盘

exit

复制EFI启动文件

bcdboot C:\windows /s S:

该指令的意思是,复制系统盘C:\windows下的启动文件,到S分区(也就是上面创建的EFI分区),其中/s是复制启动文件的选项指令。

最后,进入BIOS界面(一般是_F2_或者_Del_按键),修改第一启动顺序即可。至于数据盘中的EFI分区表,你可以使用diskpart的clean指令删除掉,或者干脆不用管。这个分区一般是隐藏的,占用空间也不大,留着也无伤大雅。

posted @ 2021-05-10 22:05  小小怪医芙兰  阅读(1819)  评论(0编辑  收藏  举报