教你不再(zài)為Linux係統無法正常啟動而煩惱
Linux在啟動過程中會出現一些(xiē)故障,導致係統無法正(zhèng)常啟(qǐ)動,本文列舉了幾(jǐ)個應用單用戶(hù)模式、GRUB命令(lìng)操作、Linux救援模(mó)式的典型故障修複案(àn)例(lì)幫(bāng)助讀者了解此(cǐ)類問題的解(jiě)決。
一、單用戶模式
Linux提供了單用(yòng)戶(hù)模(mó)式(類似(sì)Windows安全模式),可以在最小環境中(zhōng)進行係統維護。在單用戶(hù)模式(運行級別1)中,Linux引導進(jìn)入根shell,網(wǎng)絡被禁用(yòng),隻有(yǒu)少數進程運行。單(dān)用(yòng)戶模式可以用(yòng)來修(xiū)改(gǎi)文(wén)件(jiàn)係統損壞、還原配置文件(jiàn)、移動用戶(hù)數據(jù)等。
以下列(liè)舉了幾個單用戶(hù)模式修複係統故障的典型案例:
案例一:硬盤扇區(qū)錯亂
在啟動過程中最容易遇到的問題就是硬盤可能有壞道(dào)或扇區錯(cuò)亂(數據損壞)的(de)情況,這種情況多由於異常斷電、不正常關機導(dǎo)致。
此種問題發生(shēng),在(zài)係統(tǒng)啟動(dòng)的時候,屏幕會(huì)顯(xiǎn)示:
Press root password or ctrl+D:
此時輸(shū)入root密碼係(xì)統自動進入單用戶(hù)模式,輸入“fsck -y /dev/hda6”(fsck為文件(jiàn)係統檢測修複命令(lìng),“-y”設定檢(jiǎn)測到錯(cuò)誤自動修(xiū)複,/dev/hda6為發生錯誤的硬盤分區(qū),請依據具(jù)體情況更改 此參(cān)數),係統修複完成後,用(yòng)命令“reboot”重(chóng)新啟動(dòng)即可(kě)。
案(àn)例二:root密(mì)碼忘記
在單(dān)用戶模式(shì) 中,Linux不需要root密碼(Red Hat係統不需要root密碼,但SuSe則需要,不(bú)同Linux係統(tǒng)稍有(yǒu)差別,本(běn)文以Fedora Core 6為例(lì)講(jiǎng)解),這使更改(gǎi)root密碼非(fēi)常容易。了(le)解當係統引導進入(rù)多用戶模式失敗(bài)時,如(rú)何進入單用戶(hù)模(mó)式,非常重要。
1、 在係統啟動過程(chéng)中,會出現圖(tú)1所(suǒ)示畫(huà)麵,按(àn)任意鍵,進入GRUB菜單選項。
圖1 進入(rù)GRBU菜單選項
若希望以後無此提示(shì),直接進入(rù)GRUB菜單選(xuǎn)項,刪除配置文件grub.conf中“hiddenmenu”項即可(kě)。
2、 按(àn)“e”鍵編輯GRUB引導菜單選項(xiàng),圖(tú)2顯示為按“e”鍵後的GRUB屏(píng)幕。
圖(tú)2 GRUB引導菜單選項
通過箭頭鍵下移到kernel行,並按“e”鍵,得到圖3中顯示的(de)編輯(jí)界(jiè)麵:
圖3 kernel行編(biān)輯界麵
在尾行光(guāng)標處添加(jiā)single,按(àn)回車鍵返回前一個(gè)屏(píng)幕,按“b”鍵進行引導,則係統自動進入單用(yòng)戶模(mó)式,如(rú)果要(yào)改變root密(mì)碼,則執行(háng)命令:
sh-3.1# passwd root
更(gèng)改成功後,執行命令exit退出(chū)重(chóng)啟即可。
我們可以在單用戶模式(shì)中去糾正阻止係統正常啟(qǐ)動(dòng)的很(hěn)多問題,比如:1、 禁用可能中(zhōng)止(zhǐ)係(xì)統運行(háng)的服務如(rú)禁用Samba服務(wù),則執行:sh-3.1# chkconfig smb off下次係統引導就不會啟動(dòng)Samba服務了。
2、 更改係統(tǒng)缺(quē)省運行級如果X Window無法啟動(dòng)或者出現故障,可(kě)以(yǐ)編輯/etc/inittab文件,采用(yòng)文本(běn)方式登錄,更(gèng)改initdefault引導級別(bié)為3:id:3:initdefault:
案例三、GRUB選項(xiàng)設置錯誤
下圖是一個(gè)係統管理員不希望看到的控(kòng)製台信息,“Error 15”顯示係統無法找到grub.conf中指定的內核。
圖4 GRUB引(yǐn)導錯誤信息
我們觀察發現(xiàn)因(yīn)為打(dǎ)字錯誤,內核文件的“vmlinuz”打成了“vmlinux”,所以係(xì)統(tǒng)無法找到內核的(de)可執行文(wén)件(jiàn)。我們(men)可(kě)以(yǐ)按任意(yì)鍵回到(dào)GRUB 編輯(jí)界麵,修改此錯誤,回車保存(cún)後按“b”鍵(jiàn)即可(kě)正常引導,當然不要忘記(jì)進入係統後修改grub.conf文(wén)件中此處錯誤。
這是很多(duō)初學Linux的用戶在修改GRUB設置時很容易(yì)犯的錯誤,出現此(cǐ)黑屏提示時注意觀察報(bào)錯信息,即可針對性(xìng)修複(fù)。
二、GRUB引(yǐn)導故障排除(chú)
有時Linux啟動後會(huì)直接進(jìn)入GRUB命令行界麵(隻有“grub>”提示符(fú)),此時很多用戶就選擇了(le)重新安裝GRUB甚至重新安裝係統。其(qí)實 一般而言此故障的原因最(zuì)常見的有(yǒu)兩個(gè):一是GRUB配(pèi)置文件中(zhōng)選項設置錯誤;二是GRUB配置文件丟(diū)失(shī)(還有少(shǎo)數原因,如內核文件或(huò)鏡像文件損壞(huài)、丟 失,/boot目錄(lù)誤刪除等),如(rú)果是第一種(zhǒng)情況,可(kě)以首(shǒu)先通過GRUB命(mìng)令引導係統後修複;若是第二種(zhǒng)情況,則要使用(yòng)Linux救援(yuán)模式修複了(本文(wén)後 續有描(miáo)述)。
首先(xiān),我們需要了解GRUB啟動係統的引(yǐn)導過程,grub.conf文件(jiàn)中主(zhǔ)要的配置選項如下(注意(yì),GRUB配置文件為/boot/grub/grub.conf, /etc/grub.conf隻(zhī)是此(cǐ)文件的軟鏈接(jiē)):
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
其(qí)中“title”段(duàn)指定了GRUB引導的係(xì)統:“root”段指定了/boot分區所在的位置:“kernel”段指定了內(nèi)核文件所在位置,內核加載 時權限屬性為隻讀(“ro”)以及指定根(gēn)分區所在位(wèi)置(root=LABEL=/);initrd指定了鏡(jìng)像文件(jiàn)所在位置(zhì)。所以GRUB在引導時順(shùn)序(xù)為首 先(xiān)加載/boot分區,然後依(yī)次載入內核與鏡(jìng)像文件。
案例:“title Fedora Core (2.6.18-1.2798.fc6)”段(duàn)被(bèi)誤刪除(chú)
此時,係統(tǒng)啟動後會(huì)自動進入“GRUB>”命令行,為(wéi)排除故障我們可以(yǐ)依次做如下操作:
1、查(chá)找/boot/grub/grub.conf文件所在分(fèn)區GRUB> find /boot/grub/grub.conf(hd0,0)
2、查看grub.conf文件錯誤GRUB>cat (hd0,0)/boot/grub/grub.conf建議係(xì)統安裝設置好(hǎo)後(hòu),要將grub.conf文件備份,如果有備份文件如 grub.conf.bak,則此時(shí)可以查看(kàn)備(bèi)份文件(jiàn),與當前文件比(bǐ)較(jiào),發現錯誤:GRUB>cat (hd0,0)/boot/grub/grub.conf.bak
3、確認錯(cuò)誤後,先通過(guò)命令行方式完成(chéng)GRUB引導,進入係統(tǒng)後再(zài)行修複(fù)grub.conf文件錯(cuò)誤:1)指定/boot分區root (hd0,0)
2)指(zhǐ)定內核加載kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet 3)指(zhǐ)定鏡像文件所在位置initrd /boot/initrd-2.6.18-1.2798.fc6.img
提示:GRUB支持tab鍵命(mìng)令(lìng)補全功能
4、從/boot分區啟動boot (hd0,0)
命令行模式可(kě)以在GRUB菜單模式(shì)中通過按“c”鍵調用,也(yě)可以用於測試新編(biān)譯的內核(設置kernel、initrd引導新內核及鏡像文件)。增(zēng)加對GRUB引導(dǎo)以及Linux係統引導知識的(de)了解將對此(cǐ)類故障排除大有幫(bāng)助。
三、Linux救援模式應用(yòng)
當係統連單用戶模式都無法進入時或出現GRUB命令行也不能(néng)解決的引(yǐn)導問題,我(wǒ)們就需(xū)要使(shǐ)用Linux救(jiù)援(yuán)模式來進行(háng)故障排除了。步驟(zhòu)如下:
1、將Linux安裝光盤(pán)(如果使(shǐ)用CD光盤,則放入第一張引導光盤)放(fàng)入光驅,設(shè)置(zhì)固件CMOS/Bioses為(wéi)光盤引導,當Linux安裝(zhuāng)畫麵(miàn)出(chū)現後, 在“boot:”提示符後輸(shū)入“linux rescue”回車(chē)進入救援模式。(想了解(jiě)救援模式詳細信息,還可以按(àn)F5鍵查看)
圖5 進入救援(yuán)模式
2、係統會檢測硬件,引(yǐn)導光盤上(shàng)的Linux環境,依次提(tí)示(shì)你選擇救援模(mó)式下使(shǐ)用的語言(建(jiàn)議選(xuǎn)擇(zé)默(mò)認的英文即可,根(gēn)據筆者測試,部分Linux係統選 擇中文會出現亂碼);鍵盤(pán)設置用默認的“us”就好;網絡設置可以根據(jù)需(xū)要,大(dà)部分(fèn)故障(zhàng)修(xiū)複不需要網絡連接,可不進行此項(xiàng)設置,選擇“No”。
3、接(jiē)下來係統將試圖查找根分區(qū),出現以下提(tí)示:圖6 掛載設置
默認在救援模(mó)式(shì),硬盤的根分區將(jiāng)掛載到光(guāng)盤Linux環境(jìng)的/mnt/sysimage目錄下,默認選項(xiàng)“continue”表示掛載權限為讀 寫:“Read-only”為隻讀(dú),如果出現檢測失敗可以選擇“skip”跳過。此處,因為要對係(xì)統(tǒng)進(jìn)行修(xiū)複,所以需要有讀寫權限,一般(bān)選擇默認選(xuǎn)項 “continue”。
進入下一步後,係統(tǒng)提示執行“chroot /mnt/sysimage”命令,可以將根目錄掛載到(dào)我們硬盤係統的(de)根目錄中去。
案(àn)例一(yī):雙係統(tǒng)啟動修複(fù)
當我們安裝雙(shuāng)係統環境,先(xiān)安(ān)裝Linux再安裝(zhuāng)Windows;或(huò)者已(yǐ)經(jīng)安裝好雙係統環境的Windows損(sǔn)壞,在重新安裝(zhuāng)Windows後,保存(cún) GRUB的(de)MBR(Master Boot Record,主引導記錄)會被Windows係統的自舉程序NTLDR所(suǒ)覆蓋,造(zào)成Linux係統無(wú)法引導(dǎo)。
1、如果要恢(huī)複雙係統引(yǐn)導,首先用上述方(fāng)法進(jìn)入(rù)救援模式,執行chroot命令如下:sh-3.1# chroot /mnt/sysimage
2、將根目錄切換到硬盤係統的(de)根(gēn)目錄中,然後執行(háng)grub-install命令(lìng)重(chóng)新(xīn)安裝GRUB:sh-3.1# grub-install /dev/hda“/dev/hda”為硬盤(pán)名稱,如使用SCSI硬盤或Linux安裝在第二塊(kuài)IDE硬盤,此項設置要(yào)做相應調整。
3、然後依次執行(háng)exit命(mìng)令,退出chroot模式及(jí)救援模式(執行兩次exit命(mìng)令):sh-3.1# exit係(xì)統重啟後,將恢複GRUB引導(dǎo)的雙係統啟動。
案(àn)例二:係統配(pèi)置(zhì)文件丟失修複
係(xì)統在引導期間,很重(chóng)要的一個過(guò)程就是init進程讀取其(qí)配置文件/etc/inittab,啟動(dòng)係統基(jī)本(běn)服務程序及默認運行級別的服務(wù)程序完成係統引 導,如(rú)果/etc/inittab誤刪除或修改(gǎi)錯誤,Linux將無法正常啟動,如圖7所示。此時,隻有通過救援模(mó)式才可以解決此類問題。
圖7 /etc/inittab文件丟失(shī)引(yǐn)導錯誤示(shì)例
1、有備(bèi)份文件的恢複辦法進入救(jiù)援模式(shì),執行(háng)chroot命令後,如果有(yǒu)此(cǐ)文件的備份(強烈建議係統中(zhōng)的重要(yào)數據目錄,如/etc、/boot等要(yào)進行 備份),直接將備份文件拷貝回去,退(tuì)出重啟即(jí)可。如(rú)果是配置文件修改錯誤,如(rú)比較典型的/boot/grub/grub.conf及/etc /passwd的(de)文件修改錯誤,也可以直接修(xiū)正恢(huī)複。假設有備份文(wén)件/etc/inittab.bak,則(zé)在救(jiù)援(yuán)模式下執行:sh-3.1# chroot /mnt/sysimage sh-3.1# cp /etc/inittab.bak /etc/inittab
2、 沒有備份(fèn)文件的恢複辦法(fǎ)如果一些配置文件丟失或軟件誤刪(shān)除,且無備份,可以通過重新安裝軟件(jiàn)包來恢複
關鍵詞:Linux係(xì)統(tǒng)
閱讀本(běn)文後您有什麽(me)感想? 已有 人給出(chū)評價!
- 0
- 0
- 0
- 0
- 0
- 0