centos系统启动故障的分类与排除

实验环境:VMware workstation10

系统版本: centos 6.4

其他:linux的centos 6.4安装镜像

  系统的grub对启动来说非常重要,他在MBR中也占有举足轻重的地位,那么如果我们硬盘中的文件一不小心勿操作被删除或修改了,那我们不是启动不了系统了 ? grub菜单在启动过程中起了很重要的做用,那我们就先打开grub所在的文件路径,看一下他的内容: 

174020154.jpg

 

174240401.jpg

我们会发现在stage1中,他的大小只有512,而stage2却大得多,这说明阶段1是可以写在MBR中的,二阶段却无法写入,这也决定了阶段1中的内容是和引导和分区表相关文件,而阶段就只能写在磁盘上了,同时你也会发现有很多的阶段1.5,仔细观察会发现他们的前缀都是文件系统的格式,所有也可以得出他属于识别文件系统的一个中间阶段

175720682.jpg

 

那么下面我们模拟第一阶段的文件失效,来进行故障的的排除;有阶段1可以知道,他的主要作用应该是加载和引导,既bootloader,我们利用 dd  if=/dev/zero  of=/dev/sda bs=446 count=1 来清除一阶段的数据:

183223459.jpg

然后执行重启命令:183535381.jpg

 

会发现已经启动不了:

183743521.jpg

 

183927180.jpg

 

当发现在系统启动不了时,CMOS会自定尝试其他的启动选项,比如光驱(如果光盘有,那出故障时我们肯定是我们的首选)这时我们在等待时间内按任意键就会出现以下界面:

185849976.jpg

 

在该界面我们可以大致了解该光盘的功能参数,比如,重装,内存测试等等,而我们要使用的就是其中的rescue installed system 来急救我们以安装的系统,

190806652.jpg

可以直接回车选择,也可以按esc进入命令模式输入:linux rescue后回车

190822728.jpg

接下来就是一些图形化的选项选择了,这是的选则就可以视个人喜好而定了,比如键盘

192010260.jpg

语言

192031678.jpg

 

而到这步光盘镜像位置时我们肯定是要选择本地了

192104188.jpg

 

接下问是否启用网络功能,而这是我们完全没有这个必要,就选则no

 

192128724.jpg

 

然后会出现一个关于急救模式的说明文档,如图

 

192150773.jpg

 

到这时其实我们只需要选择Continue就够了,然后看到如下图的界面他只是告诉我们,我们的系统已经被挂载到/mnt/sysp_w_picpath目录下了,我们只需点ok就行

192808991.jpg

 

 

接下来的只是一个确认信息,我们确认就行

192923267.jpg

 接下来的信息分别是开启一个shell,运行诊断工具,还有重启,当然我们要选择第一项

193356182.jpg

接下来,我们按照以前的说明文档,切换root到/mnt/sysmage/中去

193739888.jpg

 

 然后在此环境中用grub-install命令来重建/dev/sda/中的bootloader,如图:

194247628.jpg

 

 

然后,我们输入两次exit命令来离开该页面,如图,

194451308.jpg

 

然后我们选择重新启动系统:

194548907.jpg

 

之后重启我们会发现阶段1失效已经同过该方法解决了

194848272.jpg

 

二阶段grub失效的模拟 

首先我们进入阶段二所在的相关路径,然后用rm -f stage2直接把他删除,然后重启我们的系统,如图:

200748458.jpg

此时会发现无法启动,比且屏幕上会显示Error 15 的提示:

201034758.jpg

这时候就需要用上我们的livelinuxCD了,这种不需安装可独立运行的系统,类似于我们在windows中常用的win pe,功能很实用,当我们将livelinuxCD放入虚拟机相关位置后,如图:200051765.jpg

 

然后开机按esc键进入快速启动项(不进bios的,仅限于本次开机的)的选择界面,选择CD-ROM启动,如图

200141896.jpg


在启动后,出现的等待界面中(10秒钟内)我们按下任意键进入光盘的启动选择项中,不做选择默认会从第一项启动(verify and boot)如图,选择第二项boot

 

200232307.jpg

