原著资料网址:http://wenku.baidu.com/view/414127fdf705cc1755270997.html html
(版权归原做者全部) 安全
Linux系统的启动分5个阶段,每一个阶段都完成不一样的启动任务。本章以Red Hat Enterprise Linux 5.2和x86平台为例,剖析从打开计算机电源到计算机屏幕出现登陆欢迎界面的整个Linux启动过程,并重点介绍启动中涉及的主要配置文件以及管理工具。 bash
5.1 Linux系统启动过程简介 网络
因为在Linux系统的启动过程当中会出现很是多的提示信息,并且不少启动信息都是在屏幕上一闪而过,因此对于不少Linux系统的初学者来讲,可能会以为Linux的启动过程很是神秘和复杂。其实Linux系统的启动过程并非你们想象中的那么复杂,其过程能够分为5个阶段。 工具
1.BIOS加电自检 学习
2.加载主引导加载程序(MBR) 操作系统
3.加载次引导加载程序(GRUB) rest
4.Linux内核映像 htm
5.init进程 对象
5.2 BIOS加电自检
X86计算机在启动后首选会进行BIOS的加电自检,检测计算机的硬件设备,而后按照CMOS设置的顺序搜索处于活动状态而且能够引导的设备。引导设备能够是软盘、光驱、USB设备、硬盘设置是网络上的某个设备。
5.3 引导加载程序
GRUB是Red Hat Enterprise Linux 5.2默认的引导加载程序,其引导过程又能够分为启动主引导加载程序和启动次引导加载程序两个阶段。本节将介绍GRUB在这两个阶段中的启动过程,以及介绍GRUB配置文件/boot/grub/grub.conf中的各类选项的使用。
5.3.1 引导加载程序的启动
Red Hat Enterprise Linux 5.2默认安装的引导加载程序是GRUB,是目前最经常使用的Linux引导加载程序。其引导过程分为两个阶段,第一阶段是保存在MBR中的主引导加载程序的加载。MBR中的主引导加载程序是一个512字节大小的映像,其中包含有机器的二进制代码和一个小分区表。主引导加载程序的任务就是查找并加载保存在硬盘分区上的次引导加载程序,它经过分区表查找活动分区,而后将活动分区的次引导加载程序从设备读入内存中并运行,进入引导加载程序的第二阶段。
次引导加载程序也被称为内核加载程序,这个阶段的任务是加载Linux内核。一旦次引导加载程序被加载到内存中后,便会显示GRUB的图形界面,在该界面中用户能够经过上下方向键选择须要加载的操做系统以及它们的内核。
5.3.2 GRUB配置
GRUB的配置主要经过修改/boot/grub/目录下的grub.conf文件来完成,用户能够经过VI或者在图形界面中使用文件编辑工具打开该文件进行编辑。
1.default选项
2.timeout选项
3.splashimage选项
4.hiddenmenu选项
5.title选项
6.root (hdx,y)
7.kernel选项
5.4 内核映像
当用户选择启动Linux操做系统后,GRUB会根据/boot/grub.conf配置文件中所设置的信息,从/boot/所在的分区上读取Linux内核映像,而后把内核映像加载到内存中并把控制权交给Linux内核。Linux内核得到控制权后,将会按如下步骤继续引导系统。
(1)内核映像首先会检测系统中的硬件设备,包括内存、CPU、硬盘等,对这些设备进行初始化并配置。
(2)内核映像是通过压缩的,接下来它要对自身进行解压,同时加载必要的设备驱动。
(3)初始化与文件系统相关的虚拟设备,如LVM或者软件RAID等。
(4)装载根文件系统(/),把根文件系统挂载到根目录下。
(5)完成引导后,Linux内核会在其进程空间内加载init程序,并把控制器交给init进程,由init进程继续完成接下来的系统引导工做。
5.5 init进程
init进程是Linux系统全部进程的起点,内核在完成内核引导后,便会加载init进程,其进程号是1。init进程启动后,会初始化操做系统,并启动特定的运行级别(Runlevel)下的自动运行程序。用户能够经过更改相关的配置文件或使用图形化配置工具“服务配置”,自定义须要在系统启动时自动运行的服务。
5.5.1 init进程简介
内核映像在完成引导后,便会启动init进程。init进程对应的执行文件为/sbin/init,它是系统中全部进程的发起者和控制者,全部的进程都是由它所衍生。若是init进程出现问题,系统中的其余进程也会随之而受影响。
1.做为全部进程的父进程参照对象
2.运行不一样级别的程序
5.5.2 init进程的引导过程
当init进程得到控制权后,它首先会执行/etc/rc.d/rc.sysinit脚本,根据脚本中的代码配置环境变量、配置网络、启用Swap、检查并挂载文件系统、执行其余系统初始化所必须的步骤等。
5.5.3 配置自动运行服务
配置自动运行服务涉及的文件较多,若是彻底由用户手工配置,其过程比较繁琐,因此在Red Hat Enterprise Linux 5.2中提供有一个图形配置工具,能够有效地简化配置过程。用户首先要建立服务对应的启动关闭脚本,脚本的格式通常为:
#!/bin/bash
# chkconfig: -
# description:
#
case "$1" in
start)
stop)
status)
reload)
restart)
*)
esac
exit $RETVAL
5.6 重启和关闭系统
Linux下经常使用的关机/重启命令有shutdown、root、halt以及init,它们均可以达到重启系统的目的,但每一个命令的过程过程都有所不一样。在本节的内容中将会介绍这些命令的使用方法,以及它们之间的区别,但愿读者通过本节的学习后能够灵活使用这些命令,完成系统的关机和重启。
5.6.1 shudown命令:关闭或重启系统
使用shutdown命令能够安全地重启或关闭系统。当用户执行shutdown命令后,系统会通知全部已经登陆的用户系统将要关闭,而后拒绝任何新的用户登陆,同时向系统中进程发送SIGTERM信号,这样就可让应用程序有足够的时间提交数据。启动或关闭系统是经过向init进程发送信号,要求它改变运行级别来实行的。其中,级别0被用来关闭系统,级别6为重启系统,级别1为单用户模式。shutdown命令的格式以下:
shutdown [-t sec] [-arkhncfFHP] time[warning-message]
5.6.2 halt命令:关闭系统
halt是关闭系统的快捷命令。执行halt命令实际上是至关于执行带“-h”选项的shutdown命令。halt命令的格式以下所示。
halt [-n] [-w] [-d] [-f] [-i] [-p][-h]
5.6.3 reboot命令:重启系统
reboot是重启系统的快捷命令。执行该命令,至关于执行带“-r”选项的shutdown命令。该命令的格式以下:
reboot [-n] [-w] [-d] [-f][-i] [-p] [-h]
5.6.4 init命令:改变运行级别
Linux系统共有7个不一样的运行级别:0、一、二、三、四、五、6,使用init命令,能够改变系统当前的运行级别。其命令格式以下:
init [ -a ] [ -s ] [ -b ] [ -z xxx ] [0123456Ss ]
5.6.5 经过图形界面关闭系统
要注销当前用户,能够在系统面板上选择【系统】|【注销】命令,打开如图5.12所示的对话框。单击【注销】按钮,系统将注销当前的登陆用户,并退出到用户登陆界面。若是要关闭该对话框并返回桌面,可单击【取消】按钮。若是用户不单击任何按钮,系统将会在60秒后自动注销当前的登陆用户。
5.7 系统启动时常见的问题处理
Linux救援模式是解决系统没法正常引导的最有效的解决方法,用户应该要熟练掌握进入Linux救援模式的方法。对于安装了多系统的环境,常常会因为重装Windows或者从新进行分区,致使GRUB被覆盖或者没法引导Linux,本节也会对这些问题给出具体的解决方法。
5.7.1 进入Linux救援模式
当由于某些缘由致使没法经过正常引导进入系统(例如GRUB损坏或者误删除了某些重要的系统配置文件)或须要进行某些特殊的系统维护任务(例如忘记了root用户的口令须要进行重置)时,就须要使用Linux救援模式
5.7.2 GRUB被Windows覆盖
当安装双系统环境时,若是先安装Linux,再安装Windows;或者已经安装好双系统环境后,对Windows进行了重装,那么保存在MBR中的GRUB就会被Windows系统的引导装载程序NTLDR所覆盖,致使Linux系统没法引导。
这时候能够经过如下步骤恢复GRUB。
(1)使用5.7.1节中所介绍的方法进入Linux救援模式,并执行“chroot /mnt/sysimage”命令切换根分区到硬盘的根分区。
(2)在Shell中执行GRUB进入“grub>”提示符。
(3)执行“exit”命令退出硬盘的根分区,而后再执行一次该命令重启计算机。
5.7.3 从新分区后GRUB引导失败
若是系统中已经安装了Linux,用户使用分区工具对分区进行更改后,可能会致使Linux没法正常引导。例如,系统中有两个分区,其中第一个分区安装了Windows(hda1),第二个分区安装了Linux(hda5)。