centos 7.9默认的glibc为2.17,因为要安装一些软件,需要升级到glibc 2.18,而从源码进行编译和安装,安装失败,导致系统崩溃。
系统崩溃首先想到的是利用启动盘进行救援,而利用centos 7.9的启动盘始终无法挂载到系统,出现类似“you don;t have any linux partitions ”的提示,发现源系统无法挂载到/mnt/sysimage下,反复试了几次都不行,后来想到DELL服务器从某个版本开始不再支持centos 7,故尝试了下centos 8的启动盘,顺利挂载源系统。
挂载源系统后,执行命令chroot /mnt/sysimage 后,切换到cd /mnt/sysimage后,可以执行ldd /bin/bash查看依赖包是否有缺失,如有缺失,可从启动盘的/lib64目录下复制,即cp /lib64/libc-2.17.so /mnt/sysimage/usr/lib64/等。
退出救援模式后,系统可以启动,但是仍无法进入图形界面,可利用Ctrl+Alt+F2切换至命令行界面。
进入命令行界面后,发现系统可以ping通IP,但是无法ping通域名,nslookup可以查询域名,很奇怪,查阅资料,有人提示可以修改/etc/nsswitch.conf文件中的host,尝试后无效。
查看/usr/lib64/下的软链接,发现libnss_开头的软链接指向存在问题,修改后,可以ping通。
修改软链接中出现了误操作,导致系统重启后,输入用户名后直接提示login incorrect,不让用户输入密码,尝试使用单用户模式进行修复,发现无法挂载U盘,拷入东西。
为了恢复系统,尝试使用救援模式挂载U盘拷入glibc 2.18的rpm包【可从链接4的文章中嵌入的链接下载】,然后再单用户模式进行安装,拷入内容注意拷入公共文件夹或临时文件夹,如/data 或/var/tmp等等,尝试后成功。
参考链接:
1、Centos 7.x 升级glibc至2.18版本(转载),Centos 7.x 升级glibc至2.18版本(转载)_要升级 glibc 版本到 2.18 或更高版本-CSDN博客;
2、CentOS 救援模式 (rescue installed system)修复损坏系统,https://blog.51cto.com/309173854/1745376
3、Centos 未输入密码提示login incorrect,Centos 未输入密码提示login incorrect-CSDN博客
4、升级glibc至2.18,https://www.cnblogs.com/SyXk/p/14657676.html