不管是运行于服务器上的linux还是普通用户的linux系统都有可能发生故障,重装系统又太麻烦,那么我们就要来对系统做故障排除,让系统重新正常运行起来。
不过在这之前呢,我们要先对系统的启动过程有一个初步的了解,以便于我们来更好地维护系统。
一、启动过程:
1、上电自检,检查blos设置,查看硬件是否有问题,若有问题,则不会进行下一步。
2、自检完成后,来由引导程序grub引导系统启动。共分为两个阶段,第一个阶段是MBR中boot loader的引导;第二个阶段主要是grub的配置。这里需要注意的是在第一个阶段会提示一个grub菜单,在/etc下名为grub.conf。我们的系统以此菜单为依据来进行操作系统的选择,还涉及到驱动以及内核的相关信息,下面我们来了解一下这个菜单
3、加载内核和相关的驱动
4、启动进程init(init是一切进程的开始),从下图可以开出
用pstree |less 来查看进程关系
5、读取/etc/inittab配置文件,执行/etc/rc.d/sysinit文件来准备软件执行的操作环境
6、init执行run-level的各个服务的启动
7、init执行开机脚本/etc/rc.d/rc.local文件
8、init执行终端模拟程序mingetty来启动login进程
二、在初步了解启动过程之后呢,来进入我们今天的话题----故障排除。故障的出现一般表现在grub引导的第一阶段和第二阶段,下面我们来分别模拟第一和第二阶段的故障为大家来演示故障的排除过程。
第一阶段的故障排除:
1、用命令来重写引导程序
2、把光盘去掉,重启机器,出现下边的情况,我们发现系统已经进行不了引导了
3、利用光盘引导,重建MBR
4、进入急救模式会出现5个弹窗,前两个分别是语言和键盘,选择默认就可以;第三个提示我们是否启动网络功能,选择否;第四个选择continue;第五个如下图所示
5、转变根
6、利用指令grub进入第二阶段,再来指定引导分区并重建第一阶段
完成后输入quit退出,再输入两次exit后系统会自动重启
7、发现系统已经可以正常启动了
第二阶段的故障排除:
第二阶段主要在/boot/grub目录下生成了许多的文件,如下图所示
而在这比较重要的文件是grub.conf,那又是为什么呢,看完下图你就明白了
我们知道/etc/grub.conf是个很重要的文件,而它所指的正是/boot/grub目录下的grub.conf
1、如果我们把这些文件误删了系统还会正常启动吗,下面我们就来模拟一下,把/boot/grub目录下的所有文件删除,再来指令ll来查看/etc/grub.conf。如下图,我们发现两个文件之间的链接断开了
2、再来重启系统,出现下图的现象。从图中我们可以看出,已经启动了grub,说明第一阶段没有问题,那问题就出在第二阶段,说明我们却少了配置文件。
3、重建二阶段的文件
指定引导分区并查看引导分区上的文件,从下图中我们可以看到驱动和内核文件
告诉系统内核和驱动的位置
然后利用boot指令来启动系统,这里需要注意的是用命令只能产生除了配置文件的其他文件,进入系统之后我们还要手动建配置文件。
首先进入/boot/grub目录下,编辑一个grub.conf的文件,内容如下图所示
编辑完后保存退出,再次重启系统,发现系统已经可以正常启动了。