常见系统启动类故障
在linux系统的启动过程中,涉及到MBR主引导记录、GRUB启动菜单、系统初始化配置文件inittab等各方面,其中任何一个环节出现故障都有可能会导致系统启动失败。因此一定要注意做好相关文件的备份工作。
1、MBR扇区故障
MBR引导记录位于物理磁盘的第1个扇区(512B),该扇区又称为主引导扇区(MBR扇区),除了包含系统引导程序的部分数据外,还包含了整个硬盘的分区表记录。在MBR扇区中1~446B是系统的引导程序(也称GRUB),447~510B是系统的分区表记录,剩下的2B“55 AA”是分区结束的标志。
当主引导扇区发生故障时,将可能无法进入系统,通过该硬盘引导主机时很有可能进入黑屏状态。
备份MBR扇区数据
由于MBR扇区中包含了整个硬盘的分区列表记录,因此该扇区的备份文件必须存放到其他的存储设备中,否则恢复时无法读取到备份的文件。
如下:使用“dd”命令可以备份sda硬盘上的MBR扇区数据到sdb硬盘上。
模拟MBR扇区损坏
这里仍然使用“dd”命令,人为的将MBR扇区的记录覆盖掉,以便模拟出MBR扇区被破坏的故障情景(注意:要先做好备份,而且将备份文件放到其他硬盘上)
如下:使用“dd”命令覆盖MBR扇区的数据。
从备份文件中恢复MBR扇区的数据
由于MBR扇区被破坏以后,已经无法再从该硬盘启动系统,所以需要使用其他硬盘的操作系统进行引导,或者直接使用系统安装光盘进行引导。不管使用哪种方式,目的都是相同的——获取一个可执行命令的shell环境,以便从备份文件中恢复扇区中的数据。
如下:使用系统安装光盘进行引导,先将光盘插入光驱,在BIOS中选择从光盘引导,当出现安装向导时在“boot:”后面输入“linux rescue”回车将以“急救模式”引导光盘中的linux系统。
在进入“急救模式”之前需要确认接收的语言以及键盘格式,默认即可。
然后系统会自动查找硬盘中的linux分区并尝试将其挂载到“/mnt/sysp_w_picpath”目录下,选择“Continue”确认继续。
接下来会出项是否初始化磁盘的警告提示,选择“NO”。避免对硬盘数据造成不必要的损坏。
最后选择“OK”确认后将进入带“sh-3.2#”提示符的Bash Shell环境。
在带“sh-3.2#”提示符的Bash Shell环境中执行“mount”命令将保存有备份文件的硬盘挂在到相应的目录下使用“dd”命令恢复即可。
恢复完成后使用“exit”命令退出Shell环境,系统将自动重新启动。
2、GRUB引导故障
GRUB是大多数linux系统默认使用的引导程序,可以通过启动菜单的方式选择进入不同的操作系统。
如下:查看GRUB的配置文件的详细信息。
其中,各主要配置项的含义说明如下。
title:指定在启动菜单中显示的操作系统名称。
root:指定包含内核等引导文件的/boot分区所在的位置。
kernel:指定内核文件所在的位置,内核加载时权限为只读“ro”,并通过“root=”指定跟分区的的设备文件。
initd:指定启动内核所使用的临时系统镜像文件所在的位置。
当配置文件“/boot/grub/grub.conf”文件丢失、或关键配置出错、或者MBR记录中的引导程序遭到破坏时,linux主机启动后只能出现“grub>”的提示符,无法完成进一步的系统启动过程。
如下:我们可以将GRUB的配置文件“/boot/grub/grub.conf”删除模拟GRUB损坏。
修复GRUB引导故障
方法一:在启动提示符后进行编辑,通过输入相应的引导命令(可以参考相同版本的linux的GRUB配置文件),然后执行“boot”命令即可正常启动系统了。不过在进入系统后需要修复“/boot/grub/grub.conf”配置文件,也可以新建。不然下次启动还是会出现这样的错误。
方法二:通过系统安装光盘进入到“急救模式”,在“急救模式”可以修复或新建“/boot/grub/grub.cong”配置文件。
如果是MBR扇区中的引导程序出现损坏,可能在重建grub.conf配置文件后仍然无法启动,这时需要进入到“急救模式”执行“、grub-install /dev/sda”命令重新安装grub引导程序。
上述方法同样适用于在linux系统中安装windows系统实现双系统,导致windows系统覆盖了MBR扇区中的引导程序,而只能启动windows系统,不能启动linux系统的问题。
3、init配置文件丢失
“/etc/inittab”文件是系统初始化进程init的配置文件,当该文件被误删除或者存在错误配置时,可能导致无法启动系统。丢失“/etc/inittab”文件后,启动时将会出现“INIT:NO inittab file found”的错误提示信息。如下:
这类故障同样可以使用系统安装光盘进入“急救模式”进行修复。如果是文件配置错误,则进行纠正或则从备份中恢复即可。如果inittab文件已经丢失,则没有备份,我们还可以通过重新安装“initscripts”软件包生成inisttab文件。(此软件包在系统安装光盘中的Server目录下)
在“急救模式”的shell环境中通常不会有“/dev/cdrom”的链接文件,因此可直接通过设备文件“/dev/hdc”使用光盘。安装完毕后退出光盘环境重启系统即可。