[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