| 如何修復(fù)Linux無法正常啟動(dòng)故障 沒有操作系統(tǒng)能夠確保100%可靠。終有一天,即使Linux也會(huì)無法啟動(dòng)。本文為你提供一些在Linux工作站無法正常啟動(dòng)時(shí)所采用的策略。 不管你多么喜愛你的Linux機(jī)器,有時(shí)候你都必須恢復(fù)你的系統(tǒng)。是的,即使一臺(tái)Linux機(jī)器也可能遭受系統(tǒng)崩潰:不管是由于視頻配置錯(cuò)誤、內(nèi)核更新出錯(cuò)、或是由于init腳本配置錯(cuò)誤,這種情況都是必然的。我看到過大量這種情況——即使在我自己的機(jī)器上,大多數(shù)是由于X配置出錯(cuò)——這確實(shí)令人沮喪。 在我看來,重新安裝系統(tǒng)并不是最佳救援計(jì)劃。有時(shí)候,最佳救援計(jì)劃甚至不需要從救援磁盤啟動(dòng)。本文將為如何避免系統(tǒng)崩潰提供一些提示和訣竅,幫助你建立恢復(fù)崩潰的Linux機(jī)器所需的工具。 使用正確的運(yùn)行級(jí)別 安裝好一個(gè)新的Linux系統(tǒng)后,我立即采取措施以確保災(zāi)難不會(huì)輕易發(fā)生。其中一個(gè)措施就是編輯系統(tǒng)的運(yùn)行級(jí)別。運(yùn)行級(jí)別告訴系統(tǒng)離采用引導(dǎo)過程還有多遠(yuǎn)。運(yùn)行級(jí)別分為六個(gè)等級(jí): 0級(jí):停止(不設(shè)置initdefault) 1級(jí):?jiǎn)斡脩裟J?nbsp; 2級(jí):多用戶模式,沒有NFS(與3級(jí)相同,如果你沒有建立網(wǎng)絡(luò)) 3級(jí):完整的多用戶模式 4級(jí):不使用 5級(jí):X11 6級(jí):重新啟動(dòng)(不設(shè)置initdefault) 新型的Linux系統(tǒng)幾乎總是默認(rèn)使用運(yùn)行級(jí)5(X11),表示系統(tǒng)在引導(dǎo)完成后,將會(huì)在圖形登錄界面處停止。在某物(或某人)使用X配置前,系統(tǒng)一切正常。 然后你必須找到一個(gè)登錄方法。你可以按下[Ctrl][Alt][F7]進(jìn)入一個(gè)基于文本的虛擬窗口,但為什么要這么麻煩呢?相反,我總是在/etc/inittab文件中將運(yùn)行級(jí)更改為3級(jí)。你更改的代碼為: id:5:initdefault: 它被更改為: id:3:initdefault: 當(dāng)X出錯(cuò)時(shí),這是一個(gè)非常簡(jiǎn)單的系統(tǒng)恢復(fù)方法。 多內(nèi)核 另一個(gè)明顯的磁盤恢復(fù)方法是總是安裝一個(gè)正常運(yùn)轉(zhuǎn)的內(nèi)核。我通常在一個(gè)通過yum更新的內(nèi)核上工作。有時(shí)候,內(nèi)核會(huì)出現(xiàn)一些錯(cuò)誤,使得我的一臺(tái)或幾臺(tái)機(jī)器無法啟動(dòng)。 為避免這種情況,我一直保證在機(jī)器上使用至少一個(gè)正常運(yùn)行的內(nèi)核。要解決這個(gè)問題,首先應(yīng)在/etc/yum.conf文件中添加plugins=1,然后應(yīng)用這段腳本(由RedHat的Jeremy Katz編寫),并將它命名為n-installonly.py,保存在/usr/lib/yum-plugins文件中。你可以通過修改tookeep變量(默認(rèn)為2)的方法更新系統(tǒng)所使用內(nèi)核的數(shù)量。 知道系統(tǒng)上有一個(gè)正常運(yùn)轉(zhuǎn)的內(nèi)核,你就可以進(jìn)行安全升級(jí)。如果新內(nèi)核出錯(cuò),只需啟動(dòng)舊內(nèi)核就可以解決新內(nèi)核上的問題(不管是刪除、重新編譯還是升級(jí))。 救援模式 如果你在使用Red Hat和LILO引導(dǎo)加載器,你就可以插入產(chǎn)品光盤1,并在引導(dǎo)提示符下輸入Linuxrescue進(jìn)入救援模式。啟動(dòng)機(jī)器后,你就會(huì)看到bash#提示符。在這個(gè)模式下,你可以使用許多工具。 如你所見,有檢查硬盤完整性、修復(fù)硬盤、檢查內(nèi)核模塊、裝配設(shè)備、以及創(chuàng)建文件系統(tǒng)等的工具。此時(shí)是進(jìn)行救援嘗試的最佳時(shí)機(jī)(如果你使用的是一個(gè)Red Hat,或基于Red Hat的系統(tǒng))。 另一個(gè)救援方法是進(jìn)入單用戶模式,這里你的計(jì)算機(jī)引導(dǎo)進(jìn)入運(yùn)行級(jí)1。系統(tǒng)裝配你的本地文件系統(tǒng),但不激活網(wǎng)絡(luò)。你得到一個(gè)可用的系統(tǒng)維護(hù)外殼。要進(jìn)入單用戶模式,在LILO提示符下輸入: Linuxsingle 或 Linuxemergency 建立一張救援CD 如果你正在使用LILO引入加載器,可以使用一個(gè)叫做mkrescue的強(qiáng)大工具。這個(gè)工具一般用于創(chuàng)建引導(dǎo)軟盤,但也可用來創(chuàng)建ISO。其用法如下。 如果你使用Mandriva: mkrescue --iso --initrd /boot/initrd-KERNEL-NUMBER.img -- kernel /boot/vmlinuz-KERNEL-NUMBER 注意:這里的KERNEL-NUMBER指內(nèi)核的版本號(hào)。 如果你不能確定內(nèi)核的版本,可以用以下命令找到intrd和vmlinuz的號(hào)碼: uname –r 運(yùn)行這個(gè)命令后,你就會(huì)在運(yùn)行mkrescue命令的目錄中發(fā)現(xiàn)一個(gè)rescue.iso文件?,F(xiàn)在你可以用以下命令建立鏡像: 首先,檢查建立CD的設(shè)備號(hào)碼: cdrecord –scanbus 然后用以下命令建立鏡像: cdrecord dev=0,0,0 rescue.iso 注意:這里的dev=0,0,0是用上面的scanbus命令查出的號(hào)碼。 如果你使用Slackware,使用這些步驟建立一張引導(dǎo)CD: mkrescue –iso 注意:Slackware自動(dòng)獲知在ISO中放入何種內(nèi)核。 然后,你可以用建立Mandriva鏡像同樣的方法建立鏡像。 SystemRescueCD SystemRescueCD是一個(gè)保存在可引導(dǎo)光盤上的Linux系統(tǒng),用于在系統(tǒng)崩潰后修復(fù)系統(tǒng)和數(shù)據(jù)。它還可在計(jì)算機(jī)上方便地執(zhí)行管理任務(wù),如建立和編輯硬盤分區(qū)。它由許多系統(tǒng)實(shí)用工具(parted、partimage、fstools)和基本實(shí)用工具(編輯器、midnight commander文件管理器和網(wǎng)絡(luò)工具)構(gòu)成。 它使用起來非常簡(jiǎn)單。只需要從光盤啟動(dòng)你就可以執(zhí)行一切操作,就像從硬盤啟動(dòng)一樣。系統(tǒng)內(nèi)核支持大多數(shù)重要的文件系統(tǒng)(ext2/ext3, reiserfs, reiser4, xfs, jfs, vfat, ntfs, iso9660)和網(wǎng)絡(luò)(samba和nfs)。 SystemRescueCD可能是市面上最優(yōu)秀的救援系統(tǒng)。你不僅可以從光盤上使用這種救援方法,還可以將這個(gè)救援系統(tǒng)放在U盤上使用。 要在一個(gè)U盤上建立一個(gè)SystemRescueCD,你需要大于256MB的磁盤空間。從Sourceforge下載iso鏡像并把它燒制到光盤上。現(xiàn)在你必須在U盤上創(chuàng)建文件系統(tǒng)。使用dmesg命令找出U盤名稱,然后用以下代碼擦寫U盤: dd if=/dev/zero of=/dev/sda 這里的/dev/sda是U盤的名稱。 現(xiàn)在在U盤上安裝主引導(dǎo)記錄: install-mbr /dev/sda 或 install-mbr --force /dev/sda(如果命令出錯(cuò)) 現(xiàn)在建立分散分區(qū): parted /dev/sda (parted) mkpartfs primary fat32 0 100% // use help or help mkpartfs command to see help (parted) print // check if the write was ok (parted) quit 現(xiàn)在已經(jīng)建立好文件系統(tǒng),然后將用SystemRescueCD鏡像燒制的CD中的文件復(fù)制到U盤中。保證你復(fù)制的文件等級(jí)和CD上的相同。 現(xiàn)在,使得U盤可以用sysLinux命令啟動(dòng): sysLinux/dev/sda1 這里的/dev/sda1是磁盤的名稱。 現(xiàn)在你已經(jīng)建立了一個(gè)你可以整天隨身攜帶的救援U盤。由于你使用Linux,你并不需要經(jīng)常用到它。 最后總結(jié) Linux是一個(gè)非常穩(wěn)定的環(huán)境,但由于該系統(tǒng)中還有許多其它系統(tǒng),它們可能會(huì)出現(xiàn)錯(cuò)誤。雖然我們很容易會(huì)由于使用Linux而洋洋自得(因?yàn)樗嬖谥T多優(yōu)點(diǎn)),但了解如何拯救一個(gè)系統(tǒng)崩潰的機(jī)器也不失為一種明智的做法。 當(dāng)然,不是世界上所有的救援系統(tǒng)都能100%地恢復(fù)你的系統(tǒng),因此你可能希望考慮為你的Linux服務(wù)器和桌面系統(tǒng)實(shí)施一個(gè)災(zāi)難恢復(fù)計(jì)劃。 | |