Linux啓動故障排除

不光對於linux對於其他的操作系統一樣,我們要想對系統啓動故障進行排除,就必須瞭解系統的構造,以及啓動過程所牽涉到文件及程序。

1.Linux操作系統的構成(大致分爲三個層次):


內核能夠完成的任務:管理內存、調度任務、驅動硬件、網絡功能、安全、文件系統

linux系統的啓動過程:

加電-->cmos-->post(上電自測試)-->grub

2.系統啓動引導的過程(如下圖):



如果系統採用硬盤引導的話,那麼每塊硬盤的前端的第一個扇區就是MBR(512Byte),MBR分爲三個部分:前446Byte爲bootloader(引導加載器),中間64Byte分區表,後2Byte magic

MBR中的bootloader引導了系統啓動的第一階段,grub菜單引導了系統啓動的第二階段(grub的配置)。

grub 菜單的配置:


當第二階段引導完成會grub菜單會提示我們選擇操作系統,


選擇完操作系統後,系統就會加載內核,


內核加載完成後就開始運行系統中第一個進程—INIT,在linux操作系統中init是一切進程的前提。


運行init進程會調用/etc/inittab配置文件,指明系統進入的默認級別,無論進入任何的級別,系統都會調用/etc/rc.d/rc.sysinit腳本對系統進行初始化,當系統進入某一級別時,執行/etc/rc.d/rc系統會進入相應級別的目錄{etc/rc0.d/ etc/rc1.d/ etc/rc2.d/  etc/rc3.d/  etc/rc4.d/ etc/rc5.d/  etc/rc6.d/},執行到最後時,系統會執行/etc/rc.d/rc.local(又稱爲開機腳本),最後根據提供的終端進行登錄。

至此,系統引導到開機的整個過程就完成了。


故障排除:在linux系統中故障一般發生在系統引導的第一階段或者第二階段。第一階段發生故障的原因是MBR中446Byte的bootloader出現問題,如果出現問題就看不到後面的grub菜單;第二階段是grub菜單的配置文件和說明文件出現問題,就沒有辦法選擇操作系統。


下面我們模擬第一階段的故障:

首先,使用dd if=/dev/zero of=/dev/sda bs=446 count=1命令重寫硬盤的前446字節,把MBR中的446字節的bootloader蓋掉。


重啓之後,發現系統引導失敗


此時,我們可以通過引導光盤進行引導系統,進入急救模式(rescue)


進入急救模式後,出現下面的畫面,選擇相應的操作:

點擊ok,出現如下界面:


此時,我們需要重建第一階段,首先執行grub進入下圖模式


然後,用root(hd0,0)來指明某一盤的引導分區,接着使用setup(hd0)重建硬盤的第一階段。


接着,使用crtl+c組合鍵退出grub模式,連續執行兩次exit,系統會自動引導,若引導成功會出現如下的登陸界面。


第二階段的故障模擬:

第二階段主要在/boot/grub/生成很多的配置和說明文件,如果/boot/grub/下的grub.conf文件丟失了,會出現什麼情況呢?現在我們把該目錄下的grub.conf文件刪除,然後重啓系統。

結果出現了以下界面

進入了grub模式,說明我們第一階段的引導正常,問題出現在了第二階段。


現在,我們就需要用命令來引導系統的啓動了:


然後,使用boot來啓動引導,接着出現下面的登陸界面:


我們進入系統,使用grub-install --root-directory=/  /dev/sda 來重建二階段。


由於第二階段相關的文件都在/boot/grub/目錄下,我們進入該目錄下,查看是否文件缺失


結果發現鏈接所指的文件不存在,那麼我們就需要創建該文件(grub.conf)內容如下:


然後重新啓動,若正常出現如下的界面,說明引導正常:


現在來模擬更嚴重的第二階段的引導,如果我的/boot/grub/下的文件全部丟失了,現在會出現什麼情況呢?我們該怎麼辦?

首先,我把/boot/grub/目錄下的文件全部刪除掉,然後重新啓動系統出現如下界面:


此時,我們需要進入cmos模式,把引導項修改爲光盤引導:


按F10保存修改,會進入如下界面:


然後,進入rescue急救模式,出現如下操作:

點擊ok,出現如下界面:


然後,使用chroot改變根目錄爲/mnt/sysp_w_picpath,使用ls 來查看/boot/grub/目錄下的內容發現內容爲空,然後使用grub-install 重建第二階段:


再次,查看/boot/grub/目錄:


此時,由於我們在cmos中設置了光盤引導,所以要使用硬盤引導的話,就必須去掉光盤,這裏我們取出光盤,連續執行兩次exit,系統會自動引導,接着出現如下界面:

進入了grub模式,說明我們第一階段的引導正常,問題出現在了第二階段。


現在,我們就需要用命令來引導系統的啓動了:


然後,使用boot來啓動引導,接着出現下面的登陸界面:


我們進入系統,使用grub-install --root-directory=/  /dev/sda 來重建二階段。


由於第二階段相關的文件都在/boot/grub/目錄下,我們進入該目錄下,查看是否文件缺失


結果發現鏈接所指的文件不存在,那麼我們就需要創建該文件(grub.conf)內容如下:


然後重新啓動,若正常出現如下的界面,說明引導正常:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章