RHEL6 系统启动故障排错

来源:互联网 发布:日本留学一年费用知乎 编辑:程序博客网 时间:2024/04/30 22:37
RHEL6 系统排错


系统故障了,机器无法正常工作,更别提正常提供服务,这个时候如果我们掌握了系统排错,那就大有用武之地了。我们在学习和实验阶段,可以通过系统排错帮助大家更深入了解系统启动过程。

对系统进行如下破坏:

1.破坏grub引导
dd if=/dev/zero of=/dev/sda bs=1 count=446
2.破坏/boot启动目录

rm -rf /boot/*
3.破坏/etc/fstab文件

rm -rf /etc/fstab
4.破坏/etc/inittab、/etc/rc.d/rc.sysinit、/bin/mount文件(任何文件丢失,及文件版本或内容不匹配,均属此列)

rm -rf /etc/inittab /etc/rc.d/rc.sysinit

cp /bin/ping /bin/mount

排错修复:

用光盘或者网络引导进入rescue模式,过程中因为fstab表被删除,会提示找不到linux分区,无法自动识别linux分区,确定后进shell

 

使用fdisk -l查看分区,应该可以识别出boot分区和交换分区,也可以看到是否使用到逻辑卷。

如果没有使用逻辑卷,则原根分区是分区形式,使用blkid或e2label查看标签来推断根分区,如果没有标签或无法从标签判断,则需要将分区逐一挂载(挂载点自建),查看分区内容可判断到根分区。

如果有使用逻辑卷,对分区使用上述方法查看仍没找着根分区,则估计是使用逻辑卷作为根分区,此时,需要激活逻辑卷卷组(lvm vgchange -ay),再将逻辑卷逐一挂载,查看其内容,可判断到根分区。

 

找到根分区后,需要处理/etc/fstab,自行编写fstab,注意写正确里面的条目,fstab表里的分区不是采用分区名挂载了,改成使用uuid。

编辑完成fstab之后,敲入exit,选择reboot重启机器。

 

伪根时候的shell提示符为bash-4.1#,真根时候的shell提示符为sh-4.1#

 

再次进入rescue模式,这时候已经可以正确找到linux分区,并自动将根分区挂载在伪根的/mnt/sysimage,使用chroot /mnt/sysimage切换到真根,如果不知道系统丢失哪些文件,可以使用rpm -Va检查,对显示出的结果需要判断哪些是跟启动相关的。

 

安装丢失文件对应的包之前,需先挂载光驱,/dev/sr0

rpm -qf /etc/rc.d  可查询到包名

从光盘上安装缺失或损坏的文件对应的包

rpm -ivh /mnt/Packages/initscripts-9.03.17-1.el6.x86_64.rpm --force

 

boot文件夹中的内容来自于内核包

rpm -V kernel和rpm -V grub

 

grub-install  安装grub引导

 

编写/boot/grub/grub.conf

 

exit两次reboot