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                                       #重启系统

图片

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