CentOS 8 GLIBC升级失败系统崩溃抢修实战

CentOS 8 GLIBC升级失败系统崩溃抢修实战

    • 1. 恐怖的问题
    • 2. 参考解决方案
    • 3. 抢修实战
      • 3.1 准备工作
      • 3.2 抢修流程
      • 3.3 解决启动后Permission Denied
        • 3.3.1 参考方案
        • 3.3.2 解决
    • 4. 总结

服务器为CentOS 8,支持glibc版本为2.28,但编译一个工具的glibc需求版本为2.34,于是非常脑残地参考这篇Tutorial开始升级之旅:下载glibc-2.34,并configure到了系统目录,然后将源码make && make install,然后……

1. 恐怖的问题

几乎所有命令都执行不了了,报类似下面的错误:

symbol lookup error: /usr/lib64/libdl.so.2: undefined symbol: dl_vsym, version GLIBC_PRIVATE

结论是:CentOS 8与高版本glibc不兼容,glibc-2.28有的符号(例如:dl_vsym),但glibc-2.34可能没有。但CentOS 8的大多数程序都依赖这些符号,于是炸裂。

这篇文章指明还有机会在ssh连接时恢复系统环境。可惜的是,博主脑子一热退出了ssh,此后再也无法访问服务器。

2. 参考解决方案

  • centos6.9中glibc升级失败救援+救援模式挂载硬盘
  • Centos7手动升级glibc导致系统异常(无法开机)

总的来说基本思路如下:

  1. 拿一个U盘制作原系统(比如我的系统是CentOS 8,就下载CentOS 8 iso)启动盘
  2. U盘内进入Rescue模式
  3. Rescue模式下重装兼容的glibc包

这里最大的问题在于CentOS镜像太大,下载太费时间。而Debian提供的Live OS小巧易用,并且可以安装rpm包管理器。于是我们采用如下思路抢修:

  1. 制作Debian Live OS
  2. 将原系统挂载到Live OS中
  3. 在Live OS中下载并安装glibc RPM包
  4. chroot检查是否成功恢复

接下来具体介绍抢修过程

3. 抢修实战

3.1 准备工作

  • 制作启动盘(以下为个人制作方法)
    • 准备一个空U盘
    • 下载ventoy
    • 运行ventoy.exe安装至U盘
    • 下载Debian Live OS镜像,下载debian-live-12.0.0-amd64-standard.iso即可,这个镜像最小
    • 将下载的iso复制到U盘中即可
  • 手机数据线(用于为Live OS联网)
  • 前往机房

3.2 抢修流程

  1. 服务器强制关机

  2. 将U盘插入USB口

  3. 开机,选择从U盘启动。不同机器处理方式不同。例如,Dell R740服务器需要开机时按F11,手动选择从U盘启动。但博主抢修的这台机器是惠普的,似乎自己就识别到了U盘

  4. 选择Debian Live OS进入

  5. 进入Live OS后,没有网络。此时手机打开热点,将数据线连接到服务器的USB口上,并从高级选项中选择通过USB共享网络。
    在这里插入图片描述

  6. 此时,服务器上通过ip addr应该能够看到一个多出来的网卡,例如,博主的是enx12c483f98c5a。可以看到该网卡还没有被分配ip地址。
    在这里插入图片描述

  7. 输入sudo dhclient为网卡动态获取ip,ping www.baidu.com测试网络是否连接成功。

  8. 下载rpm包。直接上清华源找对应的rpm包。这里博主升级前就是glibc-2.28。

    cd ~
    wget https://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/BaseOS/x86_64/os/Packages/glibc-2.28-228.el8.x86_64.rpm
    wget https://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/BaseOS/x86_64/os/Packages/glibc-common-2.28-228.el8.x86_64.rpm
    wget https://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/BaseOS/x86_64/os/Packages/glibc-langpack-en-2.28-228.el8.x86_64.rpm
    
  9. 挂载原系统并安装rpm包:

    • 输入sudo lsblk查看原系统在哪个设备上,CentOS一般来说root为/dev/mapper/cl-root,挂载这个分区即可

      sudo mount /dev/mapper/cl-root /mnt
      
    • 安装rpm包

      sudo apt install rpm
      sudo rpm -ivh --nodeps --force --root=/mnt glibc-*.rpm
      
  10. sudo chroot /mnt成功即说明glibc抢修成功

  11. 接下来sudo umount /mnt && sudo shutdown,等待关机后,拔出U盘。

  12. 静待重启……………………难过的事情再次发生了,系统卡在了无休止的Permission Denied中(在加载界面按下esc可查看)
    在这里插入图片描述

