被Windows更新狂暴鸿儒的Arch Linux

总字数:1133字,预计阅读时间 01分 53秒。

在Windows更新之后发现Linux无法启动之后面露难色的两人一人。

故障现象

某日Windows进行了一次更新,本以为无事发生,结果第二天试图启动Linux时发现:

Initramfs unpacking failed: invalid magic at start of compressed archive

修复

首先判断是Windows更新橄榄了Linux启动使用的initramfs导致的,关于这个东西的介绍详解Arch boot process

于是尝试使用Arch ISO启动系统重新生成initramfs解决。

arch-chroot之后使用mkinitramfs -P试图重新生成initramfs,但是在重启之后仍然出现类似的提示。遂求助伟大的搜索引擎。

发现搜索引擎给出了相同的解决方案,,,这时我已经开始慌乱了。再次进入Arch ISO打包home目录为重装做准备。

有帖子分析说Windows更新可以会把/boot的分区格式给橄榄,可以尝试使用fsck进行修复。

进入Arch ISO,使用

fsck -r /dev/nvmen0p1

对分区进行修复,没想到还扫描出现错误:

There are differences between boot sector and its backup.
This is mostly harmless.

(具体提示的错误bit我给忘记了)

我选择使用Copy backup to original来修复这个错误。还出现了一个

two or more files share the same cluseters

的错误,冲突的文件是amd-ucode.imgbootmgfw.efi.mui文件,我也选择了修复。

我又在网上翻到一篇帖子说可以试试pacman更新系统和重新安装linux包,再想到这两天一直在Windows下写文档,确实可以试试,于是就:

pacman -Syu
pacman -Sy linux

回来吧,我的Linux,,,

总结分析

因为在第二次进入Arch ISO中我同时使用了fsckpacman两个工具同时进行修复,因此我无法判断具体是哪个工具修复了这个问题,不过鉴于这次更新也没有安装新的内核版本,而且我之间也已经手动执行过mkinitramfs -P

在加上在互联网上已经有大量关于Windows更新可能会破坏启动分区,尤其是这次的Windows更新还是一个较大的版本更新,因此我认为就是Windows干的好事,微软你不得house,,,

Update at 2023-11-12

今天早上爬起来一看,乐,Linux又启动失败了。

这波我实在是蚌埠住了,直接把Windows干掉算了,,,,

得到的教训就是如果要装双系统,最好在两块不同的硬盘上安装系统,这样Windows就没有办法对于Linux那边的boot分区上下其手了。

2021 - 2024 © Ricardo Ren, 由 .NET 8.0.8 驱动。