客户报障重启系统后无法进入系统,通过控制台看到系统界面报:kernel panic – not syncing: Attempted to kill init! exitcode=0x00007f00
原因:
根本原因是由于 kernel 和 其它软件 版本不匹配造成的。
这里的 “其它软件” 就是 glibc ,因为这行错误是 glibc 报的。
客户操作过内核?先进入单用户模式查看历史命令有安装glibc2.28
特别提醒一下
glibc 出错你会出现什么问题:
- 影响最小的情况下,无法解析名称空间(不过你可以通过ip连接网络)
- 无法使用rpm yum (对文件非常熟悉的话解包复制还是可以的)
- 无法使用 su 登陆,无法切换用户(单是这样的话单用户模式还是可以使用的)
- 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,即使升级也要做好万全的准备!