Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 因 glibc 損壞導致 Kernel Panic 修復實戰:救援模式重裝核心庫

編輯:關於 Linux

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

Kernel Panic 畫面

一、故障徵兆確認

  • 開機卡在 Kernel panic - not syncing: Attempted to kill init!
  • 進入緊急模式提示 /lib64/libc.so.6: version GLIBC_2.xx not found
  • ls、bash、rpm、yum 等基本指令全掛掉
  • 近期執行過 yum update、rpm -e --nodeps glibc 或手動刪除 /lib* 目錄檔案

二、核心修復原則

  1. 使用安裝光碟/USB 進入救援模式(Rescue Mode / Troubleshooting)
  2. 掛載系統根分區到 /mnt/sysimage(或自訂路徑)
  3. 使用 rpm --root=/mnt/sysimage 強制重裝核心 RPM 套件
  4. 按依賴順序安裝:libgcc → glibc-common → glibc

三、詳細操作步驟(以 CentOS/RHEL 為例)

1. 進入救援模式

  • 插入安裝 ISO,啟動選單選 Troubleshooting → Rescue a CentOS system
  • 選擇 Continue 自動掛載系統到 /mnt/sysimage
  • 若自動掛載失敗,手動掛載:
    mkdir /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

2. 取得對應版本 RPM 套件

從安裝 ISO 的 Packages/ 目錄、官方鏡像站或備份中複製以下檔案到救援環境(如 /tmp/rpms/):

  • libgcc-<版本>.rpm
  • glibc-common-<版本>.rpm
  • glibc-<版本>.rpm
  • 版本必須與原系統完全一致(用 rpm -qa | grep glibc 在備份/舊日誌中確認)

3. 按順序強制重裝

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

4. 驗證關鍵檔案

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

5. 重啟驗證

exit
reboot

四、Ubuntu/Debian 系統修復(使用 dpkg)

# 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 -e --nodeps glibc 或 rm -rf /lib*
  • 重要更新前建立快照/備份(VM 快照、LVM 快照、rsync 備份)
  • 使用 yum history 記錄變更,支援 yum history undo
  • 生產環境啟用 yum-plugin-fastestmirror 並鎖定關鍵套件版本

glibc 損壞雖屬嚴重故障,但只要掌握救援模式操作與 RPM 強制重裝流程,通常能在 30 分鐘內恢復系統。建議平時在測試環境演練一次,臨危不亂。

Copyright © Windows教程網 All Rights Reserved
問題原因解決
rpm 提示依賴失敗版本不符或缺少依賴套件補裝缺少的依賴,或使用 --nodeps(僅限 glibc-common)
安裝後仍 Kernel Panic缺少 ld-linux、libpthread 等副檔補裝 glibc 同版本的所有子套件
救援模式無法掛載 LVM未啟用 VG執行 vgscan && vgchange -ay
系統為 Read-only救援模式預設唯讀mount -o remount,rw /mnt/sysimage