linux系統啓動與故障排除

一、Linux系統啓動過程的大體步驟與調用過程:linux

    第一階段:BIOS啓動引導階段,主要實現硬件的初始化以及查找啓動介質,從MBR中裝載啓動引導管理器(GRUB)並運行該啓動引導管理;shell

 

    第二階段:GRUB引導階段,裝載statge1statge1.5statge2,讀取/boot/grub.conf文件並顯示啓動菜單,裝載所選的kernelinitrd文件到內存中;vim

 

    第三階段:內核階段,運行內核啓動參數,解壓initrd文件並掛載initrd文件系統,裝載必須的驅動,掛載根文件系統;windows

 

    第四階段:Sysinit初始化階段,啓動/sbin/init/程序,運行rc.sysinit腳本,設置系統環境,啓動swap分區,檢查和掛載文件系統,讀取/etc/inittab文件,運行/etc/rc.d/rcn.d中定義的不一樣運行級別的服務初始化腳本,打開字符終端1-6號控制檯或者圖形顯示管理的7號控制檯bash

 

啓動階段服務器

讀取的文件和操做的對象運維

BIOS啓動引導階段ide

Noneui

GRUB啓動引導階段spa

/boot/grub/grub.conf

/boot/grub/statge1_5

/boot/grub/statge2

內核階段

/boot/vmlinux-<version>

/boot/initrd-<version>

Sysinit初始化階段

/etc/rc.d/rc.sysinit

/etc/inittab

/etc/rc.d/rc<n>.d

