Kernel Panic

晴天霹雳

昨天晚上正打算用arch美美复现一个ai攻击论文,想着先更新一下arch,发现electron更新太慢了,决定先不更新electron,又发现老板electron依赖几个包不能更新,于是决定这些包也不更新。

没想到,这次更新就是噩梦的开始。

ead38818e24c76b0c9c7716c6bc6d802.jpg

事件经过

其实更新并没有正常结束,刚更新完的时候就已经有蹊跷了

pacman不能运行,报错缺少libicuuc.so.76

但是我并没有在意,认为

重启就好啦☝️🤓

于是重启之后就出现了大名鼎鼎的 KERNEL PANIC

当时我的表情是这样的:

598ff8b784cb741bd3fd139a6f9324ac.jpg

做实验做到蓝屏的救赎感谁懂

排错过程

装个启动盘先进文件系统看看怎么回事

第一次挂载

进入文件系统尝试pacman发现还是缺少库,定睛一看,这不正好是我没有更新的包之一吗😨,于是

  • 尝试将老的包改名为新的包,还是不行
  • 尝试将iso包里面的pacman拷贝到系统里面,还是不行
    • 原因是包是新下的,里面的pacman也是最新的
  • 尝试将iso包里面的libicuuc.so.76拷贝到系统里面,还是不行
    • 仍然缺少另一个库
  • 在实验室消防员的指导下直接上dirty操作

1275272e4c0fffda80b3988c36682159.jpg

当然是: 把iso里面整个/usr/lib的文件夹拷贝到系统里面☝️🤓

不出意料,并没有成功,不过报错是库文件里面的某个符号的问题,怀疑是不是没有将之前改名的libicuuc.so.76覆盖掉,查看了一下sha256sum,发现确实没有覆盖掉,删掉再拷贝,终于能运行pacman了

尝试用pacman更新系统,报错了:

libicuuc.so.76已存在

598ff8b784cb741bd3fd139a6f9324ac.jpg

还好pacman有强制覆盖的功能--overwrite,同时将electron全部删掉,终于成功更新了系统和内核,美美拔u盘重启🤓

第二次挂载

既然有第二次挂载,那也就说明并没有成功,让实验室消防员来看了看panic报错之后告诉我可以试试重新生成一下fstab

于是重新生成了一下fstab,重启,还是panic

第三次挂载

把报错复制到网上,发现说需要重新生成所有的Initramfs还有更新Grub

于是尝试了一下,终于,我的arch又能用了

88733b2f1c6e835ab223b4dc1974c99e.jpg