3.3 解决启动后Permission Denied

3.3.1 参考方案

  • Centos 8 stuck in boot loop, multiple permission denieds. Any solution to this?

3.3.2 解决

根据上述参考,猜测与selinux有关,于是尝试禁用selinux。具体做法是在grub菜单处,按下e修改command line:将enforcing=0加入到command line最后,然后ctrl + x启动系统。终于成功了!猜测是因为安装rpm的时候破坏了selinux的某些配置,例如发现/.autorelabel文件消失了。至于如何恢复selinux就不在本文的讨论范围之内了。博主非常极端地把selinux关掉了😄。

4. 总结

这次抢修经历是非常惊心动魄的,前前后后加起来差不多5、6个小时。多亏了seekstar的帮忙。回过头来,这次抢修最大的教训就是再也不会在服务器环境乱动glibc了。OK,现在可以起飞了🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/40856.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Ceph集群应用】CephFS文件系统之MDS接口详解

CephFS文件系统之MDS接口详解 1.创建CephFS文件系统MDS接口1.1 创建cephfs1.2 基于内核的客户端挂载1.3 基于fuse工具方式的客户端挂载 接上文基于ceph-deploy部署Ceph集群详解 1.创建CephFS文件系统MDS接口 服务端操作 (1)在admin管理节点创建mds服务…

Python测试框架Pytest的基础入门

Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. 通过官方网站介绍…

音频数据分割单独处理后再拼接出现跳跃间断点的处理方法

+hezkz17进数字音频系统研究开发交流答疑 1如图所示 问题1: 对于一个81920字节的音频文件,如果是分割成小块4096输入(无重叠,均分),在频域上做去噪算法,每4k数据返回到时域上再拼接成80k的处理结果文件,发现处理结果有异常有跳跃间断点,像是频谱泄露?分割也需要有重…

java中使用POI生成Excel并导出

注:本文章中代码均为本地Demo版本,若后续代码更新将不会更新文章 需求说明及实现方式 根据从数据库查询出的数据,将其写入excel表并导出 我的想法是通过在实体属性上写自定义注解的方式去完成。因为我们在代码中可以通过反射的方式去获取实体…

华为申请注册盘古大模型商标;京东推出言犀大模型,率先布局产业应用

7月14日科技新闻早知道,一分钟速览。 1.华为申请注册盘古大模型商标: 据天眼查 App 显示,7 月 7 日,华为技术有限公司申请注册“华为云盘古”、“Huawei Cloud Pangu Models”文字及图形商标,国际分类为网站服务、社…

c基本数据类型

关键字 charshort intintlong intfloatdouble 常量和变量 常量:在程序运行过程中,其值不可改变的量变量:其值可以改变的量称为变量 字符数据 字符常量 直接常量:用单引号括起来,如:‘a’,‘b’.转义字…

zabbix 企业级监控(2) 监控linux主机

目录 配置开始 Zabbix添加linux主机 4.为agent.zabbix.com添加模板 环境: (隔天做的更换了IP,不影响实际操作) IP 192.168.50.50 关闭防火墙规则 更改主机名 [rootlocalhost ~]# vim /etc/hostname agent.zabbix.com [rootloca…

【UE5 多人联机教程】01-创建主界面

目录 工程地址 步骤 参考链接 工程地址 GitHub - UE4-Maple/C_MP_Lobby: 多人大厅教程项目 步骤 1. 先新建一个工程 2. 将下载的工程中的Plugins目录拷贝到自己新建的工程下 3. 打开工程,新建一个游戏实例 这里命名为“GI_Main” 在项目设置中设置游戏实例类为…

