glibc(GNU C Library)是 Linux 系統最核心的執行庫,幾乎所有動態連結程式都依賴它。若 glibc 損壞、版本不符或誤刪,系統將無法啟動,出現 Kernel Panic 或緊急模式。本文詳細說明如何透過救援模式(Rescue Mode)重新安裝 glibc 及相關核心庫修復系統。

Kernel panic - not syncing: Attempted to kill init!/lib64/libc.so.6: version GLIBC_2.xx not foundls、bash、rpm、yum 等基本指令全掛掉yum update、rpm -e --nodeps glibc 或手動刪除 /lib* 目錄檔案/mnt/sysimage(或自訂路徑)rpm --root=/mnt/sysimage 強制重裝核心 RPM 套件libgcc → glibc-common → glibc/mnt/sysimagemkdir /mnt/sysimage
mount /dev/mapper/centos-root /mnt/sysimage # 或對應根分區
mount /dev/sda1 /mnt/sysimage/boot # /boot 分區
mount --bind /dev /mnt/sysimage/dev
mount --bind /proc /mnt/sysimage/proc
mount --bind /sys /mnt/sysimage/sys
從安裝 ISO 的 Packages/ 目錄、官方鏡像站或備份中複製以下檔案到救援環境(如 /tmp/rpms/):
libgcc-<版本>.rpmglibc-common-<版本>.rpmglibc-<版本>.rpmrpm -qa | grep glibc 在備份/舊日誌中確認)cd /tmp/rpms
# 1. 先裝 libgcc(glibc 依賴)
rpm -Uvh --root=/mnt/sysimage --force libgcc-*.rpm
# 2. 再裝 glibc-common(需 --nodeps 避免循環依賴阻擋)
rpm -Uvh --root=/mnt/sysimage --force --nodeps glibc-common-*.rpm
# 3. 最後裝 glibc 核心庫
rpm -Uvh --root=/mnt/sysimage --force glibc-*.rpm
ls -la /mnt/sysimage/lib64/libc.so.6
ls -la /mnt/sysimage/lib64/ld-linux-x86-64.so.2
file /mnt/sysimage/bin/bash # 應顯示 dynamically linked
exit
reboot
# 1. 進入救援模式(GRUB 選 Advanced options → recovery mode)
# 2. 掛載根分區為讀寫
mount -o remount,rw /
# 3. 重新安裝核心套件
apt-get update
apt-get install --reinstall libc6 libgcc-s1 libc-bin
# 或從 /var/cache/apt/archives/ 手動 dpkg
dpkg --root=/mnt/sysimage --force-all -i libc6_*.deb libgcc-s1_*.deb
| 問題 | 原因 | 解決 |
|---|---|---|
| rpm 提示依賴失敗 | 版本不符或缺少依賴套件 | 補裝缺少的依賴,或使用 --nodeps(僅限 glibc-common) |
| 安裝後仍 Kernel Panic | 缺少 ld-linux、libpthread 等副檔 | 補裝 glibc 同版本的所有子套件 |
| 救援模式無法掛載 LVM | 未啟用 VG | 執行 vgscan && vgchange -ay |
| 系統為 Read-only | 救援模式預設唯讀 | mount -o remount,rw /mnt/sysimage |