grub stage1、grub stage1.5、grub stage2的破壞與修復實驗

grub stage1grub stage1.5、grub stage2的破壞與修復實驗

一、破壞并修復grub ?stage1?????? 446個字節

hexdump? -C? /dev/sda? -n? 512???????????? 查看MBR的512個字節

 

dd??? if=/dev/zero??? of=/dev/sda??? bs=1???????? count=446?? 破壞MBR的bootloader446字節

 

1、若在破壞grub1階段后沒有進行重啟系統的操作,則可以使用如下的方法:

grub? install? /dev/sda??????????????? 修復MBR的bootloader446字節

(此命令會將grub的1階段、1.5階段以及2階段全部修復,而不僅僅只修復這446個字節。)

 

2、若在破壞grub1階段后進行了重啟系統的操作,則可以使用如下的方法:

1)、reboot 重啟機器選擇救援模式(語言選擇English、鍵盤選擇US、不進行網絡配置并選擇打開shell模式。)

2)、剛進入時不能直接使用grub? install? /dev/sda命令,因為此命令并不是在光盤中存在,而是在原來的系統中,所以需要切根(chroot? /mnt/sysimage)

3)、切根完畢之后再執行grub? install? /dev/sda命令。

4)、執行操作symc進行同步,為了確保操作已經寫入磁盤,保險起見此命令至少要執行3次。

5)、選擇第三項reboot進行重啟。(看見菜單表示修復成功,可以進入系統)

6)、若重啟系統時需要打標簽可以通過禁用SELinux解決。

重啟后????? 輸入SELinux=0???????? 暫時禁用SELinux

開機后執行vim /etc/selinux/config????? SELINUX=disabled????? 永久禁用SELinux

 

3、用交互式grub命令來修復grub1階段446個字節

grub

grub >root? (hd0,0)????? 指定boot分區在hd(0,0)即在第一個硬盤的第一個分區

grub >setup? ( hd0 )???? 指定安裝地點(hd0),因為MBR不屬于任何的分區,所以安裝在第一個硬盤上,即(hd0)。

(此命令進行修復時依賴于/boot/grub/目錄下的文件***-stage1-5)

 

注grub ?install? /dev/sda命令用來修復比grub命令更加方便,因為grub ?install? /dev/sda命令不需要依靠/boot/grub/目錄下的文件。

 

二、grub ?stage1.5?????? 27個扇區

grub1.5階段存儲在MBR后的27個扇區中共有27*512=13824個字節。

 

dd??? if=/dev/zero??? of=/dev/sda??? bs=1???????? count=13824? skip=512 seek=512 ???跳過MBR的512個字節破壞grub1.5階段的13824個字節

(破壞之后重啟不會像破壞1階段一樣進入光盤,說明破壞1.5階段之后系統認為是有啟動硬盤能力的。)

 

重啟機器選擇救援模式(語言選擇English、鍵盤選擇US、不進行網絡配置并選擇打開shell模式。)

用交互式grub命令來修復grub1.5階段

grub

grub >root? (hd0,0)????? 指定boot分區在hd(0,0)即在第一個硬盤的第一個分區

grub >setup? ( hd0 )???? 指定安裝地點(hd0),因為MBR不屬于任何的分區,所以安裝在第一個硬盤上,即(hd0)。 一定要確定/boot/分區在第一個硬盤上,否則就不是hd(0)了。

 

將/boot/grub/目錄下的文件除了grub.conf和splash.xpm.gz都刪除,然后重啟機器,會發現系統無法啟動。也就是說一旦使用過grub修復過之后就不再是僅需要grub.conf和splash.xpm.gz文件了,還需要/boot/grub/目錄下的其他文件。

 

 

 

三、grub stage2??????? /boot/grub/下的文件

 

rm? -f? /boot/grub/*?????????? 刪除/boot/grub/下的所有文件

 

補上所缺失的grub2階段的配置文件

grub> kernel /VMlinux-2.6.32-696.e16.x86_64(可以使用Tab鍵補全)? root=/dev/sda2

grub>initrd /initramfs-2.6.32-696.e16.x86_64.img(可以使用Tab鍵補全)

grub>boot

 

啟動后將所刪除的文件補回來就可以了。

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/98361

(5)
西行西行
上一篇 2018-05-13 13:22
下一篇 2018-05-13 13:47

相關推薦

  • sell 進階

    刪除shell函數:命令格式:unsrt function_name 創建函數:例 function func2 { echo fun2;}   fork ?炸彈;:(){ :|&};: 腳本: cat ?Bomb.sh #!/bin/bash ./$0./$0& 信號捕捉 trap ‘ehcho trap 15&#82…

    2018-05-10
  • Linux運維命令以及概念整理總結(2)

    1、tr 命令
    2、單行重定向,多行重定向
    3、管道 | 、 |tee
    4、新增用戶、用戶組管理,以及用戶權限管理

    2018-04-14
  • 神奇的awk

    有了這個awk,忘了那個他

    2018-05-17
  • 馬哥教育第二周 4.8

    > 覆蓋內容 ? 只對文件有用 2> 錯誤覆蓋內容 >> 追加覆蓋內容 ?可以創建空文件 >文件 2>&1 錯誤正確放到一個文件、 (x;x)> 文件 可以把多個放到一個文件 cd ?/misc/cd/ 掛載光盤 斷網情況下 把服務重啟 systemctl restart network ~ – …

    Linux筆記 2018-04-08
  • ansible進階小技巧

    用ansible寫playbook的朋友可能會發現,當配置工作很多時,如果在中間過程出錯了,修改后想重新執行,前面的一大堆步驟讓人感覺很煩躁。雖然提供了“retry”文件,但是卻只是根據host來判斷重新執行,仍然不夠方便;又或者,中間的某些步驟特別耗時,比如下載一個很大的數據包,每次執行特別浪費時間,想要特別的跳過。怎么辦?我猜你就是把不需要的部分給注釋掉…

    Linux筆記 2018-06-03
欧美性久久久久