首页 » linux » 正文

Centos8安装glibc造成系统无法启动报kernel panic – not syncing: Attempted to kill init!解决方法

客户报障重启系统后无法进入系统,通过控制台看到系统界面报:kernel panic – not syncing: Attempted to kill init! exitcode=0x00007f00

原因:

根本原因是由于 kernel 和 其它软件 版本不匹配造成的。

这里的 “其它软件” 就是 glibc ,因为这行错误是 glibc 报的。

客户操作过内核?先进入单用户模式查看历史命令有安装glibc2.28

特别提醒一下
glibc 出错你会出现什么问题:

  1. 影响最小的情况下,无法解析名称空间(不过你可以通过ip连接网络)
  2. 无法使用rpm yum (对文件非常熟悉的话解包复制还是可以的)
  3. 无法使用 su 登陆,无法切换用户(单是这样的话单用户模式还是可以使用的)
  4. bash 使用不了,这种情况下整个系统你只能使用 cd 或者 export 等屈指可数的指令。

着手处理,由于是云机找了个同版本的镜像加载进系统,挂载已损坏的系统盘,替换glibc2.28文件,替换:/lib64/libc-2.28.so 重启加载系统依然无法启动。想着替换一个文件不行那就把全部是2.28版本的文件均替换掉

执行命令:find / -name 2.28

镜像系统:

/usr/lib64/libresolv-2.28.so
/usr/lib64/libutil-2.28.so
/usr/lib64/libnss_compat-2.28.so
/usr/lib64/libmvec-2.28.so
/usr/lib64/libnss_dns-2.28.so
/usr/lib64/librt-2.28.so
/usr/lib64/libdl-2.28.so
/usr/lib64/ld-2.28.so
/usr/lib64/libanl-2.28.so
/usr/lib64/libpthread-2.28.so
/usr/lib64/libm-2.28.so
/usr/lib64/libnss_files-2.28.so
/usr/lib64/libc-2.28.so
/usr/lib64/libBrokenLocale-2.28.so

损坏系统:
/mnt/usr/lib/libresolv-2.28.so
/mnt/usr/lib/libutil-2.28.so
/mnt/usr/lib/libnss_compat-2.28.so
/mnt/usr/lib/libnss_dns-2.28.so
/mnt/usr/lib/librt-2.28.so
/mnt/usr/lib/libdl-2.28.so
/mnt/usr/lib/ld-2.28.so
/mnt/usr/lib/libanl-2.28.so
/mnt/usr/lib/libpthread-2.28.so
/mnt/usr/lib/libm-2.28.so
/mnt/usr/lib/libnss_files-2.28.so
/mnt/usr/lib/libc-2.28.so
/mnt/usr/lib/libBrokenLocale-2.28.so
/mnt/usr/lib64/libresolv-2.28.so
/mnt/usr/lib64/libutil-2.28.so
/mnt/usr/lib64/libnss_compat-2.28.so
/mnt/usr/lib64/libmvec-2.28.so
/mnt/usr/lib64/libnss_dns-2.28.so
/mnt/usr/lib64/librt-2.28.so
/mnt/usr/lib64/libdl-2.28.so
/mnt/usr/lib64/ld-2.28.so
/mnt/usr/lib64/libanl-2.28.so
/mnt/usr/lib64/libpthread-2.28.so
/mnt/usr/lib64/libm-2.28.so
/mnt/usr/lib64/libnss_files-2.28.so
/mnt/usr/lib64/libc-2.28.so
/mnt/usr/lib64/libBrokenLocale-2.28.so

上述是查找正常的系统和损坏系统包含2.28的文件

删除如下文件
/usr/lib/libresolv-2.28.so
/usr/lib/libutil-2.28.so
/usr/lib/libnss_compat-2.28.so
/usr/lib/libnss_dns-2.28.so
/usr/lib/librt-2.28.so
/usr/lib/libdl-2.28.so
/usr/lib/ld-2.28.so
/usr/lib/libanl-2.28.so
/usr/lib/libpthread-2.28.so
/usr/lib/libm-2.28.so
/usr/lib/libnss_files-2.28.so
/usr/lib/libc-2.28.so
/usr/lib/libBrokenLocale-2.28.so
用正常系统的下的libc文件替换如下文件
/mnt/usr/lib64/libresolv-2.28.so
/mnt/usr/lib64/libutil-2.28.so
/mnt/usr/lib64/libnss_compat-2.28.so
/mnt/usr/lib64/libmvec-2.28.so
/mnt/usr/lib64/libnss_dns-2.28.so
/mnt/usr/lib64/librt-2.28.so
/mnt/usr/lib64/libdl-2.28.so
/mnt/usr/lib64/ld-2.28.so
/mnt/usr/lib64/libanl-2.28.so
/mnt/usr/lib64/libpthread-2.28.so
/mnt/usr/lib64/libm-2.28.so
/mnt/usr/lib64/libnss_files-2.28.so
/mnt/usr/lib64/libc-2.28.so
/mnt/usr/lib64/libBrokenLocale-2.28.so

替换完成后重启已成功进入系统,关于Centos8安装glibc造成系统无法启动报kernel panic – not syncing: Attempted to kill init!至此结束

总结:

铁网维提醒:glibc是linux非常底层的工具库(内核之上,一切工具之下),一旦出错很可能整个系统无法使用,因此如非特殊情况,尽量不要升级glibc,即使升级也要做好万全的准备!



发表评论