我的系统是centos7.5, 理论上Centos7都可以使用该方法解决问题。 首先慎重提醒各位:glibc升级会产生无法预料的后果!由于php7需要高版本的glibc-2.17才可以使用,所以作死手动去更新了glibc2.17,使得重启系统后图形界面消失。(Redhat/Centos升级此类安装包最好用yum升级,因为系统内的程序对他们的依赖很大,升级会导致大部分程序无法使用。)
解决思路:
用系统自带的rpm包去覆盖已经安装的程序。 由于此时可能连系统都进不了了,所以需要光盘进入到rescue模式去挂载系统盘修改安装rpm包
步骤
下载好该系统版本安装光盘的iso,比如我的系统是centos7.5,则我在官网下载iso:centos-7-x86_64-dvd-1804.iso 从U盘启动进入rescue模式,需要在bios中设置U盘优先启动,根据提示进入到rescue模式。
U盘启动界面选择Rescue 进入到rescue模式之后,linux系统选择U盘启动项后会出现找不到U盘,可根据以下提示进行:
将CentOS 7镜像刻到U盘之后,向服务器安装时,使用U盘启动会出现两种启动选项,一种是UEFI启动选项,一种是默认的启动选项,如果不使用UEFI方式安装,那么一般是没有问题的,如果选择UEFI方式安装系统,那么引导系统时会出现如下的提示:
[sdb] No Caching mode page found
[sdb] Assuming drive cache:write through
.... Could not boot /dev/root does not exist
然后命令行就卡在这了,现在只需要耐心等待,等一会之后会不断的滚动错误警告,这个时候继续等待,那么一会就会出来命令行输入界面,这个时候输入以下命令:
ls /dev/sd*
输入命令之后会列出所有的存储设备,这个时候一般情况下第一块硬盘是sda,如果有多个分区,那么依次就是sda1、sda2等等,如果有两块硬盘那么就是sdb,U盘一般是排最后的号,如果有一块硬盘,那么U盘就是sdb,如果有两块硬盘,那么U盘就是sdc,U盘一般会有sdc和sdc4两个选项,sdc属于U盘存储,sdc4就是镜像所在分区了,这样一般是没有问题的,如果出现问题,那么接下来多配置几次就好了,接下来输入命令reboot重启计算机,在安装界面,先不要选择安装,这个时候按一下e键,会进入编辑界面,移动光标进行如下修改:
在第二行默认是:vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
把这行修改为:vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdc4:/ quiet 我用的u盘是/dev/sdb4:/
就是把hd:和quiet之间的内容修改为U盘镜像所在位置这样就可以了,注意要写成/dev/sdc4:/
然后根据提示按Ctrl+X键就可以开始安装了,现在就正常进入安装界面了
已经进入rescue模式
进入到系统所在目录将之前升级之后的glibc删除干净,此操作先备份好系统
# cd /mnt/sysimage/lib64 //进入到要修复系统的lib64目录 # rm -rf *2.18* //此操作会删除所有与2.18版本glibc的文件 # cd / //回到rescue自带系统的目录
挂载iso镜像以便使用rpm包
# mkdir media //创建目录 # mount /dev/cdrom /media //挂载光盘 我用的u盘是/dev/sdb4
安装rpm包
# cd /media/Packages //进入到rpm包的目录 # rpm -ivh --force --root=/mnt/sysimage glibc-* //安装与glibc有关的rpm包
重启电脑进入系统后,系统会自动修复好并自动重启,此时应该可以恢复正常。
注意:此方法仅针对Redhat7/Centos7以上。
参考此文章:https://blog.csdn.net/weixin_42881528/article/details/85142674
https://www.cnblogs.com/freeweb/p/5213877.html