双系统修复windows引导

最近尝试安装ArchLinux了,结果一时手贱把windows的esp也就是efi分区格式化了,试了各种办法修复都没成功,研究了一整天才在下午慢慢有了头绪,下面借鉴一些网上的资料讲解一下我的修复过程!

一、首先保证你的bios里的启动模式是UEFI模式(这不是废话么),插入U盘启动后手动选择启动项,选择你的win10启动U盘。顺利进入windows安装界面。

选择好语言之后点击“修复计算机”,然后在出现的页面中依次选择 疑难解答->命令提示符 然后就可以在管理员的模式下进入cmd啦。

修复启动引导需要用到bcdboot命令以及diskpart工具,关于这两个命令具体是干什么的,我建议百度。

在这里科普一下UEFI引导系统的工作原理

  • 首先什么是efi引导分区(esp或简称引导分区)?

该分区必须存在GPT磁盘中,用来存储efi引导文件,它采用fat32文件系统。

  • efi长啥样(windows下)

主要文件的结构是这样的:

efi\boot\bootx64.efi

efi\microsoft\boot\bcd

  • efi工作流程?(windows下)

uefi 在bios启动时,自动查找硬盘下引导分区的bootx64.efi,然后由bootx64.efi引导efi下的bcd文件,由bcd引导指定系统文件(一般为c:\windows\system32\winload.efi)

既然是要修复启动引导,那么说明他以前是可以用的!因此需要找到以前的引导存放的位置(windows的efi分区),这里我使用diskpart工具。

用到的命令是list和sel,分别是列出和选择。

list disk列出所有挂载磁盘
list par列出当前磁盘分区
sel disk n选择磁盘 n是编号
sel par n同理

找windows的引导分区,大小一般都是一两百MB,找到之后选择它。我电脑是双硬盘,一块256GSSD一块1THDD,系统是装在SSD上的,同时这块SSD也是GPT磁盘,因此EFI分区肯定在它上面,然后列出它的分区,找到引导分区位置。

找到之后用assign命令给这个分区分配一个盘符,以便修复它,我这里给他一个o,然后就可以退出diskpart工具啦。(如果提示不是内部命令,请先输入 diskpart )

引导的本质就是告诉电脑,要启动的系统在哪。修复它,要把启动需要的引导文件写到efi分区。前面已经知道efi分区的位置了,还给他分配了盘符o,因此要修复它还需要知道windows的系统在哪里,通常是c盘,也就是c:\windows

现在需要用bcdboot命令来修复这个分区

请按照格式输入下面的指令。

经常bcdboot后面的c:\windows是有问题的,磁盘正常情况下是启动盘,但这里系统经常把启动盘分到D盘,最好运行dir命令查看一下。

格式 dir c: dir d: 这样的格式,我的启动盘就被系统分为了D盘。

执行之后,提示 “成功创建启动文件” 就表示引导添加成功了,exit退出命令行,随后点击退出并继续。

重新开启,就可以看到熟悉的画面~

参考:https://blog.csdn.net/A_Sen_A/article/details/89545311

修复完之后发现我的ArchLinux没法引导了,只能用开机的F9选择进入了,气得我直接重装Arch了,以后操作之前一定要备份!!!!别人七夕都陪异性朋友过,我陪电脑过了一天,一直到晚上十一点半。。。。。

Windows.png

Arch Linux