[Arch]-15-双系统重装后引导丢失与修复

引言

因 Linux 根分区容量不足,准备把 Manjaro 换成 EndeavourOS,备份后格式化了 Linux 硬盘。原本双系统分置两块硬盘,以为可独立启动,但安装 Windows 时,它自动把引导写进了 Linux 的 EFI 分区。格式化 Linux 硬盘后,Windows 引导一并丢失,BIOS 选盘也无法启动,故需修复 Windows 引导。但这还没完,修复了Windows引导之后,我发现EndeavourOS的Systemd-grub无法支持我Windows的启动方式(旧),所以只能使用第三方的rEFInd替代。

文章目录

0×1.修复Windows引导

● 进入修复环境
用 Windows 10/11 安装 U 盘 启动电脑
到安装界面 → 找到 修复计算机 选项
疑难解答 → 高级选项 → 命令提示符

					
					# 首先确定windows是存放在哪一块硬盘
					#1. 进入磁盘分区工具
					diskpart

					#2. 列出所有磁盘,找到你的Windows硬盘
					list disk

					#3.选择磁盘0..1...2依次根据磁盘号进行排查
					select disk 0

					#4.查看磁盘分区信息
					detail disk

					#5.重复上面3-4步,因为我的Windows分区标识号自己改过名,所以很快就找到了我标注的“C:Windows系统盘”定位到了磁盘2才是我Windows的那块硬盘

					#6.选中磁盘2,查看分区信息,然后选中系统盘,根据分区大小判断(或者向我这样,改过系统盘的名称,一眼就能看到),从磁盘的分区信息看到,第2个分区就是我的系统分区
					select disk 2
					detail disk
					#选中windows系统分区,select volume 2 是你的 Windows 系统分区的卷标
					list volume
					select volume 2
					#给系统分区分配一个盘符W
					assign letter=W
					# 再输入attributes volume clear readonly清除只读属性
					attributes volume clear readonly

					#7.因为我Windows安装的时候使用的是GPT的分区方式,diskpart工具不支持,只能换bootrec
					# 先输入 exit 回车退出 diskpart,然后执行 bootrec /fixmbr
					exit
					bootrec /fixmbr
					# 输入W:回车,进入刚才分配的W盘,也就是windows系统盘
					W:
					# 用下面的命令来修复引导程序
					bcdboot W:\Windows /s W:

					# 修复完成后,硬重启电脑,现在就已经能够通过BIOS选中Windows所在硬盘进入windows了
					
					

0×2.使用配置rEFInd作为双系统引导器

● 安装 rEFInd 主程序(官方源直接装,没有依赖问题)

					
					#安装
					sudo pacman -S --needed refind

					# 一键安装到 ESP 分区,自动完成所有部署,rEFInd会自动扫描所有硬盘,加载有引导文件的系统
					sudo refind-install
					
					

到这里,其实重启就能够看到rEFInd菜单了,能够选Linux或windows启动。

● 修复 rEFInd 重复图标问题

					
					# 修改rEFInd主配置文件,添加或修改下面的内容
					sudo vim /efi/EFI/refind/refind.conf

					# 隐藏产生重复图标的 BOOT 备用引导文件夹
					dont_scan_dirs ESP:/EFI/BOOT

					# (根据你自己的系统修改)我是EOS所以只保留 EOS 和 Windows 启动项,精简菜单
					also_scan_dirs ESP:/EFI/endeavouros,ESP:/EFI/Microsoft
					dont_scan_dirs +,*

					# 可选:设置超时和默认启动项(默认的超时好像是20秒,太长了)
					timeout 5
					default_selection EndeavourOS