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