Linux 系統故障修復和修復技巧

2021-09-26 07:20:52 字數 4721 閱讀 6681

我發現linux系統在啟動過程中會出現一些故障,導致系統無法正常啟動,我在這裡寫了幾個應用單使用者模式、grub命令操作、linux救援模式的故障修復案例幫助大家了解此類問題的解決。

linux系統提供了單使用者模式(類似windows安全模式),可以在最小環境中進行系統維護。在單使用者模式(執行級別1)中,linux引導進入根shell,網路被禁用,只有少數程序執行。單使用者模式可以用來修改檔案系統損壞、還原配置檔案、移動使用者資料等。

以下列舉了幾個單使用者模式修復系統故障的典型案例:

案例一:root密碼忘記

在單使用者模式中,linux不需要root密碼(red hat系統不需要root密碼,但suse則需要,不同linux系統稍有差別,本文以fedora core 6為例講解),這使更改root密碼非常容易。了解當系統引導進入多使用者模式失敗時,如何進入單使用者模式,非常重要。

1、 在系統啟動過程中,會出現開始介面,按任意鍵,進入grub選單選項。(若希望以後無此提示,直接進入grub選單選項,刪除配置檔案grub.conf中「hiddenmenu」項即可。)

2、 按「e」鍵編輯grub引導選單選項,按「e」鍵後的grub螢幕。通過箭頭鍵下移到kernel行,並按「e」鍵,

3、在尾行游標處新增single,按回車鍵返回前乙個螢幕,按「b」鍵進行引導,則系統自動進入單使用者模式,如果要改變root密碼,則執行命令:sh-3.1# passwd root

1、 禁用可能中止系統執行的服務如禁用samba服務,則執行:sh-3.1# chkconfig smb off下次系統引導就不會啟動samba服務了。

案例二:硬碟扇區錯亂

在啟動過程中最容易遇到的問題就是硬碟可能有壞道或扇區錯亂(資料損壞)的情況,這種情況多由於異常斷電、不正常關機導致。

此種問題發生,在系統啟動的時候,螢幕會顯示:

press root password or ctrl+d:

此時輸入root密碼系統自動進入單使用者模式,輸入:

fsck -y /dev/hda6
(fsck為檔案系統檢測修復命令,「-y」設定檢測到錯誤自動修復,/dev/hda6為發生錯誤的硬碟分割槽,請依據具體情況更改此引數)

系統修復完成後,用命令「reboot」重新啟動即可。

案例三、grub選項設定錯誤

「error 15」顯示系統無法找到grub.conf中指定的核心。

grub引導錯誤資訊,我們觀察發現因為打字錯誤,核心檔案的「vmlinuz」打成了「vmlinux」,所以系統無法找到核心的可執行檔案。

我們可以按任意鍵回到grub編輯介面,修改此錯誤,回車儲存後按「b」鍵即可正常引導,當然不要忘記進入系統後修改grub.conf檔案中此處錯誤。

這是很多初學linux的使用者在修改grub設定時很容易犯的錯誤,出現此黑屏提示時注意觀察報錯資訊,即可針對性修復。

我發現有時linux啟動後會直接進入grub命令列介面(只有「grub>」提示符),此時很多使用者就選擇了重新安裝grub甚至重新安裝系統。

其實一般而言此故障的原因最常見的有兩個:

如果是第一種情況,可以首先通過grub命令引導系統後修復;若是第二種情況,則要使用linux救援模式修復了(本文後續有描述)。

首先,我們需要了解grub啟動系統的引導過程,grub.conf檔案中主要的配置選項如下:

(注意,grub配置檔案為/boot/grub/grub.conf, /etc/grub.conf只是此檔案的軟鏈結)

title fedora core (2.6.18-1.2798.fc6)

root (hd0,0)

kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=label=/ rhgb quiet initrd /boot/initrd-2.6.18-1.2798.fc6.img

其中:

所以grub在引導時順序為首先載入/boot分割槽,然後依次載入核心與映象檔案。

案例「title fedora core (2.6.18-1.2798.fc6)」段被誤刪除

此時,系統啟動後會自動進入「grub>」命令列,為排除故障我們可以依次做如下操作:  

1、查詢/boot/grub/grub.conf檔案所在分割槽grub> find /boot/grub/grub.conf(hd0,0)  

2、檢視grub.conf檔案錯誤grub>cat (hd0,0)/boot/grub/grub.conf建議系統安裝設定好後,要將grub.conf檔案備份,如果有備份檔案如grub.conf.bak,則此時可以檢視備份檔案,與當前檔案比較,發現錯誤:grub>cat (hd0,0)/boot/grub/grub.conf.bak

3、確認錯誤後,先通過命令列方式完成grub引導,進入系統後再行修復grub.conf檔案錯誤:

4、從/boot分割槽啟動boot (hd0,0)

命令列模式可以在grub選單模式中通過按「c」鍵呼叫,也可以用於測試新編譯的核心(設定kernel、initrd引導新核心及映象檔案)。增加對grub引導以及linux系統引導知識的了解將對此類故障排除大有幫助。

