Windows 更新的链式反应

  • ~2.92K 字
  1. 1. Windows 更新干掉了自己
  2. 2. Windows 更新干掉了 Arch 和自己
  3. 3. 毁灭与新生
  4. 4. 新建博客

Windows 更新干掉了自己

2024年11月22日,就在我开心使用 Arch+Win11 双系统的时候,一次 Windows 重启更新后,又抽搐般的反复重启了几次。当在 grub 界面选择 Windows 作为启动项时,屏幕上赫然显现下面2行字:

1
2
错误:文件"/efi/Microsoft/Boot/boogmgfw.efi" 未找到
按任意键继续...

然后就再也进去不 Windows 了。

我执行了grub-mkconfig -o /boot/grub/grub.cfg后,Windows 连在 grub 界面都不显示了。
后来找人帮忙,暂时解决了问题。然后,第二天,Windows 又更新了。不是,这才修好没多久啊

我于是循着前辈的足迹,又暂时解决了问题。

首先说明一下我整个的电脑环境:华为电脑,单盘(1T,无法加装硬盘,磁盘分区按先后顺序为 efi1+C+D+E+boot+efi2+/+recovery1+recovery2+recovery3 ),双系统(Win11 + Arch)注意这里的2个 efi 分区,第一个是 Windows 的,第二个是 Arch 的,grub 装在了 efi2 里,后面3个 recovery 是 Windows 的恢复分区,一般来说新电脑会有1个,其他的是 Windows 自己系统升级的产物,真正在工作的只有1个。较新的分区一般会位于磁盘的后部(更高的扇区),原厂或系统安装的分区通常在磁盘的前部(可以通过在 powershell 中使用reagentc /info查看当前使用的是哪个恢复分区)。

通过efibootmgr查看 efi 的启动顺序,会发现没有 Windows 的引导,所以可以自己手动创建一条 Windows 的引导,然后通过efibootmgr -o可以自定义启动顺序。
sudo efibootmgr --disk /dev/nvme0n1 --part --create --label "Windows(Custom)" --loader "\\EFI\\Microsoft\\Boot\\bootmgr.efi手动创建 Windows 的引导项。
sudo efibootmgr --bootnext 0002设置下次启动编号为 0002 的启动项,也就是刚才手动创建的 Windows 引导项。

接下来systemctl reboot就可以进入 Windows 了。

Windows 更新干掉了 Arch 和自己

对于 Arch 的存在,Windows 是不能够容忍的。在第一阶段,他自己更新把自己干掉了,在第二阶段,他更新的攻击目标转向了 Arch。他将 Arch 的引导从 grub 里删除了,无论怎么启动都会是 Windows。刚开始,我通过 UEFI 界面的调节还能暂时解决问题。

到后来,我在 UEFI 中设置 Windows 先,会直接进入 grub 的修复环境,桌面显示如下文字:

1
2
3
error: unknown filesystem
Entering rescue mode...
grub rescue>

解决方法:

1
2
3
4
5
6
7
8
error: unknown filesystem
Entering rescue mode...
grub rescue> ls // 查看所有磁盘分区
grub rescue> ls (hd0,gpt7) // 查看gpt7分区的类型,我们应该找到 efi 分区所在地,其他的磁盘分区大多会显示为 unknown filesystem
grub rescue> set root=(hd0,gpt7)
grub rescue> set prefix=(hd0,gpt7)/grub
grub rescue> indmod normal
grub rescue> normal // 然后就可以进入正常的 grub 引导界面啦

但是,在 grub 界面,如果选择 Windows,又会显示找不到 efi,选择 Arch 则可以正常进入起码有一个能用

如果我在 UEFI 中设置 Arch 先,那么会直接进入 Windows。

也就是说,Arch 在用原本应该是 Windows 的 efi,Windows 在用原本是 Arch 的 efi!

那么为什么 Arch 能用 Windows 的 efi,答案就是不能用,所以会显示unknown filesystem,要通过在 grub 的修复环境中选择 Arch 的 efi 才能进去。

毁灭与新生

于是,重装系统!

刚开始还是想挑战高难度一点的 Gentoo 的,但是由于挂载的问题,第一次安装失败安装了一整天啊。万念俱灰之下,又迫切需要一台能用的电脑,于是选择了单系统 Arch。还是 Arch 最平衡,不像 Gentoo 那样安装时间要特别长,又不像 deepin 和 Ubuntu 那样安装特别简单。

重装系统能解决许多历史遗留问题,但由于没有做好备份工作(主要是某些文件在项目中需要加入 .gitignore,在使用 Github 进行备份时就没有包含进去,包括项目中的 csv 原始数据,博客的 themes/butterfly 下的配置文件,按道理说这个目录下的配置文件应该放在博客根目录下,但是为什么我没有呢?也是历史遗留问题!),我丢失了很多东西。因为丢失了博客的配置文件,而我又不想再花大把时间进行博客的配置,于是新开了这个博客,并选择了一套开箱即用的主题,并调整了一下自己写作博客的思路。我想主要以文字为主(图片的路径问题在 butterfly 下也已经恼到我了,而且图片多了的话博客加载速度也慢),人类原创(有感于 notbyai ),融入英文写作。

但是我还是需要 Windows 的,正值数学实验和金工实习期间,需要 Matlab 和 3D打印的一些建模和打印软件(SolidWorks 和 Wiiboox,这俩玩意也是异常的难安装),这些在 Arch 下都没有什么特别好的替代品,只能选择在 Oracle VirtualBox 中创建一个 Win11 的虚拟机(Matlab用网页版)。中间还出了一个小问题,因为在选择新建电脑时选择了自动安装,导致没有超级管理员,后面无论是从浏览器还是从应用商店里下载的QQ或者微信都无法安装,当然,终端管理员也无法打开。解决方法就是重装,新建电脑时不要选择自动安装。

新建博客

在看了各种博客框架后,我依然选择了 Hexo,并解决了一些包括 npm 全局安装导致的 root 权限等一系列历史遗留问题。吐槽一下,Hexo

首先是在放应用的地方局部安装一个 hexo:npm install hexo

然后将这个 hexo 添加到环境变量中(写在~/.zshrc中):export PATH="$PATH:$HOME/app/hexo/node_modules/.bin
这样就不用npx hexo啦。