so NVIDIA, f**k you.
美好的一天,从 paru 滚动更新系统开始。
看到了内核 linux-zen 有更新,我还在期待能够解决最近新出现的与 AMDGPU 集显驱动相关的卡死 bug。
就在新内核已经安装完成,正在 install nvidia dkms 时,系统卡死了…
切tty、键盘灯和 sysrq 都没有响应,这意味着我的 kernel 已经成功死掉了。
而 mkinitcpio 还未完成,意味着我的新 initramfs 初始化内存盘镜像还未生成,系统现在完全不可引导启动。
抱着做好抢救系统的准备,我强制关机并重启了。果然,在 GRUB 引导页面只看到进入 UEFI setting 的入口,linux 和 linux-fallback 引导都不可用。
在群里确认完抢救的注意事项之后,我拿出了我的 archiso 盘,引导进入并开始修复系统。
修复过程
问题出现在了更新内核的过程中卡死,这意味着正常的更新流程并没有完成,也就是上面卡住的 mkinitcpio 及其之后步骤。
那么,只要再次覆盖更新,确保流程顺利完成,对文件系统的更新完备就可以了。
进入 archiso 之后,和安装系统的前几个步骤类似, 禁用Reflector服务 -> 连接网络 -> 同步系统时间 -> 更新系统镜像源 -> 直接完整挂载系统分区 -> arch-chroot 进入系统。
chroot 进入系统后,这个时候大概率 pacman 的运行占用锁还没有被正确释放,直接删除掉即可解除占用。
| |
之后查阅 /var/log/pacman.log,看一下最后一次未完成的更新都更新了哪些软件包,直接都再次覆盖安装一次即可。
| |
安装后检查确保所有事务均已完成,如果不放心可以再次手动进行一次 mkinitcpio。
| |
完成系统覆盖更新并生成 initramfs 之后,和安装系统的后几个步骤,退出chroot -> umount系统分区 -> 重启。
如果顺利的话,你的系统应该已经恢复正常了,从 GRUB 照常引导进入系统并继续完成你的工作吧~
后记
从群里的吐槽得知, mkinitcpio 在 install nvidia dkms 时卡死并不是什么稀奇事,又慢又危险。
谢谢你 NVIDIA,让我在茶颜悦色花表演了一个小时修系统,不过也倒送了我一篇博客选题。
顺便为了方便下次出事的时候通过 archiso 抢救,还立马搓了一个完成 arch-chroot 前摇的脚本。
或许还可以考虑一下,加入对 boot 的备份,免得未来出了什么不好处理的启动问题被创飞。


...