最新消息:七维网络改版啦,域名www.7dwww.com

Linux如何分析和排查系统故障——排除系统启动类故障

网络技术 admin 1874浏览 0评论

Linux如何分析和排查系统故障——排除系统启动类故障

前言:在Linux系统的启动过程中,涉及MBR主引导记录、GRUB启动菜单、系统初始化配置文件等各方面,其中任何一个环节出现故障都可能会导致系统启动的失常,因此一定要注意做好相关文件的备份工作。本节主要介绍一些系统启动类故障修复的示例。

一、MBR扇区故障

MBR引导记录位于物理硬盘的第一个扇区(512B),该扇区又称为主引导扇区(MBR扇区),除了包含系统引导的部分数据意外,还包含了整个硬盘的分区表记录。当主引导扇区发生故障时,可能无法进入引导菜单,或者因无法找到正确的分区位置而无法加载系统,通过该硬盘引导主机是很可能进入黑屏状态。

接下来通过示例了解一下:

  • 故障原因

病毒、木马等造成的破坏

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

  • 故障现象

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

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

  • 解决思路

应提前做好备份文件

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

从备份文件中恢复

以下示例都是以CentOS6(或RHEL6)为例:

应用示例1:

1.备份 MBR 扇区数据

由于MBR扇区中包含了整个硬盘的分区表记录,因此该扇区的备份文件必须存放(备份)到其他的存储设备中。

图示:先创建一个backup目录,然后在将第二块硬盘sdb1挂载到backup目录下,之后将第一块硬盘(sda)的MBR扇区备份到/backup目录下。

Linux如何分析和排查系统故障——排除系统启动类故障

2.模拟 MBR 扇区故障

这里仍然使用dd命令,认为地将MBR扇区的记录覆盖,以便模拟出MBR扇区被破坏的故障情况(切记要先备份,而且将备份文件存放到其他硬盘)。

图示:从设备文件zero中读取512字节的数据,将其覆盖到第一块硬盘(sda),从而破坏MBR扇区中的数据。

Linux如何分析和排查系统故障——排除系统启动类故障

完成上述操作后重启系统,将会出现”Operating system not found”的提示信息,表示无法找到可用的操作系统,因此无法启动主机。

3.光盘引导,进入急救模式,按提示操作

由于MBR扇区破坏以后,已经无法再从该硬盘启动系统,所以需要使用其他硬盘中的操作系统进行引导,或者直接使用系统的安装光盘进行引导。不管哪种方式,其目的都是相同的——获得一个可以执行命令的shell环境,以便从备份文件中恢复MBR扇区中的数据。

图示1:以使用安装光盘引导为例,开机当出现安装向导界面时,选择”Rescue install system”,将以急救模式引导光盘中的Linux系统。

Linux如何分析和排查系统故障——排除系统启动类故障

图示2:之后依次按Enter键接受默认的语言、键盘格式,提示是否配置网卡时一般选择”NO”,然后系统会自动查找硬盘中的Linux分区并尝试将其挂载到/mnt/sysimage目录,选择”Continue”确认并继续,接下来就会出现rescue窗口,单击OK按钮,最后,单击OK按钮确认后将进入到带”bash-4.1#”提示符的Bash Shell环境(shell环境在屏幕的最下方)

Linux如何分析和排查系统故障——排除系统启动类故障
Linux如何分析和排查系统故障——排除系统启动类故障
Linux如何分析和排查系统故障——排除系统启动类故障
Linux如何分析和排查系统故障——排除系统启动类故障
Linux如何分析和排查系统故障——排除系统启动类故障
Linux如何分析和排查系统故障——排除系统启动类故障
Linux如何分析和排查系统故障——排除系统启动类故障

4.从备份文件中恢复 MBR 扇区

进入带”bash-4.1#”提示符的Bash Shell环境后,只要执行相应的命令挂载保存有备份文件的硬盘分区(sdb1),并将数据恢复到硬盘”/dev/sda”中,然后重启即可恢复正常。需要注意的是,当前使用的系统环境中的Linux目录结构。

图示:

Linux如何分析和排查系统故障——排除系统启动类故障

二、GRUB引导故障

GURB是大多数Linux系统默认使用的引导程序,可以通过启动菜单的方式选择进入不同的操作系统(如果有的话)。当配置文件/boot/grub/grub.conf丢失,或者关键配置出现错误,或者MBR记录中的引导程序遭到破坏时,Linux主机启动可能出现”grub>”的提示符,无法完成进一步的系统启动过程。

接下来通过示例了解一下:(模拟故障:执行”dd if=/dev/zero of=/dev/sda bs=446 count=1″命令可以模拟出对MBR扇区中GRUB引导程序的破坏(注意先做好备份),但并不会破坏分区表(实际上分区表保存在MBR扇区中的第447-510字节中,MBR总共512字节,前446字节是主引导记录,从第447字节开始后的64字节,每16字节为一组,是硬盘的分区表))

  • 故障原因

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

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

  • 故障现象

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

  • 解决思路

尝试手动输入引导命令

进入急救模式,重写或者从备份中恢复 grub.conf

向 MBR 扇区中重建 grub 程序

应用示例2:

在”grub>” 提示符后,手动输入引导命令

Linux如何分析和排查系统故障——排除系统启动类故障
Linux如何分析和排查系统故障——排除系统启动类故障

之后的启动过程与正常启动系统的过程是一样的。登录进入系统以后,需要找到配置文件/boot/grub/grub.conf,并修复其中的错误;或者从备份文件中恢复(以上选择从备份文件中恢复);或者重建该文件,具体内容可以参考其他正常主机中的同名文件。以下操作查看GRUB配置文件grub.conf的默认内容。

Linux如何分析和排查系统故障——排除系统启动类故障

如上图所示,各主要配置项的含义为:

  • title:指定在启动菜单中显示的操作系统名称
  • root:指定包含内核等引导文件的/boot分区所在的位置
  • kernel:指定内核文件所在的位置,内核加载时权限为只读”ro”,并通过”root=”指定根分区的设备文件位置
  • initrd:指定启动内核所使用的临时系统镜像文件所在的位置

由于在”grub>”环境中使用命令较为复杂,而且一般也难以记住相关的命令选项、内核加载参数等,因此用户可以采用另一种修复办法。接下来我们通过应用示例3了解一下另一种修复方法。

应用示例3:

同样适用安装光盘引导进入急救模式(参考应用示例1),若分区表并未被破坏,则急救模式将会找到硬盘中的Linux根分区,并将其挂载到光盘目录结构中的/mnt/sysimage/文件夹中。

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

图示:

Linux如何分析和排查系统故障——排除系统启动类故障

如果是MBR扇区中的引导程序出现损坏,可能在重建grub.conf配置文件后任然无法成功启动系统,这是可以通过救援模式的shell环境重新安装grub引导程序。切换到待修复的Linux系统跟环境,执行”grub-install /dev/sda”命令可以重新将grub引导程序安装到第1块硬盘(sda)的MBR扇区。

Linux如何分析和排查系统故障——排除系统启动类故障

上述方法同样适用于在Linux主机中重装Windows系统(不覆盖Linux系统)后导致Linux系统无法启动的情况。因为对于使用双操作系统的主机,后安装的windows系统将使用自己的引导数据覆盖MBR分区中的记录,导致开机后不再出现GURB菜单从而无法进入Linux系统。如果后安装Linux系统,GRUB程序将会自动识别硬盘中的windows系统并加载到GRUB菜单配置中。

转载请注明:七维网络 » Linux如何分析和排查系统故障——排除系统启动类故障

头像
发表我的评论
取消评论

Captcha Code

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址