centos系统启动故障的分类与排除
实验环境:VMware workstation10
系统版本: centos 6.4
其他:linux的centos 6.4安装镜像
系统的grub对启动来说非常重要,他在MBR中也占有举足轻重的地位,那么如果我们硬盘中的文件一不小心勿操作被删除或修改了,那我们不是启动不了系统了 ? grub菜单在启动过程中起了很重要的做用,那我们就先打开grub所在的文件路径,看一下他的内容:
我们会发现在stage1中,他的大小只有512,而stage2却大得多,这说明阶段1是可以写在MBR中的,二阶段却无法写入,这也决定了阶段1中的内容是和引导和分区表相关文件,而阶段就只能写在磁盘上了,同时你也会发现有很多的阶段1.5,仔细观察会发现他们的前缀都是文件系统的格式,所有也可以得出他属于识别文件系统的一个中间阶段
那么下面我们模拟第一阶段的文件失效,来进行故障的的排除;有阶段1可以知道,他的主要作用应该是加载和引导,既bootloader,我们利用 dd if=/dev/zero of=/dev/sda bs=446 count=1 来清除一阶段的数据:
然后执行重启命令:
会发现已经启动不了:
当发现在系统启动不了时,CMOS会自定尝试其他的启动选项,比如光驱(如果光盘有,那出故障时我们肯定是我们的首选)这时我们在等待时间内按任意键就会出现以下界面:
在该界面我们可以大致了解该光盘的功能参数,比如,重装,内存测试等等,而我们要使用的就是其中的rescue installed system 来急救我们以安装的系统,
可以直接回车选择,也可以按esc进入命令模式输入:linux rescue后回车
接下来就是一些图形化的选项选择了,这是的选则就可以视个人喜好而定了,比如键盘
语言
而到这步光盘镜像位置时我们肯定是要选择本地了
接下问是否启用网络功能,而这是我们完全没有这个必要,就选则no
然后会出现一个关于急救模式的说明文档,如图
到这时其实我们只需要选择Continue就够了,然后看到如下图的界面他只是告诉我们,我们的系统已经被挂载到/mnt/sysimage目录下了,我们只需点ok就行
接下来的只是一个确认信息,我们确认就行
接下来的信息分别是开启一个shell,运行诊断工具,还有重启,当然我们要选择第一项
接下来,我们按照以前的说明文档,切换root到/mnt/sysmage/中去
然后在此环境中用grub-install命令来重建/dev/sda/中的bootloader,如图:
然后,我们输入两次exit命令来离开该页面,如图,
然后我们选择重新启动系统:
之后重启我们会发现阶段1失效已经同过该方法解决了
二阶段grub失效的模拟
首先我们进入阶段二所在的相关路径,然后用rm -f stage2直接把他删除,然后重启我们的系统,如图:
此时会发现无法启动,比且屏幕上会显示Error 15 的提示:
这时候就需要用上我们的livelinuxCD了,这种不需安装可独立运行的系统,类似于我们在windows中常用的win pe,功能很实用,当我们将livelinuxCD放入虚拟机相关位置后,如图:
然后开机按esc键进入快速启动项(不进bios的,仅限于本次开机的)的选择界面,选择CD-ROM启动,如图
在启动后,出现的等待界面中(10秒钟内)我们按下任意键进入光盘的启动选择项中,不做选择默认会从第一项启动(verify and boot)如图,选择第二项boot
启动后我们会看到如下界面,会发现我们是以普通账号的身份进入的,
我们可以用ctrl+alt+f2进行虚拟控制台的切换(不需要密码)
我们可以用fdisk -l 来查看我们磁盘的挂载情况
发现能查看,这时候我们的系统全在光盘上,所以我们要想访问我们的硬盘,那就必须挂载到光盘的目录中去,那我们可以先用df -h 来查看当前的系统目录大小和挂载情况,如图,:
然后为了访问其中的文件,我们把他挂载到一个目录上去,比如/boot(小编试用过其他的目录。但是失败了好几次,最后在boot上成功的,所以还是建议在boot上)
grub-install --root-directory=/ /dev/sda 这条命令的意思为重建或修复boot目录下文件(指grub)的完整性进行修复,--root-directory=/ 的意思表示要在根目录下安装 后跟的具体路径或者是磁盘分区,(注意,小编在此失败了好多次,皆因挂载在/tmp目录下的缘故,原因可能跟/tmp目录本身的属性相关)
接着进入相关路径查看stage2
然后我们重启一下机器查看一下具体结果,因为我们没有改bios信息,所以一开始仍会按默认的启动顺序,既本地硬盘来启动,
发现系统应经成功启动,如图
/boot/grub/grub.conf文件丢失或损坏故障的排除
正是因为boot目录下grub目录的重要性,所以,我们平常的文件操作中很容易
发生grub文件出错或丢失的情况,下面我们就模拟一下,如图,发现grub目录
并且有一个叫menu。lst的链接指向她:
如图为grub配置文件的具体内容:
删除它
然后重启发现又无法启动了;
出现这种问题,我们的解决思路是想办法先把系统引导起来,比如说你手上现
在有livecd,只需要启动后重建grub。conf文件就可以了,(具体方法可参照
恢复grub的阶段二部分)那如果没有呢,我们可以试着如下方法,首先在grub
中指明你的引导分区,然后指明你的kernel,然后只读引导,再然后指明引导
后根交给谁(既你的根所在的分区),
,然后是initrd /后跟具体的文件信息,最后boot命令
需要注意的是我们这面的操作是在grub。Conf配置文件丢失的情况下手动指明丢失文件中的grub选项,既root,kernel,initrd,来进行的暂时行启动,再开机重启仍会这样,要解决根本我们就需要把配置文件重新编写或生成,如图,我们重新编写
然后重新启动,看到可以启动,如图
grub文件的完全丢失的情况
在这种情况下开机都没有grub指令菜单,只有一个报错提示,
所以这时只能用
livecd,从livecd启动后将引导分区挂载到/boot目录下,然后执行grub-
install --root-directory=/ /dev/sda,如图:
然后查看生成后的具体内容,你会发现没有grub的配置文件,
那么就像前面一样再
继续编一次,如图,(注意,这的根一定要交给根分区,而你的根分区在哪,
这就要看你安装时的顺序了,如,小编的是2,既我是先创建的/boot分区后创
建的根分区,所以一定要是sda2,小编试sda1的时候错了多次的。。。)
然后重启,完成,如图,
管理员口令丢失
这也是我们平常遇到的常见故障之一,他的排除可以按以下步骤来
重启后的grub菜单等待时间内(5秒内)按下任意键
选择内核版本,(没动过内核的,一般只有一个)
移动光标至第二项,按e进行编辑,光标移动至最后,什么也不用改,在后加
singer(进入单用户模式)(或是数字1)
返回,按b启动,然后在单用户模式中,直接输入passwd 后跟新root密码,如图
然后重启系统即可生效,完成密码的更新。