誤刪除glic導致linux系統崩潰的處理辦法
示例環境
此文件的執行環境為:
- centos 6.5系統
- vmware6.0虛擬機器
誤操作場景
導致伺服器出問題是在將glibc的版本由2.14降至2.12的過程中,修改glibc.so.6檔案軟連線的時候誤操作,將glibc.so.6重新命名錯誤!導致系統崩潰!因為在當時安裝mysql5.7時,需要glibc的版本為2.14,所以當時升級為glibc-2.14,後來mysql採用官方編譯好的版本進行的安裝,所以就不對再對本地的glibc版本有要求了;centos6對glibc2.12以上的版本相容不太好,有可能會有一些相容問題,比如這次出現的vim輸入漢字出現亂碼!所以今後再出現安裝軟體對本地庫有版本需求的時候,要慎重考慮升級本地庫版本!
作業系統目錄:/lib64/下,有libc.so.6檔案,此檔案為作業系統執行glibc庫的關鍵檔案,如果此檔案誤刪除或重新命名,那麼會造作業系統的崩潰!
文件中的失誤場景為:將/lib64/libc.so.6檔案誤命名為/lib64/libc.so.6.bak
此文件的方法不只適用於誤操作glibc檔案導致系統崩潰,也適用於其他系統級檔案或庫誤操作導致的系統崩潰!
解決辦法
此時ssh遠端登入無法使用,需要使用linux救援模式啟動系統,如果重啟主機會出現:
vmware BIOS啟動配置,在vmware中設計目標主機,在設定中如下配置:
儲存配置後:
在虛擬機器上選擇啟動進入”BIOS”,不同vmware或不同虛擬化應用,可能此選項位置不相同!但是隻要知道開機進入”BIOS”即可!
進入BIOS成功的頁面如下:
按方向鍵”->”,進入”Boot”
按方向鍵”上箭頭”,”下箭頭”來選擇圖中幾個選項,選中之後,利用”+”或”-“來調節順序,使”CD-ROM Drive”排至第一位!然後按”F10”儲存配置:
選擇”Yes”,然後進入救援模式:
回車啟動!即可進入救援模式!
上一步回車後,進入選擇語言頁面:
選擇英語後選擇 “US”:
然後詢問是否進行網路配置,這裡先不去配置:
接下來詢問是否繼續,選擇繼續:
點選”ok:
點選ok後,選告訴你,系統掛在至”/mnt/sysimage”:
選擇”ok”,回車,選擇進入shell模式:
最終,進入救援模式成功:
上圖為執行shell的地方!
執行命令”chroot /mnt/sysimage”,會出現如下報錯:
問題就是上面提到的,把”/lib64/libc.so.6”修改為了”/lib64/libc.so.6.bak”,注意,在當前shell環境下,”/”為之前掛載的映象的根目錄,而原本的主機的根目錄為”/mnt/sysimage”,所以需要去”/mnt/sysimage/lib64/”目錄把”libc.so.6.bak”修改回”libc.so.6”,所以執行命令:
mv /mnt/sysimage/lib64/libc.so.6.bak /mnt/sysimage /lib64/libc.so.6
修改完成後,執行命令檢視是否成功,執行” chroot /mnt/sysimage”,沒有出現任何報錯資訊,則修改成功!
如果檔案丟失,除了直接修改出問題的檔案以外,也可以直接從映象中拷貝缺失的libc.so.6檔案到/mnt/sysimage/lib64下:
cp /lib64/libc.so.6 /mnt/sysimage/lib64/libc.so.6
在命令列內輸入”exit”命令,然後選擇重啟主機,即正常啟動成功:
關閉後,請將vmware的啟動設定恢復成原來的樣子。