admin 管理员组

文章数量: 887007

【疑难杂症爆破委员会】

UEFI Linux、Windows双系统,丢失Windows的efi文件导致找不到启动项,导致无法进入Windows系统

状况说明

状况是这样的:我本来好好的装着Linux和Windows的双系统(还是先装的Linux后装的Windows,想想自己真能折腾…)。然后不知搞了什么错误操作,导致Linux系统(Manjaro)特别慢,包括像Chrome、火狐等这样的应用的启动速度,还有npm编译js的速度等,都十分的慢,所以就索性重装了一下系统。

然后我在装系统的时候,一个不小心(手贱)就把efi分区给格了

这以下可了不得了,windows的efi文件没了,是肯定引导不了的,所以就千方百计地找恢复efi文件的方法,还真在这儿找到了:

https://superuser/questions/1110644/reconstructing-windows-efi-files-in-boot-partition-linuxwindows-dual-boot : Reconstructing Windows EFI files in /boot partition (Linux+Windows dual boot) 回复者:Manoj Sawai

所需条件

  • Windows的UEFI启动盘
    这应该很好弄,烧个Win10的启动盘就好了(iso格式的原装系统,不是什么老毛桃之类的

操作步骤

  1. (通过UEFI启动方式)启动这个系统安装盘

  2. 在跳出让你选择语言和输入法的对话框的时候,按 Shift + F10 启动控制台

  3. 输入 diskpart 进入这个命令行程序。
    然后输入 list disk 找到你efi分区所在的硬盘,
    输入 select disk ## 表示磁盘序号) 选中目标磁盘

  4. 然后输入 list partition 列出这个磁盘的所有分区,
    找到efi分区,输入 select partition # (# 表示efi分区的序号)。
    然后我们需要给这个分区指派一个盘符,可以随便取,我们不妨用 G ,
    所以,输入 assign letter=G

  5. 到这里,前期的准备工作基本做好了。
    我们可以输入 list vol 检查一下,准备工作是不是真的做好了
    如果你能找到刚才指派的盘符为 G 分区类型为 FAT32 的分区,说明OK了

  6. 现在我们可以退出diskpart这个命令行程序了(不是点关闭按钮!)
    输入 exit 来退出diskpart这个命令行程序,然后现在你应该在 X:\Sources 这个目录下

  7. 然后我们需要进入efi分区的这个目录 G:\EFI\Microsoft\Boot\ 如果没有,则手动创建他们。然后 cd /d G:\EFI\Microsoft\Boot\ 进入这个目录

然后我们只需要以依次行如下命令即可:

bootrec /scanos     
bootrec /fixmbr    
bootrec /fixboot
bootrec /rebuildbcd    
bcdboot C:\Windows /l en-us /s G: /f ALL

注意! 上文中的,C:\ Windows 要根据实际情况填写,比如我的就不是C,而是D。具体信息会在你输入第一行命令后有所显示,届时注意观察

当最后一个命令成功执行后,就大功告成了!

其他说明

  1. 这个过程确实会保证Windows的efi引导得到正确设置,不过也有可能会覆盖你Linux的引导(只是有可能,我的就没被覆盖)。但是这不打紧,因为用grub-mkconfig、efibootmgr等工具添加Linux的引导要比整出一个Windows的efi文件来简单的多的多。

  2. 记得一切都弄好后,及时把指派的那个盘符(我们这里是 G )及时的取消掉,否则他会一直出现在你的我的电脑里,不仅烦的一批还比较危险。

本文标签: 文件 找不到 疑难杂症 启动项 双系统