码迷,mamicode.com
首页 > 系统相关 > 详细

Linux故障处理(一)系统启动类故障

时间:2017-12-13 23:22:43      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:侯良金   启动故障   mbr修复   grub修复   

Linux故障处理(一)系统启动类故障

Linux系统的启动过程中,涉及MBR主引导记录、GRUB启动菜单、系统初始化配置文件等各方面,其中任何一个环节出现故障都可能会导致系统启动的失常,因此一定要注意做好相关文件的备份工作。(本实验环境为RHEL6

一、MBR扇区故障

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

1、备份MBR扇区数据

    由于MBR扇区中包含了整个硬盘的分区表记录,因此该扇区的备份文件必须存放到其他的存储设备中,否则在恢复时将无法读取到备份文件。下面将添加一块/sdb硬盘,将MBR扇区备份到/sdb1分区中(挂载到/hlj目录下)

[root@localhost ~]# mkdir  /hlj
[root@localhost ~]# mount  /dev/sdb1  /hlj
[root@localhost ~]# dd if=/dev/sda of=/hlj/sda.mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000180294 秒,2.8 MB/秒


2、模拟MBR扇区故障

这里使用dd命令,人为地将MBR扇区的记录覆盖,以便模拟MBR扇区被破坏的故障情况(切记要做好备份,而且将备份文件存放到其他硬盘)。例如,执行以下操作可以从设备文件zero中读取512字节的数据,将其覆盖到第1块硬盘(sda),从而破坏MBR扇区中的数据。

[root@localhost ~]# dd  if=/dev/zero  of=/dev/sda  bs=512  count=1


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

技术分享图片


3、从备份文件中恢复MBR扇区数据

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

接下来以RHEL6安装光盘引导为例,当出现安装向导界面,选择“Rescue installed system,将以“急救模式”引导光盘中的Linux系统。

技术分享图片

      之后依次按Enter键接受默认的语言、键盘格式,提示是否配置网卡时一般选择“NO”,然后系统会自动查找硬盘中的Linux分区并尝试将其挂载到“/mnt/sysimage”目录(选择“Continue”确认并继续)。接下来会出现rescue窗口,单击“ok”按钮。

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片


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

技术分享图片


因为MBR损坏,已经无法获得有效的分区列表,所以新建一个目录hou,将“sdb1”挂载到目录“/hou”下。

bash-4.1# mkdir   /hou
bash-4.1# mount /dev/sdb1  /hou


使用dd命令再把sdb1中的MBR备份文件写入到被破坏的sda中。

bash-4.1# dd if=/dev/hou/sda.mbr.bak of=/sda


    完成后,执行“reboot”重新启动系统。


二、GRUB引导故障

1.修复grub.conf文件丢失或损坏

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

这里需要把grub.conf文件提前备份好,如果没有备份则只能重写一份grub.conf文件

[root@localhost ~]#mkdir   /hlj

[root@localhost ~]#mount  /dev/sdb1  /hlj

[root@localhost ~]# cp  /boot/grub/grub.conf  /hlj/grub.conf

[root@localhost ~]# rm  -rf  /boot/grub/grub.conf

[root@localhost ~]# reboot


技术分享图片

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

grub>root (hd0,0)
grub>kernel /vmlinuz-2.6.32-71.el6.i686 ro root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root 
      rd_LVM_LV=VolGroup/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us crashke
     rnel=auto rhgb quiet
grub>initrd /initramfs-2.6.32-71.el6.i686.img
grub>boot


之后的启动过程与正常启动RHEL6系统的过程是一样的。登录进入系统以后,需要找到配置文件/boot/grub/grub.conf,并修复其中的错误,或者直接重建该文件。具体内容可以参考其他正常主机中的同名文件。

RHEL6中,执行以下命令可以查看GRUB配置文件的grub.conf的默认内容。

[root@localhost ~]# grep -v "^#" /boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux (2.6.32-71.el6.i686)
      root (hd0,0)
      kernel /vmlinuz-2.6.32-71.el6.i686 ro root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root rd_LVM_LV=VolGroup/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
      initrd /initramfs-2.6.32-71.el6.i686.img


其中,各主要配置项含义如下。

title:指定在启动菜单中显示的操作系统名称。

root 指定包含内核等引导文件的/boot分区所在的位置。

kernel:指定内核文件所在的位置,内核加载时权限只读“ro”,并通过“root=”指定根分区的设备文件位置。

initrd 指定启动内核所使用的临时系统镜像文件所在的位置。

由于在“grub>”环境中使用的命令较为复杂,而且一般也难以记住相关的命令选项、内核加载参数等,因此用户可以采用另一种修复办法,同样使用RHEL6的安装光盘引导进入急救模式(参考上面修复MBR),若分区表未被破坏,则急救模式将会找到硬盘中的Linux根分区,并将其挂载到光盘目录结构中的/mnt/sysimage/文件夹中。

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

技术分享图片

 

2.MBR中的grub引导程序损坏

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

技术分享图片


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

Linux故障处理(一)系统启动类故障

标签:侯良金   启动故障   mbr修复   grub修复   

原文地址:http://blog.51cto.com/houliangjin/2050401

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!