一、CentOS8.2 救援模式修復系統丟失文件
問題示例:系統中的libc.so.6動態庫文件誤刪除
描述:glibc是GNU發布的libc庫,即c運行庫。glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴於glibc。glibc除了封裝linux操作系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。由於 glibc 囊括了幾乎所有的 UNIX 通行的標准,可以想見其內容包羅萬象。而就像其他的 UNIX 系統一樣,其內含的檔案群分散於系統的樹狀目錄結構中,像一個支架一般撐起整個作業系統。在 GNU/Linux 系統中,其C函式庫發展史點出了GNU/Linux 演進的幾個重要里程碑,用 glibc 作為系統的C函式庫,是GNU/Linux演進的一個重要里程碑。
Linux的很多命令都是依賴libc.so.6的動態鏈接庫,如果您不小心把它給刪除了,基本上所有命令都不能使用了,之前很多同學都通過重裝操作系統來解決,今天介紹一種一條命令可以解決的辦法:
LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6
注:目前centos 6.x 64位的glibc的版本是 v2.12 ;
故障現象:
第一種:文件存在,系統找不到
第二種:文件被刪除,不存在了
造成系統找不到libc.so.6庫的原因有三種:
*)文件的名字被更改了,即重命名。
*)文件被移動到別的目錄了。
*)文件被刪除了。
針對以上三種情況,前兩種情況可以看作一種情況處理,文件還在,就是路徑系統找不到了,這種情況相對來說要好辦一點,對於第三種情況,文件整個都不存在了,這個時候我們就得借助外部的文件進行修復。
我們首先來看一下系統加載libc.so.6的路徑信息:
從系統上看,libc.so.6 的路徑指向/lib64/libc.so.6,如果這個路徑發送變化,系統找不到這個共享文件,導致系統出現異常。
第一種:文件存在,系統找不到
模擬故障一、移動libc.so.6文件
mv /lib64/libc.so.6 /tmp/libc.so.6
系統執行命令異常
系統日志如下:
重啟機器無法進入系統
恢復方法:
# LD_PRELOAD=/tmp/libc.so.6 mv /tmp/libc.so.6 /lib64/libc.so.6
這個時候我們就用到LD_PRELOAD這個環境變量了,經過上面的知識補充,我們知道,通過這個環境變量,我們可以在主程序和其動態鏈接庫的中間加載別的動態鏈接庫,甚至覆蓋正常的函數庫。現在我們可以使用這個環境變量來臨時加載還存在但是不在原目錄或是名字被篡改了的庫文件,在臨時添加環境變量的后面接上我們要執行的命令就可以將libc.so.6庫恢復到原來的樣子,讓小編帶你進行實驗驗證:
第二種:文件被刪除,不存在了
對於這種情況比較復雜,我們不能通過本地直接進行恢復,我們必須借助外面的文件進行恢復,具體的思路就是通過加載光盤系統文件,將該函數庫重新拷貝到本地系統中來,達到恢復的目的,讓小編畫圖來說明:
目的:我們要借助光盤系統將光盤系統中的/lib64/libc.so.6拷貝到本地系統的/lib64/中,達到恢復的目的。
系統掛載光盤,開機。
(1)選擇完成后進入安裝界面,選擇troubleshooting。
(2)進入后選擇rescue a CentOS system(使用光盤制作一個小型的系統)。
(3)跳出4個選項,選擇1繼續。
3. 退出救援模式,重啟系統
(1)修復完成后使用exit命令退出救援模式,正常重啟系統即可。
這個界面可能會卡一段時間,因為沒有關閉SELinux,等幾分鍾就OK。
修復完成,正常進入系統。
二、CentOS8.2 救援模式修復文件系統和磁盤故障
故障現象:
1、文件系統分區變成只讀文件系統,無法寫入文件
2、磁盤使用過長,機房斷電,導致磁盤故障或者有壞塊,系統無法啟動。
Linux救援模式
修復命令:
chroot /mnt/sysimage
umount /dev/sda1
fsck -y /dev/sda1
三、CentOS8.2 救援模式grub啟動文件和fstab文件異常
Centos8救援模式--誤刪/usr/bin/恢復
模擬場景
Centos8誤刪/usr/bin/等系統內置文件夾, 導致幾百個內置命令丟失。
參考文獻: