CentOS6.5下排除启动类故障

概述引导过程

开机自检→MBR引导→GRUB菜单→加载内核(kernel)→init进程初始化

1、开机,BIOS自检,检测基本的硬件,检测出第一个能够开机引导的硬盘或设备,比如光驱、硬盘、U盘。

2、检测出能够引导的设备之后,查找设备中的引导程序,放置在硬盘第一个扇区,也就是MBR,MBR中有GRUB引导程序、以及分区表。

3、BIOS会把放在MBR这个扇区中的启动引导程序运行起来,运行起来之后读取/boot/grub/grub.conf,,告知GRUB,内核位于哪里,GRUB可以去自行加载,除了内核,还有一个镜像文件系统initrd,此时内核和镜像文件都加载到内存中,是由GRUB完成。

4、加载到内存之中,又会进行依次硬件自检(全面的硬件检查),底层文件加载完毕,内核将完全掌控整个linux操作系统的运行过程

5、内核把init进程运行起来,此进程负责整个环境的初始化。


实验目标

通过模拟MBR扇区故障排查,更深层的了解Linux的启动流程,使之更加注意日常做好相关文件备份工作。


实验步骤

第一种故障原因

病毒等造成的破坏

不正确的操作、磁盘读写误操作

故障现象

找不到引导程序,启动中断

无法加载操作系统,开机后黑屏

解决思路

应提前做好备份文件

以安装光盘引导进入急救模式

从备份文件中恢复


⑴备份MBR扇区数据

[root@redhat1 ~]# mkdir /backup
[root@redhat1 ~]# mount /dev/sdb1 /backup/ #添加一块硬盘,写入系统文件,挂载
[root@redhat1 ~]# dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1 #备份扇区,一定要备份到另外一个盘中


⑵模拟MBR扇区故障

[root@redhat1 ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1 #模拟扇故障
[root@redhat1 ~]# reboot#此时重启服务

1.png


⑶光盘引导,进入紧急模式,按提示操作

2.png

3.png

4.png

5.png

6.png

7.png

8.png

9.png

10.png


⑷从备份文件中恢复MBR扇区

11.png

12.png

13.png


第二种故障原因

MBR中的GRUB引导程序遭到破坏

grub.conf文件丢失、引导配置有误

故障现象

系统引导停滞,显示“grub>”提示符

解决思路

方法1:尝试手动输入引导命令

方法2:进入紧急急救模式,重建grub程序


方法1:

若在"grub>"提示符后可以进行编辑,则通过输入对应的引导命令(可参考其他相同版本系统中/boot/grub/grub.conf文件的引导语句),然后再执行"boot"命令即可正常引导Linux系统 

登录进入系统以后,需要找到配置文件/boot/grub/grub.conf,并修复其中的错误,或者直接重建该文件

 

⑴查看grub配置文件的uuid以及对应设备的设备文件名作为备份使用

[root@redhat1 ~]# ls -l /dev/disk/by-uuid/

1.png

[root@redhat1 ~]# grep -v "^#" /boot/grub/grub.conf

2.png


⑵重命名grub配置文件,模拟故障

[root@redhat1 ~]# cd /boot/grub/
[root@redhat1 grub]# mv grub.conf grub.conf.bak#重名grub配置文件,模拟故障
[root@redhat1 grub]# reboot #重启


⑶进入"grub>"提示符后可以进行编辑

3.png

解析添加的四行:

①root(hd0,0)

#告知系统寻找的内核是在第一块硬盘第一个分区(第一个0代表的是第一块硬盘,第二个0代表是第一个分区),在grub中硬盘只识别为hd

②kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=8a3cb8f8-a169-4eba-b1e1-47c88aa84169

#告知系统内核的名称以及版本号;

也可以写成将kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda5

"/"代表该分区的最顶层目录;

ro代表只读;

root=UUID,root代表是根目录,一般是通过uuid或设备的绝对路径表示

③initrd /initramfs-2.6.32-431.el6.x86_64.img

#加载镜像文件系统,镜像文件系统相当于存放一些驱动,在引导的时候,可能需要一些设备的驱动把它引导起来

④boot

#开始引导不管kernel、initrd都会加载到内存里面


⑷重启测试

4.png


方法2:

使用安装光盘引导进入急救模式,若分区表未被破坏,则急救模式将会找到硬盘中的Linux根分区,并将其挂载到光盘目录结构中的/mnt/sysimage/文件夹中

进入"bash-4.1#"Shell环境以后,执行"chroot /mnt/sysimage" 命令可以将目录结构切换到待修复的Linux系统中,然后重写(或通过之前备份的文件恢复)grub.conf配置文件即可


⑴备份MBR扇区数据

[root@redhat1 ~]# dd if=/dev/sda of=/root/grub.bak bs=446 count=1#前446字节是主引导记录,从第447字节开始后的64字节,每16字节为一组,是硬盘分区表,分区表没有坏,不需要备份到其他的硬盘
[root@redhat1 ~]# mount /dev/sdb1 /backup/ #挂载第二块硬盘第一个分区
[root@redhat1 ~]# cp /root/grub.bak /backup/ #根据模拟实验,虽然分区表理论上不会被破坏,为了保险起见,还是将其放入第二块盘中


⑵模拟MBR扇区故障

[root@redhat1 ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1 #模拟破坏引导程序,未破坏分区表
[root@redhat1 ~]# shutdown -r now

5.png

6.png

7.png

8.png

9.png

10.png

11.png

12.png

13.png14.png


猜你喜欢

转载自blog.51cto.com/11905606/2134354