拯救grub
Zane Lv4

前言


在使用Win的时候,切换成Win的系统就看到中间圆圈转着更新,就预料到要坏事了,过不起然使用win以后切换Arch时发现grub的选项已经没有了,而是系统自动引导成win11系统,这个事情告诉我们折腾双系统一定要关闭win下的强制更新。

正文


修复grub

grub启动项没有了,首先就想到的是win11更新后,将自己的boot卸载了原先boot的分区中,并且由于windows优秀的排他性,直接给我的grub给干没了。

EasyUEFI

这个工具可以在windows中方便的进行UEFI启动的管理(当然是想办法搞破解版的),因为现在电脑压根不会进入grub,bios中也不可能有grub启动项这个选项,因此我需要做的是手动创建一个grub启动项。

使用工具发现windows的boot真是一个“好”东西,直接在我的硬盘中扣出了256M重新写了一个fat格式的启动盘,完完全全的绕过了我的grub启动盘,这个时候就好办了,重新添加一个指向我原来grub分区的引导就好了。

结果不出所料重启后选择grub已经可以了,只不过是进入grub rescue模式,报的还是no such partition的错误,证明我的原本的启动盘是完好无损的放在原处的。

修复grub进入ArchLinux

1
2
3
4
5
6
7
8
9
10
11
12
13
# 使用ls查看硬盘名
(hd0) (hd0,msdos14) (hd0,msdos13) (hd0,msdos12)…

# 如果忘记了具体分区的硬盘名,可以挨个执行ls ×××××/boot/grub直到不是出现error: unknown filesystem.
ls (hd0,msdos1)/boot/grub

# 依次设置prefix root
set root=(hd0,msdos13)/boot/grub
set prefix=(hd0,msdos13)/boot/grub

# 恢复normal模式就正常的回到grub了
insmod normal
normal次

此时进入ArchLinux执行一下命令;

1
sudo grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub

这个命令是让grub重新写入一次硬盘,具体的参数要根据当时装系统挂载启动盘的参数来定。


修复win11 Code 0xc0000098

回到win11想着原先自动写的启动盘是不是可以格式化了,结果格完win11又蓝屏了,好嘛,在win里修了linux现在在去linux中修win。

win修复工具

这个就没什么难度,用U盘重新做一个win11的启动盘,开机后疯狂按F12,选择USB启动,前提是在BIOS中设置了允许USB启动盘以及安全模式关闭。

正常的装系统步骤,但是在选择安装的那个界面点击左下角的修复工具或高级选项字样。

选择地一个修复工具等待后,就可以正常进入win系统了。

至此整个原地踏步的工作就结束了。


grub中添加win启动项

因为win11是支持grub启动的,于是接下来就是将win自己的boot盘给格式化,通过grub对arch以及win11同时支持。

grub customizer工具

这个工具是Linux下,对grub方便进行管理的工具能够通过可视化的界面生成grub.cfg配置文件。

在工具中添加一个新的启动项,编辑如下:

1
2
3
4
5
6
menuentry "Windows" --class windows --class os $menuentry_id_option 'osprober-efi-CCBE-74D2' {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root CCBE-74D2
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

注意: 这里的CCBE-74D2是我的启动分区的uuid,可以通过fsdisk -l或者cfdisk /dev/****进行查看分区uuid;

保存后会自动生成 grub.cfg 到启动分区下的/boot/grub/grub.cfg.

在shell中执行sudo grub-mkconfig -o /boot/grub/grub.cfg,写入grub;

重启后grub中就同时有了Arch 以及 win11,这是可以在bios的设置中将win的启动项给删除;


总结

虽然看起来一直在白忙活但。。。好吧确实是白忙活,更能了解操作系统如何启动不是。

复现效果应该很差,很多小细节没有记录只是写了一个大的流程。


由 Hexo 驱动 & 主题 Keep