科技云报道:数字化转型完成后,制造业如何走向“数智”时代?

科技云报道原创。 随着我国数字化转型行动的深入推进和智能制造工程的大力实施,制造业正朝着“数智”时代迈进,生成式AI被视为推动制造业智能化发展的关键驱动力。 据预测,到2027年,将有30%的制造业采用生成式AI来提升产品研发效…

Android ViewGroup onDraw为什么没调用

ViewGroup,它本身并没有任何可画的东西,它是一个透明的控件,因些并不会触发onDraw,但是你现在给LinearLayout设置一个背景色,其实这个背景色不管你设置成什么颜色,系统会认为,这个LinearLayout上…

上海市静安区财政局领导带队调研合合信息,政企共话科技创新

近日,上海市静安区财政局副局长应文婷一行赴市北高新园区,实地走访科技企业上海合合信息科技股份有限公司(简称“合合信息”),了解公司技术创新成果及产业布局,倾听企业在发展过程中的政策需求。合合信息董…

Linux——认识Linux的目录结构 常用命令 vim命令 权限及其控制

目录 linux的目录结构常用linux的命令ls(list)和llcd 切换目录mkdir 创建文件夹touch命令:创建普通文本文件pwd 显示路径whoamisu:普通--超级账号man:查看手册rm:删除网络命令ifconfig重定向 >>cat 查看文本文件clear清屏hi…

python使用Anconda安装Cartopy

安装 Cartopy的话官方推荐是使用conda安装,打开Anconda Prompt后,新建一个环境(如果已有环境可跳过这步),然后激活环境: conda create -n newenv python3.9 conda activate newenv接着按照官网的推荐在Anc…

<数据结构>NO11.归并排序|递归|非递归|优化

文章目录 归并排序递归写法非递归写法修正方案1.归并一段拷贝一段修正方案2.修正区间 算法优化算法分析 归并排序的应用外排序和内排序 归并排序 递归写法 思路: 如果给出两个有序数组,我们很容易可以将它们合并为一个有序数组。因此当给出一个无序数组时&#xf…

【Ceph集群应用】Ceph块存储之RBD接口详解

Ceph块存储之RBD接口详解 1.创建Ceph块存储系统RBD接口1.1 删除镜像1.2 还原镜像1.3 在线扩容1.4 回滚镜像到指定位置1.5 删除快照1.6 快照分层1.7 快照展平1.8 镜像的导出导入 接上文基于ceph-deploy部署Ceph集群详解 1.创建Ceph块存储系统RBD接口 (1)…

区块链-java学习和劝退

字面意思:按照区域划分,每个区域通过可信的账本进行结算,将各个区域链接,形成小中心,大整体的财务结算认证体系; 1、学习前准备 您最好掌握一定的财务基本知识; 2、学习步骤 1)区…

记一次rabbitmq消息发送成功,消费丢失问题

记一次rabbitmq消息发送成功,消费丢失问题 背景 测试数据归档,偶现数据未归档 排查 idea线上调试,log日志,数据库消息发送记录,代码分块重复执行看哪块出的问题,结果均无问题,最后使用rabbi…

blender 建模马拉松

效果展示 蘑菇模型创建: 创建蘑菇头 shift A ,创建立方体; 右下工具栏添加细分修改器(视图层级:2,渲染:2);tab键进入编辑模式,alt z 进入透显模式&…

spring复习:(24)ApplicationContext中的BeanPostProcess是在哪里注册到容器的?

在ApplicationContext实现类的构造方法里。 public ClassPathXmlApplicationContext(String configLocation) throws BeansException {this(new String[] {configLocation}, true, null);}上边的构造方法调用如下构造方法 public ClassPathXmlApplicationContext(String[] conf…

Python分布式任务队列Celery

一、分布式任务队列Celery介绍 Python celery是一个基于Python的分布式任务队列,主要用于任务的异步执行、定时调度和分布式处理。它采用了生产者/消费者模式,通过消息中间件实现多个工作者进程之间的协作。 Python celery的架构主要包括以下组件&…