Linux中关于glibc包导致的服务器死机或者linux命令无法使用的情况

glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万有。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个作业系统。在 GNU/Linux 系统中,其C函式库发展史点出了GNU/Linux 演进的几个重要里程碑,用 glibc 作为系统的C函式库,是GNU/Linux演进的一个重要里程碑

1.导致glibc包升级后服务器崩溃的情况:

1.手动编译升级glibc包:

下面glibc安装步骤本身就存在巨大的风险

下载gblic包

复制代码
wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.29.tar.gz

解压

复制代码
tar -zxf glibc-2.29.tar.gz

创建目录

复制代码
cd glibc-2.29
mkdir build && cd build

创建编译环境

复制代码
apt-get install gawk bison -y
../configure --prefix=/usr/local/glibc-2.29
# 遇到报错configure: error: *** LD_LIBRARY_PATH shouldn't contain the current directory when *** building glibc. Please change the environment variable *** and run configure again
# 解决方法:
export LD_LIBRARY_PATH=

编译

复制代码
make -j4

然后报错

复制代码
Inconsistency detected by ld.so: dl-call-libc-early-init.c: 37: _dl_call_libc_early_init: Assertion `sym != NULL' failed!

之后你输入其他命令还是报错

复制代码
Inconsistency detected by ld.so: dl-call-libc-early-init.c: 37: _dl_call_libc_early_init: Assertion `sym != NULL' failed!

2.yum安装devtoolset-7软件包

安装命令

复制代码
sudo yum install devtoolset-7

你会发现devtoolset-7包依赖于glibc,gblic包也跟着升级了

之后电脑就卡在启动页面

2.如果直接导致服务器无法登录的解决方法:

1.进入安全模式:

在选择内核的界面按e键

如图所示,输入rd.break,然后按Ctrl+X键进入安全模式

2.使用U盘启动盘:

3.服务器因glibc包崩溃的解决方法:

1.拷贝正常节点的glibc包覆盖掉之前的glibc包:

2.修改glibc包的软链接:

查看glibc包的版本

复制代码
[root@localhost lib64]# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

查看glibc的文件:不是在/usr/lib就是在/usr/lib64目录下

复制代码
# libc.so.6是目目标文件,libc-2.17.so是原文件
[root@localhost ~]# cd /usr/lib64
[root@localhost lib64]# ll | grep libc.so
lrwxrwxrwx.  1 root root      12 Oct  8 20:05 libc.so.6 -> libc-2.17.so

将libc.so.6指向修改之前的文件libc-2.17.so,如果有多个类似的文件一起修改好了。

相关推荐
小小管写大大码10 小时前
如何让vscode变得更智能?vscode接入claude实现自动编程
运维·ide·vscode·自动化·编辑器·ai编程·腾讯云ai代码助手
嵩山小老虎10 小时前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模10 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
zhang1338308907510 小时前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化
a413244710 小时前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
Configure-Handler10 小时前
buildroot System configuration
java·服务器·数据库
津津有味道11 小时前
易语言TCP服务端接收刷卡数据并向客户端读卡器发送指令
服务器·网络协议·tcp·易语言
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.11 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
物联网软硬件开发-轨物科技12 小时前
【轨物洞见】告别“被动维修”!预测性运维如何重塑老旧电站的资产价值?
运维·人工智能
程序员允诺12 小时前
[DevOps实战] 彻底解决依赖地狱:如何编译全静态、可移植的 Xorriso 工具
运维·devops