实验环境:
CentOS-6.5-i386 http://mirror.bit.edu.cn/web/
VMware-9.6.1
CentOS-6.5-i386-LiveDVD http://mirror.bit.edu.cn/web/
开机过程:
开机自检,基于BIOS中的设置找到 MBR主引导记录(优盘光盘除外,硬盘一定会找到MBR)。在主引导记录中找到主引导程序,通过主引导程序找到grub菜单,通过grub的选择或者默认选择来加载内核,加载内核之后运行第一个进程即init进程,init进程读取/etc/inittab配置文件。通过inittab配置表格来确定进入哪一种运行级别,但是不管进入哪一种运行级别,都会执行/etc/rc/d/rc.sysinit脚本,进行初始化。inittab配置文件同时会执行/etc/rc.d/rcn(n:0~6).d脚本,运行相应的级别,并将脚本中带s的程序启动,带k的程序关闭。最后执行开机脚本。启动mingetty进程,提供登录界面。
grub菜单中包含三个阶段,每一个阶段失效都会造成系统不能启动,下面我们就来模拟一下各个阶段失效时会出现的情况以及解决方案。
一、 改变bootlodaer的引导数据。
进入/boot/grub目录下,执行指令:
dd if=/dev/zero of=/dev/sda bs=446 count=1
回车之后,重启系统,出现故障,不能进入系统。但由于我们的光盘是一个系统盘,因此会提供一个引导界面,这是需要选择第三项来拯救=系统。
重启后,系统ok。
二、 第一阶段失效后进入救援模式,可以拯救系统,那么第二阶段呢?下面我们就来模拟第二阶段故障以及故障解决方案。进入/boot/grub目录下,我们来点狠的,把stage2文件彻底删除,然后再重启,看看会出现什么结果。
直接error 掉了,情况貌似有点小严重。该怎么解决呢?在windows操作系统下,我们用winPE来重新安装系统,在这里呢,也有一种winPE的概念,我们可以用liveDVD来启动光盘。把镜像换成这个,再次重启系统。重启后进入BIOS界面,更改启动项,将第一启动项改成光盘启动。这时由于我们的光盘是LiveDVD,类似于WinPE一样的一个小的操作系统,所以可以进入系统,看到之前硬盘上数据。进入之后,通过LiveDVD来拯救系统。
启动后执行命令:
mount dev/sda1 /boot 将分区挂载到/boot
grub-install --root-directory=/ /dev/sda 将grub文件安装到/boot/grub目录下。
进入/boot/grub目录下查看是否存在stage2 文件,可以看到确确实实存在。
既然存在,那么我们的系统是不是成功救过来了呢?重启测试一下,成功了。
三、 我们再来删除/boot/grub目录下的grub.conf文件,再次重启,看看系统能否重启成功。由于删除了grub文件,系统是肯定不能成功启动的啦。
在命令行中输入:
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.i686 ro root=/dev/sda2 rhgb quiet
initrd /initramfs-2.6.32-431.el6.i686.img
boot
重启后进入系统,再来重建grub.conf文件,让系统再次启动的时候能够正确引导。进入/boot/grub目录下,执行命令:vim grub.conf 编辑内容如下:
编辑完成后,保存,再次重启系统测试,看看这次系统能不能拯救过来。
四、找不到grub目录。这个目录丢失,相当于我们的引导程序没有了,情况是相当严重的。那该怎么办呢?此时的你,不要惊慌不要失措,小编跟你一起来解救我们的系统与水深火热之中。
重启之后又停留在了这个界面,跟删除grub.conf文件的结果一样。可能有的朋友删除grub目录重启后出现的是error界面,不过没关系,error界面的时候我们可以通过LiveDVD来启动系统,重启后不用执行下面的命令了,直接这一步后面的命令就行了。但是呢,我这里出现的是grub界面,我们就只好再次执行下面的命令吧:
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.i686 ro root=/dev/sda2 rhgb quiet
initrd /initramfs-2.6.32-431.el6.i686.img
boot
系统重启后,执行命令:
mount /dev/sda1 /boot 将引导分区挂载到/boot
grub-insatll --root-directory=//dev/sda 将grub的一些程序文件安装到/boot/grub
查看结果。你会发现grub目录神奇的出现了,但是进入目录,发现却又少grub.conf文件,这个文件可是不会自动建立的,需要我们手动编写,我们只好再来编写一次喽。编写完成后再次重启,系统又死而复生了!很有趣吧!
五、第五类故障就是我们的管理员口令丢失了,大家想知道怎么破解管理员口令的话就看我的另一篇博客吧,那里面会有详尽的破解过程。
链接在这里:http://inferr.blog.51cto.com/blog/7574698/1344550