grub損壞及丟失模擬

本文轉載自 “陳小賤。” 博客:http://chenxiaojian.blog.51cto.com/9345444/1619924


此次實驗目的:  在工作中, 難免會遇到grub損壞, 現在來模擬grub損壞後修復過程。

一、 第一階段修復MBR扇區故障;

     1. 我們利用一條命令來把MBR的前446字節覆蓋的方法來模擬第一階段

[root@Centos1 ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1

if=文件名:  輸入文件名, 缺省爲標準輸入. 即指定源文件。

of=文件名: 輸出文件名, 缺省爲標準輸出. 即指定目的文件。

ibs=bytes: 一次讀入bytes個字節, 即指定一個塊大小爲bytes個字節。

bs=bytes:  同時設置讀入/輸出的塊大小爲bytes文件。

count=blocks: 僅拷貝blocks個塊,塊大小等於ibs指定的字節數。

[root@Centos1 ~]# init 6                           #重啓完後進不了系統

     2. 掛載系統光盤, 進入救援模式;

          ①. 進入bios, 找到boot選項, 將CD-ROM調整爲第一系統項;

圖片

          ②. 選擇Rescue installed system, 進入救援模式;

               圖片

          ③. 選擇語言.默認即可, 按tab鍵移動到OK選項;

               圖片

          ④. 選擇鍵盤, 默認即可, 按tab鍵移動到OK選項;

               圖片

          ⑤. 因爲我們放入了本地光盤,所以這裏也保持默認即可, 按tab鍵移動到OK選項;

               圖片

                                                                

          ⑥. 根據自己的實際需求是否開機網絡, 本人選擇no, 按tab鍵移動到OK選項;

               圖片

          ⑦. 選擇默認即可,默認將Rescue環境掛載到/mnt/sysp_w_picpath, 按tab鍵移動到OK選項;

               圖片

          ⑧. 選擇進入模式, 這裏本人選擇shell模式, 按tab鍵移動OK選項;

            

          ⑨. 進入root環境, 安裝grub;

               bash-4.1# chroot /mnt/sysp_w_picpath                  #進入到root環境

               sh-4.1# grub-install /dev/sda                         #安裝grub到第一塊硬盤

               sh-4.1# exit

          ⑩. 將光盤彈出, 重啓操作系統, 便能進入系統;

               bash-4.1# reboot                                        #重啓操作系統

               wKioL1UFgV2RJRO-AABtffQCheQ362.jpg



二、 第二階段模擬/etc/grub.conf丟失;

     1. 刪除grub.conf配置文件;

[root@Centos1 ~]# rm -rf /boot/grub/grub.conf                #刪除grub.conf配置文件

疑問:  很多人會問什麼不刪除/etc/grub.conf, 經過本人推測/boot/grub/grub.conf做軟連接到/ect/grub.conf, 所以說刪除/etc/grub.conf後系統會到/boot/grub目錄下找grub.conf文件;

[root@Centos1 ~]# init 6                                                   #重啓操作系統

     2. 開機後, 無法進入系統, 會提示grub>字樣;

          圖片

     3. 設置grub的根設備爲linux內核所在分區, 因爲我的/boot分區安裝在第一塊的第一個分區, 所以設置爲(hd0,0), 注意這裏不分IDC硬盤和SCSI硬盤;

          假設你不知道包含內核文件等引導文件的/boot分區所在位置, 可以通過嘗試進行, 先輸入“root (hd0,”然後按tab鍵, 其中後面寫的0X83都是分區都有可能是/root分區, (0X82的swap分區, 那就不用試了)

wKiom1UFgQDw_2x3AAHVaBQ39KQ978.jpg

grub> root (hd0,1)

     4. 補全內核文件之後, 還需要在後面設置內核加載權限爲只讀ro, 並通過"root="指定根分區設置文件的位置;

grub> kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/sda2

     5. 加載內核鏡像文件

grub> initrd /initramfs-2.6.32-358.el6.x86_64.img                #可以按tab鍵補全

     6. 引導系統

grub> boot

圖片

解釋: 上圖選擇的分區不對, 關閉電源繼續.  重複以上操作.

grub> root (hd0,1)

grub> kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root       #因爲我的是LVM卷。

grub> initrd /initramfs-2.6.32-358.el6.x86_64.img          #可以按tab鍵補全

grub> boot                

     7. 編寫grub.conf文件, 不然下次還會進入到grub>模式;

[root@Centos1 ~]# vim /boot/grub/grub.conf                                                               #編輯grub.conf配置文件

圖片

圖片

圖片

[root@Centos1 ~]# cat /boot/grub/grub.cof
default=0                                                 #默認啓動第一個引導
timeout=5                                                 #在菜單到啓動系統停留時間,5秒。
title kernel-2.6.32                                       #啓動項目名稱
root (hd0,1)                                              #boot所在位置
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/UUID="51e646df-c73b-4d07-a639-ba010bc02e4d" TYPE="ext4"                     #內核版本及目標位置
initrd /initramfs-2.6.32-358.el6.x86_64.img                    #加載內核文件路徑

[root@Centos1 ~]# init 6                                       #重啓系統

圖片

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