當系統連單使用者模式都無法進入時或出現grub命令列也不能解決的引導問題,我們就需要使用linux救援模式來進行故障排除了。

步驟如下:

案例一:雙系統啟動修復

當我們安裝雙系統環境,先安裝linux再安裝windows;或者已經安裝好雙系統環境的windows損壞,在重新安裝windows後,儲存 grub的mbr(master boot record,主引導記錄)會被windows系統的自舉程式ntldr所覆蓋,造成linux系統無法引導。

1、如果要恢復雙系統引導,首先用上述方法進入救援模式,執行chroot命令如下:sh-3.1# chroot /mnt/sysimage

2、將根目錄切換到硬碟系統的根目錄中,然後執行grub-install命令重新安裝grub:sh-3.1# grub-install /dev/hda「/dev/hda」為硬碟名稱,如使用scsi硬碟或linux安裝在第二塊ide硬碟,此項設定要做相應調整。

3、然後依次執行exit命令,退出chroot模式及救援模式(執行兩次exit命令):sh-3.1# exit系統重啟後,將恢復grub引導的雙系統啟動。 

案例二:系統配置檔案丟失修復

系統在引導期間,很重要的乙個過程就是init程序讀取其配置檔案/etc/inittab,啟動系統基本服務程式及預設執行級別的服務程式完成系統引導,如果/etc/inittab誤刪除或修改錯誤,linux將無法正常啟動。此時,只有通過救援模式才可以解決此類問題。

/etc/inittab檔案丟失引導錯誤示例

1、有備份檔案的恢復辦法進入救援模式,執行chroot命令後,如果有此檔案的備份(強烈建議系統中的重要資料目錄,如/etc、/boot等要進行備份),直接將備份檔案拷貝回去,退出重啟即可。

如果是配置檔案修改錯誤,如比較典型的/boot/grub/grub.conf及/etc/passwd的檔案修改錯誤,也可以直接修正恢復。

假設有備份檔案/etc/inittab.bak,則在救援模式下執行:

sh-3.1# chroot /mnt/sysimage sh-3.1# cp /etc/inittab.bak /etc/inittab
2、沒有備份檔案的恢復辦法如果一些配置檔案丟失或軟體誤刪除,且無備份,可以通過重新安裝軟體包來恢復。

首先查詢到/etc/inittab屬於哪乙個rpm包(即便檔案丟失,因為存在rpm資料庫,一樣可以查詢到結果):

sh-3.1# chroot /mnt/sysimage sh-3.1# rpm -qf /etc/inittab initscripts-8.45.3-1
退出chroot模式:

sh-3.1# exit
掛載存放rpm包的安裝光碟(在救援模式下,光碟通常掛載在/mnt/source目錄下):

sh-3.1# mount /dev/hdc /mnt/source
fedora系統的rpm包存放在光碟fedora/rpms目錄下,其他linux存放位置大同小異,我在這裡不一一枚舉;

另外,因為要修復的硬碟系統的根目錄在/mnt/sysimage下,需要使用——root選項指定其位置。

覆蓋安裝/etc/inittab檔案所在的rpm包:

sh-3.1# rpm -ivh ——replacepkgs ——root /mnt/sysimage /mnt/source/fedora/rpms/ initscripts-8.45.3-1.i386.rpm
其中的rpm命令選項「——replacepkgs」表示覆蓋安裝,執行完成後,即已經恢復了此檔案。

如果想只提取rpm包中的/etc/inittab檔案進行恢復,可以在進入救援模式後,執行命令:

sh-3.1# rpm2cpio /mnt/source/fedora/rpms/initscripts-8.45.3-1.i386.rpm | cpio -idv ./etc/inittab sh-3.1# cp etc/inittab /mnt/sysimage/etc
注意此命令執行時不能將檔案直接恢復至/etc目錄,只能提取到當前目錄下,且恢復的檔名稱所在路徑要寫完整的絕對路徑。提取檔案成功後,將其複製到根分割槽所在的/mnt/sysimage目錄下相應位置即可。

救援模式是維護linux的有力**,本文以上述兩個例子講解了它的應用方法,希望能夠給讀者一點啟示。解決linux系統啟動的故障,必須充分理解linux的引導過程,才能夠對故障進行有效的判斷和處理。

Linux系統故障修復

linux系統中有乙個叫做單使用者模式的東西,類似windows系統中的安全模式。進入單使用者模式後,我們就可以在最小環境中進行系統的維護與修復,玩過linux系統的都知道linux中有乙個執行級別的概念,單使用者模式就是執行級別1。在單使用者模式中,系統會引導你進入根shell,並且禁用網路,大多...

Ubunt系統故障修復集錦

error file boot grub i386 pc normal.mod not found 1 檢視分割槽 grub rescue ls2 依次嘗試 grub rescue ls hd0,msdos1 boot grub如果沒有報錯 unknow file system 則表明 hd0,ms...

linux硬碟故障修復

1 如果出現唯讀檔案系統,先備份重要資料,2 重新掛載 系統mount o remount,rw 3 如果不能解決問題,重啟伺服器以cd 光碟引導進入linux rescue修復模式,選擇troubleshooting,然後選擇rescue a centos system,選擇continue繼續操...