备份EFI分区里面的文件,原来的要删除,如图1.1所示,使用Bcdboot命令重新生成
bcdboot C:\Windows /s S: /f ALL
C:和S:按照实际情况更改,C:是你要引导的Windows系统,S:是你的EFI分区
把移动硬盘插到安卓设备上,安卓上显示格式化,然后我用termux手动挂载,第一次没指定utf8挂载,中文名文件和文件夹直接不存在了(看不到),然后指定utf8挂载,好像没什么问题,但是,第二天插回电脑上就开不了机了。
很多知识仅限凭认知编写,若有谬误欢迎评论区指正,若错误过多,我可以把文章删掉或者隐藏掉
引导分为EFI/GPT引导和BIOS/MBR引导,老电脑用BIOS引导比较多,现在的电脑一般都是用EFI引导,网上应该会有一些引导类型判断,我对此也不是特别了解,我一般通过分区表类型来判断,GPT则为EFI,MBR一般为BIOS,应该是这样。
MBR位于物理磁盘的开头(不是分区,而是磁盘),占固定446个字节[1]。这也导致了一个磁盘只能有一个BIOS引导。
UEFI引导是通过文件引导的,一般有一个EFI分区,用于存放EFI文件,我的EFI分区如图3.1所示,EFI分区里面的文件结构如图3.2所示
如果只有一个Windows,那大概流程估计是这样的[2](我发现这里这篇博客好像已经写的很不错了):
UEFIBIOS→EFI系统分区(FAT格式的分区)→\efi\Microsoft\boot\bootmgfw.efi→efi\Microsoft\BCD→\Windows\system32\winload.efi
我认为,一般引导文件出问题都是出在EFI分区上的,看上面的流程除了\Windows\system32\winload.efi
之外包括BCD文件全都是在EFI上的。而Bcdboot命令可以重新生成整个EFI。
要学习一个命令当然是要去看官方文档,有时候自己看文档研究可比到处乱翻博客快多了(当然博客还是有用的)。
使用以下命令可以在指定的EFI分区重新生成整个EFI引导文件夹
bcdboot C:\Windows /s S: /f UEFI
其中C:\Windows是Windows系统的安装路径,/s后面接EFI分区的盘符,盘符可以使用diskpart
的list volume
命令查看[3].
使用diskpart
的list volume
命令查看系统盘盘符和EFI盘盘符,如果没有还没有分配盘符的话在diskpart里面select分区之后使用ASSIGN letter = 盘符
即可分配盘符[4]
查询好盘符之后执行以下命令之后重启即可
bcdboot C:\Windows /s S: /f UEFI
Bcdboot官方文档
这个命令按理来说应该是有效的,但是不知道有时候就没那么好用,这次遇到的也有点玄学,我用这个命令重新生成几次引导之后,开机还是报那个错,但是不止怎么地,我重启多几次他就好了,介于我在这个过程中没有做过其他操作,所以我就把引导修复归功于这个命令了。
网上还有很多修复引导的教程,比如说这个
BOOTREC /SCANOS
BOOTREC /FIXMBR
BOOTREC /FIXBOOT
BOOTREC /REBUILDBCD
我觉得他是有问题的,看到FIXMBR,而且并没有涉及到EFI盘符,所以我觉得他应该是修复BIOS引导的,如果是UEFI引导应该没有什么用。
还有一些是使用bcdedit
命令来修复,我不觉得他不行,但是我感觉手动编辑引导还是麻烦了点,Bcdboot
可以自动生成。关于bcdedit也可以去官方文档学习学习。
[1] MBR分区表详解
[2] BIOS与UEFI之间的区别
[3] Windows命令行查看盘符 三种方法
[4]CMD(命令提示符)修改盘符