ps: 紅字字體爲重要部分, 仔細看
linux
這次實驗目的: 在工做中, 不免會遇到grub損壞, 如今來模擬grub損壞後修復過程。ios
1、 第一階段修復MBR扇區故障;shell
1. 咱們利用一條命令來把MBR的前446字節覆蓋的方法來模擬第一階段vim
[root@Centos1 ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1bash
if=文件名: 輸入文件名, 缺省爲標準輸入. 即指定源文件。網絡
of=文件名: 輸出文件名, 缺省爲標準輸出. 即指定目的文件。app
ibs=bytes: 一次讀入bytes個字節, 即指定一個塊大小爲bytes個字節。ide
bs=bytes: 同時設置讀入/輸出的塊大小爲bytes文件。字體
count=blocks: 僅拷貝blocks個塊,塊大小等於ibs指定的字節數。spa
[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 #重啓操做系統
2、 第二階段模擬/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分區, 那就不用試了)
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 #重啓系統