/etc/rc.d/init.d/*

 

二、常見的系統啓動故障與排除

 

    1)、故障一:root口令丟失

當你忘記本身的root口令時,只須要在系統啓動時進入單用戶模式,即系統運行的0級別下便可,這個模式下不須要root的口令便可登陸,具體過程以下:

 

在引導等待的讀秒結束前按下回車鍵:


 wKioL1WvN0zDKUiPAAB4bqLIlDw587.jpg

而後進入BIOS模式,選擇須要操做的系統(若是是多系統的話),按E進入編輯模式

wKioL1WvN3DByCWcAAE3FLKKF_o771.jpg


選擇內核編輯,在quiet後面輸入1或者single,表示進入單用戶模式,


 wKioL1WvN3rxYv-xAAHOVwKoKXM145.jpg


 而後回車返回到內核,按下B啓動系統


 wKioL1WvN4aDPI2SAADUspNgvO8850.jpg

執行runlevel,能夠看到已經進入單用戶模式

wKiom1WvNa6RBKdGAACIghewJYQ248.jpg

修改root帳號的密碼

wKiom1WvNffSM088AADRjLWnED8342.jpg

 

或者直接刪除root帳號的密碼

wKioL1WvN-aCMMLOAABukNlKCVE981.jpg

 

修改完成後執行init 3,進入3級別運行系統

wKioL1WvN--TpK6kAADEZGbZrgs547.jpg

而後登入系統執行runlevel,能夠看到運行正常

wKioL1WvOAWz6v8UAACdQuCEQCM286.jpg

 

 

    2)、故障二:grub.conf文件被誤刪除

/boot/grub/grub.conf文件肩負着引導內核和驅動等的重要功能,若是在操做中不當心誤刪除了該文件,那麼系統的在啓動時會自動進入grub shell模式,你只能手動來引導內核和驅動了,通常狀況下,該文件最好作一個備份,防止因爲誤操做刪除引發系統沒法啓動,具體解決過程以下:

 

沒有grub.conf文件時開機會進入grub shell模式:

wKioL1WvOCKhiNpTAADeUiYzr-o796.jpg

 

輸入help能夠查看當前模式的可用命令

wKiom1WvNkzhMzfrAALW9WKMzh0561.jpg

 

輸入root 按下tab鍵能夠看到幫助,因爲系統還沒有啓動,因此默認硬盤爲hd0

wKioL1WvOELQioRGAAAhyzHU98c630.jpg

 

輸入root hd0按下tab能夠查看分區

wKioL1WvOE7ioy4hAACqg1O2Ovk769.jpg

 

若是不知道系統的/boot在那個分區上,能夠一個一個試試,不過要注意,安裝操做系統時,/boot分區確定是ext格式的文件系統,因此這也能夠做爲一個區分依據

 

假如我輸入root hd0,1),即選擇第二個分區,輸入kernel / 按下tab鍵,會顯示當前分區下的文件,由此能夠發現並無咱們引導所需的內核和驅動

wKiom1WvNnmxDUv5AABfv7o83Ao655.jpg

 

輸入正確的/boot分區,輸入kernel / ,按下tab鍵,選擇內核(ro表示只讀,root=表示把引導程序交給/dev/sdb2分區,即爲原系統的/boot/分區)

wKiom1WvNoaR0fdEAABWJsbOqvY632.jpg

 

輸入initrd / 按下tab鍵,選擇驅動文件

wKiom1WvNqTwTL5lAADT1ismn0w687.jpg

 

輸入boot重啓系統

wKiom1WvNrSw_vg1AAG0AfpIHsE231.jpg

 

進入系統後,查看一下grub引導文件

wKiom1WvNsCgZXswAABoPg_5nRg950.jpg

 

沒有grub.conf文件,因此下次系統啓動後還須要從新手動引導,咱們能夠本身編寫一個grub.conf文件,方便系統啓動時自動引導

[root@fcy ~]# vim /boot/grub/grub.conf
default=0                   #默認啓動第一個系統
timeout=5                  #引導等待時間
hiddenmenu              #隱藏BIOS,須要在timeout計時結束前按下enter進入
title CentOS-6.5       #系統啓動顯示的標題信息
     root (hd0,0)          #指定引導分區
  kernel /vmlinuz-2.6.32-431.el6.i686 ro root=/dev/sda2  rhgb quiet
         #指定內核文件,ro表示只讀,root=/dev/sda2引導完成後交給真正的系統根目錄,rhgb表示引導時以進度條的方式顯示引導過程,quiet表示靜默啓動,即不輸出引導進程
  initrd /initramfs-2.6.32-431.el6.i686.img                    #指定驅動文件名稱


若是在指定內核和驅動時不知道文件完整名稱,可使用vim的底行命令來調入

按住shift輸入兩個!!,便可以進入底行命令模式,而後輸入使用ls命令顯示內核文件和驅動文件便可,支持命令補全

 

Grub.conf文件編輯文成後,從新啓動系統便可

這個即爲rhgb的做用

wKiom1WvNujCEFudAAAyXcjksZQ997.jpg

 

這個是timeout指定的時間,CentOS-6.5即爲title

wKiom1WvNvOTyjGhAABZpy9g3To939.jpg

 

系統正常啓動

wKioL1WvOOqTQnOuAACd_xwJOiQ025.jpg

 

    3)、故障三:GRUB引導的statge1丟失(即MBR446字節被覆蓋)


使用命令覆蓋MBR引導分區的前446字節

dd if=/dev/zero of=/dev/sda bs=446 count=1

 

重啓系統,並插入光盤

wKioL1WvOR-xBv4iAAIBATwJG_I830.jpg

 

發現選項裏有一個Rescure install system,這是系統的救援模式,進入救援模式

wKiom1WvN1-goI32AADpdCZ7tnc653.jpg

 救援模式下輸入chroot /mnt/sysp_w_picpath,執行grub-install  /dev/sda,便可從新設置MBR

wKioL1WvOW2xSSfaAAEHWgOMwi8984.jpg

重啓系統,恢復正常

 

    4)、故障四:MBR丟失

    若是隻是MBR的前446字節丟失,還能夠用救援模式使用grub-install從新安裝,這種狀況下分區表並未丟失,若是整個MBR512字節都丟失了,也就是意味着連同分區表與引導去一塊沒有了,爲了防止這種狀況出現,要提早作好MBR的備份文件

 

使用命令備份MBR文件,保存在系統本地或者遠程服務器上

wKioL1WvOY7BoKrkAADJpsvw3aA768.jpg

 

一但這種狀況發生了,那麼救援模式葉沒法拯救你的系統了,這時候咱們須要一種光盤,名爲liveCD的鏡像光盤,相似於windowsPE盤,是一種移動系統,啓動liveCD系統後能夠救援你的硬盤上的文件資源

 

裝上liveCD的光盤後進入BIOS,並設置光盤啓動系統,F10保存退出

wKiom1WvN7qzKtzQAAEHsgSR45c915.jpg

 

登入系統後切換root帳號,查看/dev/sda盤的信息,發現沒有分區表

wKioL1WvOaqDvZzYAABUyaLhph8209.jpg

 

登陸遠程服務器,拷貝mbr的備份

wKiom1WvN9LRO35KAAEqxJCdck4651.jpg

恢復備份文件到MBR

wKiom1WvN-qhGKMcAADvMQIUZWI809.jpg

 

再次查看/dev/sda的分區狀況

wKioL1WvOdvxtK9EAACeReald5w761.jpg

 

能夠看到,MBR已經恢復,重啓系統便可

 

 

    5)、故障五:statge2丟失(即/boot目錄下的grub目錄丟失)

 

進入系統,刪除/boot/grub

wKiom1WvOCvS2yXfAAA6eRTIHpQ568.jpg

 

重啓系統後進入grub shell模式,重複故障二的步驟,手動引導系統啓動

wKiom1WvODqiIXKsAADd7LQBdmk799.jpg

 

進入系統後會,使用命令重裝grub,指定路徑爲根目錄/

wKiom1WvOEOhl0t7AAE0IPH5IHM093.jpg

 

查看生成的grub目錄,發現沒有grub.conf文件

 wKiom1WvOFKSRHDQAAGvkbiu1pQ853.jpg

  

手工建立/boot/grub/grub.conf

wKioL1WvOkLifjB5AACioAMzQRc302.jpg

 

重啓系統便可

 

三、總結

    做爲一個系統運維師,熟悉linux系統的啓動過程是必需的,而且可以處理最多見的系統啓動故障問題。因爲沒有接觸過真實環境的系統啓動故障 ,以上排除方法只是手動模擬出來的,因此有不少欠缺,有錯誤和建議請指導。

相關文章
相關標籤/搜索