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