grub stage1、grub stage1.5、grub stage2的破坏与修复实验

grub stage1grub stage1.5grub 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.178linux.com/98361

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

相关推荐

  • Linux文本处理三剑客之awk

    本文主要介绍:awk的基本用法、变量、格式化输出、操作符、条件判断、循环、数组、函数、调用系统命令及awk脚本

    2018-05-28
  • 第七周 Linux系统启动流程,kickstart光盘镜像制作

    一、Linux系统启动流程 Linux启动流程可以分为五个阶段: 1、BIOS加电自检 机器启动后,首先会进行固件(BIOS)的自检,然后把保存在MBR(主引导记录)中的主引导加载程序放到内存中; 2、加载主引导加载程序(MBR) 主引导加载程序通过分区表查找活动分区,然后将活动分区的次引导加载程序从设备读入内存中运行; 3、加载次引导加载程序(GRUB) …

    2018-07-27
  • linux 7

    centos启动流程: POST–>BootSquence(BIOS)–>Bootloader(MBR)–>kernel(ramdisk)–>rootfs(switch_root)–>/sbin/init(/etc/inittab,/etc/init/*.conf,/u…

    Linux笔记 2018-08-05
  • grep运用及深化

    grep运用及深化
    知识点:1.https://blog.csdn.net/weixin_36689020/article/details/53230529
    2.https://www.cnblogs.com/tsw1107/p/2264a01aeec481d2044dfeda01417c64.html

    Linux笔记 2018-06-03
  • 脚本练习题

    1.使用脚本打印出如下图形 ************答案一:#!/bin/bash#1.接受一个参数为星星的个数。num=$1 #2.求出总共要打印的行数let lines=num*2 #3.for 循环处理每一行的数据for i in `seq $lines`;do#4.前半个星星处理逻辑if [ $i -le $num ];thenfor j in `s…

    Linux笔记 2018-03-26
  • 源码编译安装 MariaDB

    基础软件 yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel lib…

    Linux笔记 2018-06-24