Centos7 -- glibc 升级失败、意外删除、故意删除后的处理方法
第一部分:测试(如果不是想测试效果,可以直接跳到第三部分)
鉴于不久前 glibc-2.29 升级失败导致一系列的工具无法正常使用,‘’
本着研究精神的我决定删除 glibc及其库文件 ,测试影响范围到底有多广:
# rpm -e glibc glibc-devel
提示: gcc 依赖 glibc-devel (因为我的gcc是升级过的,正常不需要依赖它)
几万个包 依赖 glibc
# rpm -qf glibc //预习一下glibc到底包括哪些文件,缺哪个你就知道是找它哦
# rpm -e glibc glibc-devel --nodeps //好孩子不要输入这个哦!
warning: %postun(glibc-2.17-260.el7_6.3.x86_64) scriptlet failed, exit status 127
于是报错:
# rpm // ls 、 cp、reboot、shutdown、init 等系统指令都是缺同一个文件,就不列明了
-bash:/bin/rpm: /lib64/ld-linux-86-64.so.2: bad ELF interpreter: No such file or directory
# yum
-bash:/bin/yum: /usr/bin/python: bad interpreter:No such file or directory (yum本质上就是一个python脚本)
# ldd
-bash:/bin/ldd: /usr/bin/bash: bad interpreter:No such file or directory (ldd是shell脚本呢)
# cd //居然是正常的!
简单来说,基本上字符界面(终端)下的所有指令均不可使用,你无法在系统登录状态下做任何的拯救。
但是有趣的是,已加载的gnome桌面所有左右键操作均为正常,所以桌面没退出的话还有一方法,就是当windows救吧(不过重启肯定是起不来的)
第二部分 土方法,缺哪个补哪个(可忽略):
1. 准备一个U盘启动盘(一个好的运维随时都有一个U盘启动盘)
2.按住电源键重启(你的指令都用不了)
BIOS选择U盘启动 (不同设备不同)
进入拯救模式 (Troubleshooting --> Rescue a CentOS system)
3.提示:
Rescue
The rescue environment will not attempt to find your Linux installation and
mount it under the directory : /mnt/sysimage . You can then make any changes
required to your system. Choice '1' to proceed with this step.
You can choose to mount your file systems read-only instead of read-write by
choosing '2' .
If for some reason this process does not work choose '3' to skip directly to a
shell.
1)Continue
2) Read-only mount
3) Skip to shell
4) Quit(Reboot)
Please make a selection from the above :
选择1 回车
chroot /mnt/sysimage
会出现以下三种报错:
chroot:failed to run command '/bin/bash': No such file or directory //如果有留意上面测试步骤,会发现 /bin/bash 实际上缺的是 /lib64/ld-linux-86-64.so.2 这个文件
sh-4.2# cp /lib64/ld-linux-x86-64.so.2 /mnt/sysimage/
/bin/bash:error while loading shared libraries: libdl.so.2 : cannot open shared object file: No such file or directory
sh-4.2# cp /lib64/libdl.so.2 /mnt/sysimage/lib64/
/bin/bash:error while loading shared libraries: libc.so.2 : cannot open shared object file: No such file or directory
sh-4.2# cp /lib64/libc.so.6 /mnt/sysimage/lib64/
chroot /mnt/sysimage //成功,但yum与rpm还是不能用:
rpm需要这些包:
sh-4.2# cp /lib64/libm.so.6 /mnt/sysimage/lib64/
sh-4.2# cp /lib64/libpthread.so.0 /mnt/sysimage/lib64/
sh-4.2# cp /lib64/librt.so.1 /mnt/sysimage/lib64/
yum还需要:
sh-4.2# cp /lib64/libutil.so.1 /mnt/sysimage/lib64/
sh-4.2# cp /lib64/libresolv.so.2 /mnt/sysimage/lib64/
sh-4.2# cp /lib64/libcrypt.so.1 /mnt/sysimage/lib64/
netwok服务需要:
sh-4.2# cp /lib64/libnsl.so.1 /mnt/sysimage/lib64/
sh-4.2# cp /lib64/libcrypt.so.1 /mnt/sysimage/lib64/
第三部分:真正的拯救方法:
1. 准备一个U盘启动盘(一个好的运维随时都有一个U盘启动盘)
2.按住电源键重启(你的指令都用不了)
BIOS选择U盘启动 (不同设备不同)
进入拯救模式 (Troubleshooting --> Rescue a CentOS system)
3.提示:
Rescue
The rescue environment will not attempt to find your Linux installation and
mount it under the directory : /mnt/sysimage . You can then make any changes
required to your system. Choice '1' to proceed with this step.
You can choose to mount your file systems read-only instead of read-write by
choosing '2' .
If for some reason this process does not work choose '3' to skip directly to a
shell.
1)Continue
2) Read-only mount
3) Skip to shell
4) Quit(Reboot)
Please make a selection from the above :
选择1 回车
4. 如果你像我一样知道自己干了什么坏事,而且镜像包里什么包都全的话,直接装就好了
sh-4.2# mkdir /mnt/cdrom //千万不要挂载到 /mnt 下 你还挂着个系统呢!
sh-4.2# blkid //查看U盘是哪个
sh-4.2# mount /dev/sda1 /mnt/cdrom //挂载U盘,我的U盘是/dev/sda1
sh-4.2# rpm -ivh /mnt/cdrom/Packages/glibc* --nodeps --root /mnt/sysimage --force //一定要指定root,因为你目前的根目录是U盘的
sh-4.2# reboot //第一次重启时间会比较久,耐心点
Centos7 -- glibc 升级失败、意外删除、故意删除后的处理方法的更多相关文章
- SUSE glibc升级为2.18过程记录
先验知识:1.运行时,动态库的装载依赖于ld-linux.so.6的实现,它查找共享库的顺序如下:(1)ld-linux.so.6在可执行的目标文件中被指定,可用readelf命令查看(2)ld-li ...
- centos7.6 升级openssh openssl
centos7.3和centos7.6升级完毕测试登录ssh以及重启后登录ssh均无问题. 前期请自行配置好yum源(如果不会请百度) 整个过程不需要卸载原先的openssl包和openssh的rpm ...
- centos7 docker升级到最新稳定版本
原文:centos7 docker升级到最新稳定版本 一.前言 docker的版本分为社区版docker-ce和企业版dokcer-ee社,区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外 ...
- centos7.5升级openssh7.4到7.9
漏洞扫描工具扫描出openssh用户枚举漏洞,搜索资料得知无补丁和升级包,解决这个漏洞得安装漏洞修复之后的版本version>7.8. 环境 linux版本: CentOS Linux rele ...
- 删除LINUX更新后多余的内核
删除LINUX更新后多余的内核 本人使用的时fredoa 21 之前为了搞网卡驱动不知不觉升级了几次系统,每次启动后都有好几个内核让我选,真的非常头疼阿,尤其像博主这样的有点强迫的人,看着就心烦,所以 ...
- entity framework 删除数据库出现错误的解决方法--最土但是很有效的方法
无法删除数据库,因为该数据库当前正在使用. public ChinaerContext() : base("name=ContextConn") { // Database.Set ...
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 分类: ORACLE 数据库 2011-05-24 16:39 8427人阅读 评论(2) 收藏 举报 oracledel ...
- 修复直接删除linux系统后grub丢失错误
如果删除了系统后,grub丢失,开机出现“grub>”的话,可以用如下代码进入目标linux系统:grub>ls (hd0,X)/boot //x为目标系统所在分区 ...
- MYSQL 删除二进制日志的 3 个方法
方法 1: reset master; ------------------ 删除前: 删除日志: 删除后: ---------------------------------------- 可 ...
随机推荐
- 数据层的多租户浅谈(SAAS多租户数据库设计)
在上一篇“浅析多租户在 Java 平台和某些 PaaS 上的实现”中我们谈到了应用层面的多租户架构,涉及到 PaaS.JVM.OS 等,与之相应的是数据层也有多租户的支持. 数据层的多租户综述 多租户 ...
- jquery常用表单操作
//js将表单序列化成对象 $.fn.serializeObject = function () { var $els = $(this).find("[name]"); var ...
- ELK-elasticsearch-6.3.2插件【head,bigdesk,cerebro[kopf]】安装
参考博客:linux下ElasticSearch.6.2.2集群安装与head.Kibana.X-Pack..插件的配置安装 参考博客:ELK5.5.1 插件安装实践纪要(head/bigdesk/k ...
- 浅copy与深copy举例
例1: #!/usr/bin/env python import copy d1 = {'x':1,'y':2,'z':[3,4.5]} d2 = d1 d3 = d1.copy() d4 = co ...
- 17秋 软件工程 团队第五次作业 Alpha Scrum4
17秋 软件工程 团队第五次作业 Alpha Scrum4 今日完成的任务 世强:部门基础信息模块数据更新.部门审核提交: 港晨:设计编写登录界面的一部分: 树民:学习python基本语法.flask ...
- ABAP性能和优化
哪些工具可以用于性能优化? ST05-性能追踪.包含SQL追踪加RFC,队列和缓存追踪.SQL追踪主要用于测量程序中select语句的性能. SE30-运行时分析.用于测量应用的性能. SAT是过时的 ...
- 基础数据类型之AbstractStringBuilder
String内部是一个private final char value[]; 也就意味着每次调用的各种处理方法,返回的字符串都是一个新的,性能上,显然.... 所以,对于可变字符序列的需求是很明确的 ...
- Handler基本运行机制
Handler,Looper,MessageQueue的基本原理(三个组成一个消息处理机制)最大的作用就是实现线程间的通信 Handler负责把消息对象加入到消息队列当中 Looper(循环器)是一个 ...
- BZOJ1023:[SHOI2008]cactus仙人掌图(圆方树,DP,单调队列)
Description 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌图(cactus). 所谓简单回路就是指在图上不重复经过任何一个顶点 ...
- 课程设计小组报告——基于ARM实验箱的捕鱼游戏的设计与实现
课程设计小组报告--基于ARM实验箱的捕鱼游戏的设计与实现 一.任务简介 1.1 任务内容 捕鱼游戏这个项目是一个娱乐性的游戏开发,该游戏可以给人们带来娱乐的同时还可以给人感官上的享受,所以很受人们的 ...