天天看點

linux系統之牛刀小試(grub修複)

第一種情況:

是由于grub中的grub.conf檔案損壞,開機後直接進入到了grub>指令行模式下。下面将圖解此過程

<a href="http://s3.51cto.com/wyfs02/M01/1C/8F/wKiom1MXKoyjpCjVAADEN5fwqXw987.jpg" target="_blank"></a>

這時可以使用help看一下grub可支援指令有那些,以便供修複時使用。

<a href="http://s3.51cto.com/wyfs02/M01/1C/8F/wKiom1MXKsbjB6baAAJ1Xc42J9M621.jpg" target="_blank"></a>

第二個使用的指令是find (hd0,0)/按tab如果能補全就表示系統在此分區上。

<a href="http://s3.51cto.com/wyfs02/M00/1C/8F/wKiom1MXK36DvDoGAAIbiHuUi88649.jpg" target="_blank"></a>

各個參數說明:

<a href="http://s3.51cto.com/wyfs02/M02/1C/91/wKioL1MXK-eThXRFAAKnDDyJR_Y288.jpg" target="_blank"></a>

這時要注意,當你指定核心後,但未指定核心後面的參數(ro root=(此處未指定的話))将無法正常啟動,報:請給root參數,一般情況下是系統是可以自動探測到,但這個功能并不靠譜,那麼隻能靠備份或你的記憶将參數補上(是以定期備份/etc/fstab、與grub.conf、是多麼重要的事情,原因你懂的。)

如下圖:

<a href="http://s3.51cto.com/wyfs02/M02/1C/91/wKioL1MXLBeizgyoAAKVMterepY227.jpg" target="_blank"></a>

而這時就看到你平時的習慣了,備份相當重要

<a href="http://s3.51cto.com/wyfs02/M00/1C/91/wKioL1MXLJXwsz4nAAEpT8AtNxQ079.jpg" target="_blank"></a>

當正常登入系統後,将grub.conf檔案重新寫就可以了。(上圖的完整路徑是root=/dev/mapper/vg_www-lv_root,寫全了就看不到了,是以在此特别說明)

<a href="http://s3.51cto.com/wyfs02/M02/1C/91/wKiom1MXLYCyjSxIAADAJHyLQUs934.jpg" target="_blank"></a>

看到title了吧

<a href="http://s3.51cto.com/wyfs02/M01/1C/92/wKioL1MXLfOwX7fNAAB9R82I784906.jpg" target="_blank"></a>

過了下面這張圖就說明系統是可以正常啟動了

<a href="http://s3.51cto.com/wyfs02/M01/1C/92/wKioL1MXLlWAuDu3AAFHH-wWsQo362.jpg" target="_blank"></a>

第一種情況順利解決!a_c

第二種情況:

grub損壞(最明顯的提示為:Operating System not found)

如mbr資料損壞(注僅是bootloader損壞,分區表是好的),如果沒有重新啟動還可能修複,但是如果是重新開機後發現grub損壞,那麼隻能挂載CD光牒進入緊急救援模式。(以下将以挂載CD光牒說明)

<a href="http://s3.51cto.com/wyfs02/M01/1C/97/wKiom1MXNcTCmwTFAADsm7LBJOU882.jpg" target="_blank"></a>

dd執行之後的景象,是不是好驚悚a_c

<a href="http://s3.51cto.com/wyfs02/M02/1C/93/wKioL1MXLm3Q_71jAADt30SMzuA822.jpg" target="_blank"></a>

挂載CD光牒進入緊急救援模式,在BIOS中将CD光牒設定為第一引導裝置。

<a href="http://s3.51cto.com/wyfs02/M00/1C/92/wKiom1MXLsyjvrM6AADCUR4Jh1U127.jpg" target="_blank"></a>

在菜單中選擇"Rescue installed system"

<a href="http://s3.51cto.com/wyfs02/M02/1C/93/wKioL1MXLtDBLcnFAAC8ueZ0qjg965.jpg" target="_blank"></a>

之後将對:語言----》鍵盤設定

<a href="http://s3.51cto.com/wyfs02/M01/1C/93/wKioL1MXLzXg49moAADFHAkco-o077.jpg" target="_blank"></a>

是否啟用網絡(不需要,則No,如果選擇了Yes将要求選擇擷取IP位址的方式)

<a href="http://s3.51cto.com/wyfs02/M00/1C/92/wKiom1MXL3Ci_1ITAACM0ZGAkIA079.jpg" target="_blank"></a>

正式進入救援模式

<a href="http://s3.51cto.com/wyfs02/M00/1C/94/wKioL1MXMBXh_cz1AAJG4RTs3mM693.jpg" target="_blank"></a>

原系統己經挂載的位置,如何切換到原系統下

<a href="http://s3.51cto.com/wyfs02/M01/1C/93/wKiom1MXMKyyyaEBAAEpg-DTDcs633.jpg" target="_blank"></a>

開啟一個shell

<a href="http://s3.51cto.com/wyfs02/M02/1C/94/wKioL1MXMN2RUKWbAACJ4NoiYuc323.jpg" target="_blank"></a>

切換到原系統

<a href="http://s3.51cto.com/wyfs02/M01/1C/94/wKioL1MXMP3iVQdAAADB18Dyz5U401.jpg" target="_blank"></a>

這時可以直接輸入grub指令進入grub中(這個grub是CD光牒中的)

<a href="http://s3.51cto.com/wyfs02/M00/1C/94/wKiom1MXMWnxkwqgAAD40fddNuc703.jpg" target="_blank"></a>

直接使用 help  setup會顯示setup的使用方法。

設定root(root預設分區)如(hd0,0),此分區一定要root所在的系統分區,之後使用setup安裝,指令是setup(hd0)(由于mbr并屬于分區,是以将grub安裝到hd0裝置即可),如果是成功了會有succeeded提示。quit退出即可

<a href="http://s3.51cto.com/wyfs02/M00/1C/95/wKiom1MXM1TTuJYDAAHdrvIlI_c478.jpg" target="_blank"></a>

重新開機系統,取出CD光牒,有如下資訊就表示修複完成

<a href="http://s3.51cto.com/wyfs02/M02/1C/96/wKioL1MXM3jTAMqdAADzkCznYyw370.jpg" target="_blank"></a>

如果grub目錄都損壞,無法正常啟動。則可以在此模式使用grub-install --root-directory=/  /dev/sda(裝置是什麼就寫什麼)手寫配置檔案grub.conf即可

總結:

   以上都是在虛拟機上試驗,可能與真正的生産環境遇到的情況有所不同,通過此次試驗,進一步了解了bootloader的工作原理。為以後的學習打下基礎。

=========================================完============================================

本文轉自 jinlinger 51CTO部落格,原文連結:http://blog.51cto.com/essun/1368904,如需轉載請自行聯系原作者

繼續閱讀