此文档的运行环境为:
导致服务器出问题是在将glibc的版本由2.14降至2.12的过程中,修改glibc.so.6文件软连接的时候误操作,将glibc.so.6重命名错误!导致系统崩溃!因为在当时安装mysql5.7时,需要glibc的版本为2.14,所以当时升级为glibc-2.14,后来mysql采用官方编译好的版本进行的安装,所以就不对再对本地的glibc版本有要求了;centos6对glibc2.12以上的版本兼容不太好,有可能会有一些兼容问题,比如这次出现的vim输入汉字出现乱码!所以今后再出现安装软件对本地库有版本需求的时候,要慎重考虑升级本地库版本!
操作系统目录:/lib64/下,有libc.so.6文件,此文件为操作系统执行glibc库的关键文件,如果此文件误删除或重命名,那么会造操作系统的崩溃!
文档中的失误场景为:将/lib64/libc.so.6文件误命名为/lib64/libc.so.6.bak
此文档的方法不只适用于误操作glibc文件导致系统崩溃,也适用于其他系统级文件或库误操作导致的系统崩溃!
此时ssh远程登录无法使用,需要使用linux救援模式启动系统,如果重启主机会出现:
vmware BIOS启动配置,在vmware中设计目标主机,在设置中如下配置:
保存配置后:
在虚拟机上选择启动进入”BIOS”,不同vmware或不同虚拟化应用,可能此选项位置不相同!但是只要知道开机进入”BIOS”即可!
进入BIOS成功的页面如下:
按方向键”->”,进入”Boot”
按方向键”上箭头”,”下箭头”来选择图中几个选项,选中之后,利用”+”或”-“来调节顺序,使”CD-ROM Drive”排至第一位!然后按”F10”保存配置:
选择”Yes”,然后进入救援模式:
回车启动!即可进入救援模式!
上一步回车后,进入选择语言页面:
选择英语后选择 “US”:
然后询问是否进行网络配置,这里先不去配置:
接下来询问是否继续,选择继续:
点击”ok:
点击ok后,选告诉你,系统挂在至”/mnt/sysimage”:
选择”ok”,回车,选择进入shell模式:
最终,进入救援模式成功:
上图为执行shell的地方!
执行命令”chroot /mnt/sysimage”,会出现如下报错:
问题就是上面提到的,把”/lib64/libc.so.6”修改为了”/lib64/libc.so.6.bak”,注意,在当前shell环境下,”/”为之前挂载的镜像的根目录,而原本的主机的根目录为”/mnt/sysimage”,所以需要去”/mnt/sysimage/lib64/”目录把”libc.so.6.bak”修改回”libc.so.6”,所以执行命令:
mv /mnt/sysimage/lib64/libc.so.6.bak /mnt/sysimage /lib64/libc.so.6
修改完成后,执行命令查看是否成功,执行” chroot /mnt/sysimage”,没有出现任何报错信息,则修改成功!
如果文件丢失,除了直接修改出问题的文件以外,也可以直接从镜像中拷贝缺失的libc.so.6文件到/mnt/sysimage/lib64下:
cp /lib64/libc.so.6 /mnt/sysimage/lib64/libc.so.6
在命令行内输入”exit”命令,然后选择重启主机,即正常启动成功:
关闭后,请将vmware的启动设置恢复成原来的样子。