启动后我们会看到如下界面,会发现我们是以普通账号的身份进入的,

 

200323674.jpg我们可以用ctrl+alt+f2进行虚拟控制台的切换(不需要密码)

200415164.jpg

 

我们可以用fdisk -l 来查看我们磁盘的挂载情况


200615194.jpg

 

发现能查看,这时候我们的系统全在光盘上,所以我们要想访问我们的硬盘,那就必须挂载到光盘的目录中去,那我们可以先用df -h 来查看当前的系统目录大小和挂载情况,如图,:

200748356.jpg


然后为了访问其中的文件,我们把他挂载到一个目录上去,比如/boot(小编试用过其他的目录。但是失败了好几次,最后在boot上成功的,所以还是建议在boot上)

201156157.jpg

 

 

 

201931687.jpg

grub-install --root-directory=/  /dev/sda 这条命令的意思为重建或修复boot目录下文件(指grub)的完整性进行修复,--root-directory=/ 的意思表示要在根目录下安装 后跟的具体路径或者是磁盘分区,(注意,小编在此失败了好多次,皆因挂载在/tmp目录下的缘故,原因可能跟/tmp目录本身的属性相关)

接着进入相关路径查看stage2

 

202654367.jpg


然后我们重启一下机器查看一下具体结果,因为我们没有改bios信息,所以一开始仍会按默认的启动顺序,既本地硬盘来启动,
发现系统应经成功启动,如图

202835432.jpg

 

 /boot/grub/grub.conf文件丢失或损坏故障的排除

 

 

正是因为boot目录下grub目录的重要性,所以,我们平常的文件操作中很容易

 

发生grub文件出错或丢失的情况,下面我们就模拟一下,如图,发现grub目录

 

并且有一个叫menulst的链接指向她:

175157863.jpg

如图为grub配置文件的具体内容:

180555505.jpg

删除它

180647260.jpg

然后重启发现又无法启动了;

180717902.jpg

出现这种问题,我们的解决思路是想办法先把系统引导起来,比如说你手上现

 

在有livecd,只需要启动后重建grubconf文件就可以了,(具体方法可参照

 

恢复grub的阶段二部分)那如果没有呢,我们可以试着如下方法,首先在grub

中指明你的引导分区,然后指明你的kernel,然后只读引导,再然后指明引导

 

后根交给谁(既你的根所在的分区),

,然后是initrd /后跟具体的文件信息,最后boot命令

180903395.jpg

需要注意的是我们这面的操作是在grubConf配置文件丢失的情况下手动指明丢失文件中的grub选项,既rootkernelinitrd,来进行的暂时行启动,再开机重启仍会这样,要解决根本我们就需要把配置文件重新编写或生成,如图,我们重新编写

spacer.gif

然后重新启动,看到可以启动,如图

spacer.gif

grub文件的完全丢失的情况

 在这种情况下开机都没有grub指令菜单,只有一个报错提示,

spacer.gif

所以这时只能用

livecd,livecd启动后将引导分区挂载到/boot目录下,然后执行grub-

install --root-directory=/ /dev/sda,如图:

spacer.gif

然后查看生成后的具体内容,你会发现没有grub的配置文件,

spacer.gif

那么就像前面一样再

继续编一次,如图,(注意,这的根一定要交给根分区,而你的根分区在哪,

这就要看你安装时的顺序了,如,小编的是2,既我是先创建的/boot分区后创

建的根分区,所以一定要是sda2,小编试sda1的时候错了多次的。。。)

spacer.gif

然后重启,完成,如图,

spacer.gif

管理员口令丢失

这也是我们平常遇到的常见故障之一,他的排除可以按以下步骤来

重启后的grub菜单等待时间内(5秒内)按下任意键

选择内核版本,(没动过内核的,一般只有一个)

spacer.gif

移动光标至第二项,按e进行编辑,光标移动至最后,什么也不用改,在后加

singer(进入单用户模式)(或是数字1

spacer.gif

spacer.gif

返回,按b启动,然后在单用户模式中,直接输入passwd 后跟新root密码,如图

spacer.gif

然后重启系统即可生效,完成密码的更新。