linux系統修復之grub損壞

聊聊對grub的理解吧。

想對grub理解大概的linux啓動過程是要清楚的。

grub是引導管理程序,安裝好Linux之後,用戶reboot計算機過經BIOS自檢和初始化時,BIOS將讀取主引導記錄(MBR)到內存中去。而MBR是一個512字節的扇區,在磁盤第一個扇區中,即0磁道0柱面1扇區。MBR的前446個字節中保存的程序就是引導管理程序,它負責選擇啓動分區並加載存儲在其他位置的操作系統。當MBR被加載到內存之後,BIOS就會將控制權交給MBR。

grub擁有交互式命令窗口,可以在啓動的時間動態地加載各種需要的參數或選項,grub能在系統引導時訪問它的配置文件/boot/grub/grub.conf,另外還可以支持從網絡引導。

而grub一個非常重要的功能就是加載內核映像,當內核映像被加載到內存之後,啓動階段就開始了,接着系統將通過執行一系列的啓動腳本來到登錄界面。如果輸入了正確的用戶名和密碼,則系統控制權將被交給shell,至此啓動過程結束了。

1、grub配置文件詳細說明

  /boot目錄存放grub引導管理程序的配置文件/boot/grub/grub.conf和內核映像。

wKiom1LKY7_zdH0RAAAbeyaMwfY739.jpg

 

下面是grub.conf的內容:

wKioL1LKZCqgBNbGAACnd8gY4sc831.jpg

上圖註釋的內容含義是:對這個文件更改後不需要重啓。注意本系統有一個/boot分區,這就意味着所有的內核映像及相關文件的路徑都是針對/boot而言的,即如/vmlinuz-version的“/”實際是指/boot/。同時也說明,如果沒有單獨的/boot分區,則內核映像及相關文件的路徑都必須寫成以/boot/開頭。

#boot=/dev/sda                  --表示啓動磁盤爲第一塊SCSI接口磁盤

default=0                            --表示默認啓動項爲第一個title對應的操作系統,這裏是0表示第一個title

timout=5                          --表示進入grub啓動界面後,將會有5秒讓用戶選擇哪個title所對應的操作系統來啓動。

splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz  --指定了grub啓動界面背景圖片

hiddenmenu  --在grub啓動畫面只顯示倒計時而不顯示備選菜單。

title Red Hat Enterprise Linux Server (2.6.18-194.el5)    --指定grub菜單列表中出現的title

password=111   --這是我自己加上去的,在title之外指定password的話,這個密碼是爲菜單編輯時服務的,而在title內的話是爲是否有權啓動相應操作系統服務

root (hd0,0)   --表示/boot分區的位置。

kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet   --指定當引導操作系統時要加載的內核文件,使用的是絕對路徑。ro表示爲只讀方式加載內核文件,當Linux內核在啓動,如果以可寫方式加載,那麼啓動時如果出現異常或斷電,則可能造成破壞,所以一般採取以只讀方式加載內核。root=/dev/VolGroup00/LogVol00  表示root分區路徑。選項rhgb以圖形界面啓動,以文本界面啓動可以刪除即可。quiet表示在啓動過程中不顯示錯誤信息。

initrd /initrd-2.6.18-194.el5.img    --表示在引導時指定初始化內存盤所使用的映像文件的絕對路徑。當根分區爲ext3時,必須加載此項。

 

2、開始模擬grub文件損壞實驗

先備份一下grub.conf

cp grub.conf grub.conf.bak

wKiom1LKbR_zUAJSAAAx1oKUxsA093.jpg

wKiom1LKbZXzyqBpAAAzCCQASAY252.jpg

重啓後進不了操作系統了,只能到grub模式下:

wKioL1LKbefDmaTOAABEx6P-wYE339.jpg

注意,上面是模擬單單是grub.conf這個配置文件損壞的情況。如果連grub引導管理程序也損壞的話,是進入不到上圖的命令界面的,那麼只能使用系統光盤啓動後進入linux 救援模式即,重新安裝grub

即grub-install /dev/sda,重啓後就可以進入上圖的grub命令交互界面了。

繼續上面的開始修復系統,因爲grub.conf文件已經損壞,所以找不到內核文件和映像文件的,要重新指定一下,這個指定是在內存裏面的,不會寫到grub.conf文件。

wKioL1LKcCHQB5fNAADea9kbnpY046.jpg

 

注意:root(hd0,0)這個分區位置只能自己去嘗試下。內核版本即,vmlinuz-version,這個version可以用TAB鍵補全。

boot命令後回車,加載完後自動重啓就可以正常進入系統界面了。

修復還沒結束呢,現在還要把grub.conf還原回來,有備份就簡單多了。但沒備份的話,那隻能自己去vi grub.conf一個文件,格式不記得怎麼寫可以參照下別的linux操作系統。

 

總結:不備份也可以恢復,但這會影響你的當機時間啊。所以別要給自己惹事,把工作做好來,該有備份的還是要備份的。

 

 

 

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