centos系統誤刪libc.so.6


    前段時間遇到開發人員更新glibc版本,把/usr/lib64/libc-2.12.so & libc.so.6 -> libc-2.12.so 這個軟連接更改之后導致報錯:

     ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

    無法遠程登錄,終端也無法登錄,也無法單用戶登錄,如圖:

終端登錄:

單用戶:

其實在執行誤操作之后只要不斷開遠程連接還有挽回的余地,但遠程異常斷開連接之后很多人就沒有轍了,准備搶救數據&文件,重裝系統,其實這里咱們先不要着急重裝系統,咱們來試試rescue !

一、首先准備好系統安裝盤,使用安裝盤啟動:

wKioL1bQFyiiyx9pAAGi8wcejWs890.png :

 

二、選擇語言和鍵盤(默認的就好):

wKiom1bQFpnQUkFGAABXeZieUXc445.png

三、稍等一會兒會出現要不要設置網絡,一般來說網絡沒問題就不用設置了,我這里選擇No:

wKiom1bQFy6SBsq-AAA1PQGe3yE741.png

四、這里就是rescue選項了:

  1. 選擇Continue,則救援模式程序會自動查找系統中已有的文件系統,並把他們掛載到/mnt/sysimage目錄下。

  2. 選擇Read-Only,則會以只讀的方式掛載已有的文件系統。

  3. 手動掛載則Skip。

  4. Advanced ,高級選項就不作說明了。

咱們這兒選擇Continue:

wKioL1bQGCDDcHoqAACDKFkw2gE957.png

五、原系統掛載路徑/mnt/sysimage,如果想獲得原系統root環境,執行行命令:chroot /mnt/sysimage 即可。

wKioL1bQGdThFUjbAABWTp9lqv0392.png

六、這里可以執行fakd診斷,當然我們這里直接進入shell 命令行:

wKiom1bQGqeT8qgyAAA-3a6VVso643.png

七、本次重頭戲來了,因為/usr/lib64/libc-2.12.so & libc.so.6 -> libc-2.12.so 問題,執行chroot /mnt/sysinage會報錯:

wKiom1bQGzmhzNfRAABQaSlSqbQ574.png

八、不要害怕,執行:

cp /lib64/libc-2.12.so /mnt/sysimage/lib64/libc-2.12.so
cp /lib64/libc.so.6 /mnt/sysimage/lib64/libc.so.6

將光盤文件拷貝到系統文件去,再執行chroot /mnt/sysinage 就正常了:

wKiom1bQHe7TjnaLAABX_O5j2MU011.png

其實到這里我這次rescue 已經完成了,因為系統缺少/usr/lib64/libc-2.12.so文件和 libc.so.6 -> libc-2.12.so軟連接 ,復制過去就好了 。

九、退出shell & reboot  

wKiom1bQHuryNHddAAAZAeE9iu0368.png

簡單的另一個方法:
那就遠程連接還未關閉:
# LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6
該命令的含義是:
linux調用so庫文件時,先搜索當前路徑,然后是系統庫目錄,提供LD_PRELOAD系統變量可以改變這個順序,改變后的搜索順序為 LD_PRELOAD, 當前路徑, 系統庫目錄。
於是,使用LD_PRELOAD指向正常的glibc庫文件,然后執行ln等命令,就可以正常執行,執行成功之后, libc.so.6 -> libc-2.12.so就又存在了。

其他系統文件損壞也可以參照同樣步驟進行,就不在此贅述了 。

歡迎大家多多指教

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM