实验1:
删除/boot/grub/中除grub.conf以外的所有文件
启动不受影响,原因在于删除的这些文件都是安装生成的备份,重要的stage1阶段磁盘的前446字节(即grub1仍存在),而grubstage1_5阶段也在磁盘的bootloader也即grubstage1后续的分区里。grubstage2阶段grub.conf又没有删除,故而系统可以起来
实验2:centos6
grub stage1阶段破坏
破坏硬盘的前446字节,即破坏grub的stage1阶段,将不可启动。
dd if=/dev/zero of=/dev/sda bs=1 count=446
把光盘镜像挂载上去,直接重启,由于主引导bootloader被破坏,直接进入图1,图2后,等待操作
修复过程:
1.进入rescue
2.chroot /mnt/sysimage
3.grub-install /dev/sda
4.sync 以防万一,同步一下数据到磁盘
5.exit 退出硬盘根系统
6.exit 退出光盘根系统
4.reboot 选择字符界面的reboot选项,点击ok重启
建议关闭selinux
方法有3:
a.vim /etc/selinux/config
SELINUX=disabled
b.vim /boot/grub/grub.conf 在内核参数后写selinux=0
c.启动时,修改单次的Grub内核参数后写selinux=0
实验3:centos6
破坏stage1.5
dd if=/dev/zero of=/dev/sda bs=1 count=10240 seek=512
重启进入图1,图3表示硬盘有启动能力的,只不过进不去/boot,/boot的文件系统驱动被删除。也即1.5阶段被删除
恢复
1.进入rescue
2.grub
root (hd0,0) root此时表示/boot
setup (hd0) 需要使用/boot/grub/stage1,stage1_5,stage2下的数据恢复磁盘上的grubstage1_5。若这些文件都在,同实验2一样,同样可以修复grubstage1阶段磁盘bootloader上446字节被损坏的数据
3.恢复后,如果留下/boot/grub.conf即实验1。再重启,系统会报错。如图4。进入resuce,使用实验2的步骤即可恢复
实验4:centos6
破坏grubstage2阶段启动菜单
删除/boot/grub/grub.conf并恢复
[root@centos6 grub ]#ls
device.map ffs_stage1_5 jfs_stage1_5 reiserfs_stage1_5 stage2 xfs_stage1_5
e2fs_stage1_5 grub.conf menu.lst splash.xpm.gz ufs2_stage1_5
fat_stage1_5 iso9660_stage1_5 minix_stage1_5 stage1 vstafs_stage1_5
如下
[root@centos6 grub ]#cat grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-696.el6.x86_64)
root (hd0,0) #root表示/boot的根,(hd0,0)就是/boot
kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=8ce26687-4441-42c9-bb9d-014bbff1ccb2 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-696.el6.x86_64.img
title CentoS 66(yingbaobao)
kernel (hd0,0)/vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=8ce26687-4441-42c9-bb9d-014bbff1ccb2 rd rhgb quiet selinux=0
initrd (hd0,0)/initramfs-2.6.32-696.el6.x86_64.img
[root@centos6 grub ]#
删除/boot/grub/grub.conf并恢复 即进入救援模式,把grub.conf手动创建并填写启动必须内容,具体见实验5编辑grub.conf。上述还手动创建了一个启动菜单,启动界面如图5
实验5:删除整个/boot/*
开机删除 rm -rf /boot/* 关机 故障如图6
1.进入rescue
2.chroot /mnt/sysimage
3.grub-install /dev/sda 创建grub1,1.5等其它文件(不包含grub2)
4.mount /dev/cdrom /media
5.cp /media/isolinux/vmlinuz /boot/
也可以cp /media/Packages/kernel-2.6.32-696.el6.x86_64.rpm /app/
rpm2cpio kernel-2.6.32-696.el6.x86_64.rpm |cpio -id 解压到/app/boot
cp boot/vmlinuz-2.6.32-696.el6.x86_64 /boot/
也可以rpm -ivh /mnt/sysimage/media/Packages/kernel-2.6.32-696.el6.x86.64.rpm --root=/mnt/sysimage/ --force 光盘所在根运行此命令
或者chroot /mnt/sysimage下运行
rpm -ivh /media/Pacekages/kernel-2.6.32-696.el6.x86.64.rpm --root=/ --force #即可,生成initramfs和vmlinuz,之后grub-install,编辑grub.conf
6.mkinitrd /boot/initramfs-2.6.32-696.el6.x86_64.img $(uname -r) 第5步若用rpm,会生成initramfs
或者mkinitrd /boot/initramfs-`uname -r`.img `uname -r`
7.vim /boot/grub/grub.conf
default=0
timeout=5
title redhat
root (hd0,0) r!ls /boot/vmlinuz tab键补齐
kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=bfd90cd4-8516-4a60-8f1a-f7c3511a6b3f rhgb quiet
initrd /initramfs-2.6.32-696.el6.x86_64.img
8.exit;reboot
实验6:删除/etc/fstab,删除/etc/init/rcS.conf,删除/etc/rc.d/rc.sysinit,删除/boot/*下的所有文件
如图7此时chroot /mnt/sysimage会报错,分区已经被破坏,chroot无法识别根
救援环境没有lsblk命令
fdisk -l
mkdir /mnt/rootfs
mount /dev/sda1-* /mnt/rootfs 一个一个挂载后,ls /mnt/rootfs命令,看是否有/boot等目录,有即是根分区 blkid查看文件系统类型,vi /mnt/rootfs/etc/fstab 扩展模式:r!blkid
1.进入rescue
2.编写/etc/fstab
UUID=b6d6d6ca-8f04-43a3-84a4-d34d2b2f50d1 /boot ext4 defaults 0 2
UUID=bfd90cd4-8516-4a60-8f1a-f7c3511a6b3f / ext4 defaults 0 1
UUID=50950a59-83cb-4688-80ec-d9883019fcce /app ext4 defaults 0 0
UUID=5a1ff0b5-5c19-42e3-8b6a-65e7d332ee0c swap swap defaults 0 0
3.重新进入Rescue
4.chroot /mnt/sysimage
5.grub-install /dev/sda
6.恢复内核文件及ramdisk。
方法1:从其他机器拷配置网络,命令scp ip:/boot/ramdisk .
方法2:从光盘中恢复,步骤见上
7.vim /boot/grub/grub.conf
default=0
timeout=5
title redhat
root (hd0,0)
kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=bfd90cd4-8516-4a60-8f1a-f7c3511a6b3f rhgb quiet
initrd /initramfs-2.6.32-696.el6.x86_64.img
8.rpm -qf /etc/init/rcS.conf rpm -qf /etc/rc.d/rc.sysinit
9.mount /dev/cdrom /media
cp /media/Packages/initscripts-9.03.58-1.el6.centos.x86_64.rpm /app
rpm2cpio initscripts-9.03.58-1.el6.centos.x86_64.rpm |cpio -id
cp etc/init/rcS.conf /etc/init
cp etc/rc.d/rc.sysinit /etc/rc.d
10.reboot
实验7:
基于根所在的文件系统在LVM上的恢复
将/etc/fstab及/boot下的所有文件删除
1.进入rescue
2.lvscan;vgchange -ay
3.同上
实验8:===centos6启动图片更换
[root@centos6 grub ]#pwd
/boot/grub
[root@centos6 grub ]#ls
device.map ffs_stage1_5 jfs_stage1_5 reiserfs_stage1_5 stage2 xfs_stage1_5
e2fs_stage1_5 grub.conf menu.lst splash.xpm.gz ufs2_stage1_5
fat_stage1_5 iso9660_stage1_5 minix_stage1_5 stage1 vstafs_stage1_5
[root@centos6 app ]#mv /boot/grub/splash.xpm.gz .
[root@centos6 app ]#gunzip splash.xpm.gz ;ls
splash.xpm
[root@centos6 app ]#
图片格式为png,需要用linux工具图片处理工具转换格式
[root@centos6 yum.repos.d ]#yum install ImageMagick
[root@centos6 yum.repos.d ]#rpm -ql ImageMagick 查询操作命令
/usr/bin/convert
*****省略****
[root@centos6 app ]#ls
splash.xpm untitled.png yingbaobao.xpm
[root@centos6 app ]#head yingbaobao.xpm
/* XPM */
static char *yingbaobao[] = {
/* columns rows colors chars-per-pixel */
"640 480 14 1 ",
" c #251B17",
". c #502C26",
"X c #5E463A",
"o c #463E40",
"O c #6C5950",
"+ c #AE1E26",
[root@centos6 app ]#gzip yingbaobao.xpm
[root@centos6 app ]#ls
splash.xpm untitled.png yingbaobao.xpm.gz
[root@centos6 app ]#mv yingbaobao.xpm.gz /boot/grub/
修改/boot/grub/grub.conf如下
splashimage=(hd0,0)/grub/yingbaobao.xpm.gz
开机更换图片实验
=========================================
图片
图1
图2
图3
图4
图5
图6
图7