双系统的invalid cluster 0错误

2022-06-08
2分钟阅读时长

开机的 error

更新内核后遇到了一件奇怪的事情,一旦启动过 Windows,关机再启动 Arch 就会报错如下

error: invalid cluster 0

这个错误之前在 Windows 虚拟机没完全关机时出现过,但是当时也没搞清楚原因。

查了一下,初步判断 efi 分区出问题了,先用 fsck 检查一下文件系统

fsck -r /dev/nvme0n1p1

显示了非常多的 differences,修复后再进入 Arch,又提示 prematrue end of file /vmlinuz-linux,估计是内核被修坏了,重新部署

mount /dev/nvme0n1p5 /mnt
mount /dev/nvme0n1p1 /mnt/boot

arch-chroot /mnt
pacman -Syu linux

修复后倒是能进入了,但是关机后启动 Windows,又恢复原样了😡

解决方法

感觉像 Windows 又把 efi 重置回之前那个状态,到 Arch CN 的官方 tg 群组问了一下,有个大佬提醒了我:“开了 Windows 的「快速启动」功能,EFI 文件系统没有被卸载”

赶紧回 Windows 检查了一下,设置 > 系统 > 电源和睡眠 > 其他电源设置 > 选择电源按钮的功能(左侧),果然!!!Windows 不知道什么时候帮我开启了这项功能,关掉之后问题就解决了。

因为现在系统都是安装在固态硬盘上面,所以关闭了也不会对启动速度产生太大的影响。

「快速启动」是什么黑魔法

根据我肤浅的理解,快速启动类似于休眠。

系统一旦关机,内存就会被清空 (拿液氮冻住内存的叉出去! 不过如果开启了快速启动,系统会将内存中的所有内容保存到硬盘中,生成一个名为 hiberfil.sys 的文件,而在唤醒休眠或者再次开机时,内存则会直接读取 hiberfil.sys 文件,无需重新逐一加载驱动及程序等。

难怪之前电池没电关机了,系统还能还原关机前的工作状态,所以和我大喊 Windows yes!!!(逃 ~