Centos6启动问题排查

如题所述

第1个回答  2022-06-21
要排查问题,首先要了解启动流程。我们先看一下centos6的开机流程:

硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,BIOS找到并读取MBR到内存中

MBR中存放的一段小程序统称为boot loader,他有很多种,用来引导centos6用的是grub,这里也只说这种(注意:/boot/grub/stage*只是GRUB几部分内容的复制,真正起作用的还是直接放在磁盘扇区中的内容)grub一般分为3阶段:

这里只从GRUB阶段开始,前面的阶段就不看了。

1阶段出问题症状:不会进入GRUB菜单,如果没有挂光盘,就直接黑屏,挂上光盘后,会直接进入安装菜单(因为GRUB主程序被破坏,检测以为系统没有安装)
我们可以用 dd if=/dev/zero of=/dev/sda bs=1 count=446 去破坏MBR中的GRUB,模拟出1阶段错误
恢复步骤:

1.5阶段出问题症状:有GRUB菜单,进来后卡黑屏
模拟环境:用 dd if=/dev/zero of=/dev/sda bs=1 count=3000 skip=512 seek=512 来将MBR之后的扇区内容删除一些
处理步骤:

2阶段有很多问题,我们先了解下boot目录下的必需文件作用,再去看问题。

文件丢失对应的错误:
这里的问题都要进入救援模式

2.输入 boot 启动,然后进入/boot/grub/grub.conf中写入配置就行

这个阶段有些服务可能会出问题,表现症状为卡在服务那里不动了或者报错failed,我们处理的思路为先进去,再去找这个服务的问题。
我们模拟下at服务的错误,在/etc/init.d/atd启动脚本中,前面加上一个 sleep 100000 ,让他睡很长时间

这样启动时,就卡在了这里,这时候怎么办呢?
解决步骤如下:

当/boot/目录和/etc/fstab文件都没了的时候,就比较麻烦了,因为救援模式是读取/etc/fstab文件中的内容去找根文件系统的,所以删掉/etc/fstab之后,进救援模式就会挂载不到根(之前是自动挂到/mnt/sysimage中的)
处理思路:先进入救援模式,然后blkid等命令查看分区,尝试挂载,找到根文件系统,在根文件系统中写一份/etc/fstab文件,然后再重启,之后的步骤就和之前说的恢复/boot目录一样了
步骤如下:
1.进入救援模式,不过会提示没有挂载根

2.blkid命令查看分区

3.然后创建一个目录,将每个分区都挂一下,看一下内容,找到根文件系统,然后创建/etc/fstab

内容如下:

4.重启之后,进入救援模式就看到根挂载上了
5.之后的过程和之前的恢复/boot就一样了

当系统是放在逻辑卷中时,删除/etc/fstab和/boot又不一样了,启动是直接进入了GRUB命令行界面了,但是什么东西都没有,补全不能用,所以还是得进救援模式:

同样提示找不到根文件系统:

用blkid看不到根文件系统,只能看到/boot:

用lvdispaly查看,找到了root了,但是是不能使用的:

将根分区挂载到/lv0,查看内容,确认是跟分区

然后之后的步骤和前面的又一样了,不过要注意配置文件中的root路径记得要写逻辑卷的。
相似回答
大家正在搜