Linux系統常見故障解決方法
在Windows的系統下,當系統發生一些故障的時候,我們就會用一些常見補救的措施來修復系統,在Linux系統下也有一些比較常用的解決常見故障的措施,使用起來也是比較方便的。
首先我們要建立一個急救盤組,包括准備好bootdisk和rootdisk兩張軟盤,它可以提供一個獨立的啟動和運行完整的Linux系統的支持。如果你是一個系統管理員的話,那麼這肯定是你必不可少的日常維護工具。急救盤組的第一張盤存放了Linux系統可啟動的內核程序系統,急救盤組中的第二張盤上則有一個完整的Linux系統,其中包括“root”文件系統。
使用急救盤組維護系統,操作起來是比較簡單的。在啟動系統的時候,需要用這兩張盤來啟動系統,這樣可以進入急救模式,這時我們使用的是“root”賬戶。但是我們為了能訪問硬盤上已有的文件,就需要手工安裝硬盤的文件系統。現在系統的根目錄指的是急救盤上的根目錄。為了能夠訪問硬盤文件系統中的文件,就必須先把文件安裝到自己規定的某個目錄下。這樣,如果將硬盤上文件系統安裝在/mnt目錄下,則硬盤上原來的/etc/passwd文件的路徑就是/mnt/etc/passwd。例如,用下面的命令可在/mnt目錄中安裝/dev/hda2盤上的ext2fs類型的Linux文件系統: # monut -t ext2/dev/hda2/mnt。
我們最經常犯的錯誤,可能就是不小心刪除了一些比較重要的文件,而且已經不能直接恢復了。但是,急救盤組裡有相應的文件,我們就可以將這個文件從急救盤組中找到並且復制到硬盤上。例如,如果刪除了文件/bin/login,此時系統將無法正常進入到登錄界面,我們就可以先用急救盤組啟動系統,並將硬盤文件系統安裝到/mnt目錄下,然後使用下述命令:
#cp -a /bin/login /mnt/bin
其中“-a”選項是用來告訴“cp”在拷貝文件時保持文件的訪問權限。當然如果被刪除的基本文件不在急救盤組中,也就不能用這種方法了。但是如果以前做過該系統備份的話,那麼就可以用以前的備份來恢復了。
文件系統被破壞也是比較常見的,如果使用的是“ext2fs”類型的文件系統,我們就可從軟盤運行“e2fsck”命令來修復被損壞的文件系統。對於其他類型的文件系統,可以使用相應的“fsck”命令。文件系統被破壞的常見原因是文件系統的"頭部"( 也就是“超級塊”)損壞,它包含了文件系統的狀態、尺寸和空閒磁盤塊等信息。如果損壞了一個文件系統的“頭部”,那麼系統可能會完全不識別該文件系統,這樣也就不能安裝它了,即使采用“e2fsck”命令也不能處理這個問題。不過,“ext2fs”類型的文件系統將“超級塊”的內容進行了備份,並存放於驅動程序的塊組(block group)邊界。可以用如下的命令告訴“e2fsck”使用超級塊的備份:
# e2fsck -b 8193 <partition>
其中“
如果不小心將系統函數庫文件破壞了,或者破壞了/lib目錄下符號鏈接,那麼將導致依賴這些庫的命令無法正常執行。最簡單的解決辦法是用急救盤組重新啟動系統,在/mnt目錄中安裝硬盤文件系統,然後修復/mnt/lib目錄下的庫。
如果超級用戶將密碼忘記,就無法進入系統,也無法管理和使用系統,用急救盤組就可以解決問題。如果可能是密碼被黑客修改了,造成了系統管理員無法正常進入系統,也就是說,Linux系統完全失去了控制,因此應盡快重新獲得系統的控制權。一般的解決方法就是格式化硬盤來重新安裝系統,但這有點兒小題大作了。准備好bootdisk和rootdisk兩張軟盤,從軟驅啟動,啟動到“root”盤並出現“shell”提示符。將Linux根目錄分區“mount”至/mnt目錄,比如你的Linux在硬盤第一分區,就在命令行中輸入mount /dev/hda1 /mnt,然後進入mnt目錄,將其中的etc/passwd文件改名,輸入mv /mnt/etc/passwd /mnt/etc/passwd.bak就可以了;接著使用命令cp /etc/passwd /mnt/etc/passwd將軟盤上的/etc/passwd文件復制到硬盤中的“etc”目錄下,這樣重新由硬盤啟動,登錄時就不會詢問超級密碼;最後使用mv/etc/passwd.bak passwd命令將passwd文件改回,再運行passwd命令重新設定密碼就可以了。系統管理員應該不定期地修改密碼,防止長期使用一個號碼,而被他人盜用。
在個人計算機使用Linux系統時,通常都是Linux和MS Windows 9x或MS Windows NT等並存的。由於安裝了其他的操作系統,經常會導致原有的Linux系統不能正常啟動。這主要是因為,這些操作系統默認為計算機中沒有其他的操作系統,因而改寫了硬盤的主引導記錄(MBR),沖掉了Linux的LiLo系統引導程序。
如果有急救盤組,當然很簡單,可以用第一張啟動盤啟動硬盤的Linux系統,重新運行LiLo命令,就可以將LiLo系統引導程序寫回硬盤的主引導記錄,重新啟動機器即可。但是如果沒有制作系統啟動盤,沒有急救盤組如何恢復硬盤上的Linux系統呢?在這種情況下,如果知道Linux系統在硬盤上的確切安裝分區,且有loadlin程序,就可以重新返回Linux系統。 loadlin程序是在DOS下運行的程序,運行它可以從DOS下直接啟動Linux系統。在 Red Hat Linux 6.0光盤的 DOSutil/目錄下就有這個程序。除此之外,還需要一個 Linux啟動內核的映像文件。在 Red Hat linux 6.0光盤的 images/目錄下有這個文件--vmlinuz。 例如,在Windows 98系統下,進入DOS的單用戶模式,然後運行下述的loadlin命令,即可重新進入Linux系統:
loadlin vmlinuz root=/dev/hda8
其中“/dev/hda8”是Linux系統的“root”文件系統所在的硬盤分區位置。命令執行後,就引導Linux系統用“root”登錄後,運行LiLo命令,則可以重新將LiLo裝入MBR,至此就可以回到以前多操作系統並存使用的狀態了。
也許你不是一個系統管理員,但是隨著個人計算機配置的日益提高,在自己的計算機上安裝Linux系統已經不是什麼新鮮的事了。假設我們的計算機上同時裝有Windows和Linux兩個操作系統,應該如何啟動Linux呢?是否每次都需要重啟計算機,通過LiLo引導?其實如果我們在DOS下,有一種簡單快速啟動Linux的方法,那就是Load Linux。“loadlin.exe”是在DOS下的可執行程序,它可以在純DOS環境下迅速啟動Linux,而且無需重啟計算機,通常我們可以在光盤的/kernels目錄下找到這個程序。如果不知這個程序被放置於安裝盤的何處,可以使用“find -name loadlin*”命令來尋找。找到之後將其復制到DOS分區中,同時還需要復制一份你所使用的Linux內核文件。可以通過Windows直接從光盤復制,也可在Linux環境下使用mcopy命令將文件copy到DOS分區;接著再編寫一個Linux.bat的批處理文件,文件內容如下:
c:loadlin c:vmlinuz root=/dev/hda1 ro
其中我們假設loadlin.exe和vmlinuz這兩個內核文件都在c盤根目錄,而root為Linux根設備,而且Linux處於硬盤第一分區,所以設備名為/dev/hda1,ro意為readonly。以後在DOS下要啟動Linux時,運行Linux.bat就可以了。這樣啟動Linux快速高效,大大減少了系統自檢時等待的時間。
如果我們在Xwindows狀態下運行Linux時,由於硬件本身的問題或者自己操作上的不當,有時侯可能會導致系統突然失去響應,也就是我們常見到的一種死機現象,其實此時系統並沒有死機。我們可以用兩個常用的方法來消除這種現象:第一,用鍵盤上的復合鍵Ctrl+Alt+Backspace來關閉當前正在運行的任務;第二,首先按住鍵盤上的Ctrl+Alt+F2復合鍵,讓系統切換到另一個操作台,然後登錄到系統,再執行#ps -ax|grep startx命令,這將會列出你的Xserver的進程標識(PID),接著在命令行中輸入如下命令就能消除Xwindows下的死機現象:#kill -9 PID_Number,最後通過Alt+F1復合鍵返回原來的平台。
常見的錯誤及解決辦法還有很多,在這裡只是提及了一部分,如果大家還有需要補充的或是本文中有需要糾正的地方歡迎提出,讓我們一起提高。