配色: 字号:
Linux系统启动过程
2014-02-23 | 阅:  转:  |  分享 
  
第5章Linux系统启动过程Linux系统的启动分5个阶段,每个阶段都完成不同的启动任务。本章以RedHatEnterprise
Linux5.2和x86平台为例,剖析从打开计算机电源到计算机屏幕出现登录欢迎界面的整个Linux启动过程,并重点介绍启动中涉及
的主要配置文件以及管理工具。5.1Linux系统启动过程简介由于在Linux系统的启动过程中会出现非常多的提示信息,而且很
多启动信息都是在屏幕上一闪而过,所以对于很多Linux系统的初学者来说,可能会觉得Linux的启动过程非常神秘和复杂。其实Linu
x系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段。1.BIOS加电自检2.加载主引导加载程序(MBR)3.
加载次引导加载程序(GRUB)4.Linux内核映像5.init进程5.1Linux系统启动过程简介5.2BIOS
加电自检X86计算机在启动后首选会进行BIOS的加电自检,检测计算机的硬件设备,然后按照CMOS设置的顺序搜索处于活动状态并且可
以引导的设备。引导设备可以是软盘、光驱、USB设备、硬盘设置是网络上的某个设备。5.3引导加载程序GRUB是RedHat
EnterpriseLinux5.2默认的引导加载程序,其引导过程又可以分为启动主引导加载程序和启动次引导加载程序两个阶段。
本节将介绍GRUB在这两个阶段中的启动过程,以及介绍GRUB配置文件/boot/grub/grub.conf中的各种选项的使用。
5.3.1引导加载程序的启动RedHatEnterpriseLinux5.2默认安装的引导加载程序是GRUB,是目前
最常用的Linux引导加载程序。其引导过程分为两个阶段,第一阶段是保存在MBR中的主引导加载程序的加载。MBR中的主引导加载程序是
一个512字节大小的映像,其中包含有机器的二进制代码和一个小分区表。主引导加载程序的任务就是查找并加载保存在硬盘分区上的次引导加载
程序,它通过分区表查找活动分区,然后将活动分区的次引导加载程序从设备读入内存中并运行,进入引导加载程序的第二阶段。次引导加载程序
也被称为内核加载程序,这个阶段的任务是加载Linux内核。一旦次引导加载程序被加载到内存中后,便会显示GRUB的图形界面,在该界面
中用户可以通过上下方向键选择需要加载的操作系统以及它们的内核。5.3.1引导加载程序的启动5.3.2GRUB配置G
RUB的配置主要通过修改/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.4内核映像5.5init进程init进程是Linux系统所有进程的起点,内核在完成内核
引导后,便会加载init进程,其进程号是1。init进程启动后,会初始化操作系统,并启动特定的运行级别(Runlevel)下的自动
运行程序。用户可以通过更改相关的配置文件或使用图形化配置工具“服务配置”,自定义需要在系统启动时自动运行的服务。5.5.1i
nit进程简介内核映像在完成引导后,便会启动init进程。init进程对应的执行文件为/sbin/init,它是系统中所有进程的
发起者和控制者,所有的进程都是由它所衍生。如果init进程出现问题,系统中的其他进程也会随之而受影响。1.作为所有进程的父进程参
照对象2.运行不同级别的程序5.5.2init进程的引导过程当init进程获得控制权后,它首先会执行/etc/rc.d/
rc.sysinit脚本,根据脚本中的代码配置环境变量、配置网络、启用Swap、检查并挂载文件系统、执行其他系统初始化所必须的步骤
等。5.5.3配置自动运行服务配置自动运行服务涉及的文件较多,如果完全由用户手工配置,其过程比较繁琐,所以在RedHa
tEnterpriseLinux5.2中提供有一个图形配置工具,可以有效地简化配置过程。用户首先要创建服务对应的启动关闭脚本
,脚本的格式一般为:#!/bin/bash#chkconfig:-#description:#case"$1"
instart)stop)status)reload)restart))esacexi
t$RETVAL5.6重启和关闭系统Linux下常用的关机/重启命令有shutdown、root、halt以及init,它
们都可以达到重启系统的目的,但每个命令的过程过程都有所不同。在本节的内容中将会介绍这些命令的使用方法,以及它们之间的区别,希望读者
经过本节的学习后可以灵活使用这些命令,完成系统的关机和重启。5.6.1shudown命令:关闭或重启系统使用shutdow
n命令可以安全地重启或关闭系统。当用户执行shutdown命令后,系统会通知所有已经登录的用户系统将要关闭,然后拒绝任何新的用户登
录,同时向系统中进程发送SIGTERM信号,这样就可以让应用程序有足够的时间提交数据。启动或关闭系统是通过向init进程发送信号,
要求它改变运行级别来实行的。其中,级别0被用来关闭系统,级别6为重启系统,级别1为单用户模式。shutdown命令的格式如下:s
hutdown[-tsec][-arkhncfFHP]time[warning-message]5.6.2halt
命令:关闭系统halt是关闭系统的快捷命令。执行halt命令其实是相当于执行带“-h”选项的shutdown命令。halt命令的
格式如下所示。halt[-n][-w][-d][-f][-i][-p][-h]5.6.3reboot命令:重
启系统reboot是重启系统的快捷命令。执行该命令,相当于执行带“-r”选项的shutdown命令。该命令的格式如下:rebo
ot[-n][-w][-d][-f][-i][-p][-h]5.6.4init命令:改变运行级别Linux系
统共有7个不同的运行级别:0、1、2、3、4、5、6,使用init命令,可以改变系统当前的运行级别。其命令格式如下:init[
-a][-s][-b][-zxxx][0123456Ss]5.6.5通过图形界面关闭系统要注
销当前用户,可以在系统面板上选择【系统】|【注销】命令,打开如图5.12所示的对话框。单击【注销】按钮,系统将注销当前的登录用户,
并退出到用户登录界面。如果要关闭该对话框并返回桌面,可单击【取消】按钮。如果用户不单击任何按钮,系统将会在60秒后自动注销当前的登
录用户。5.7系统启动时常见的问题处理Linux救援模式是解决系统无法正常引导的最有效的解决方法,用户应该要熟练掌握进入L
inux救援模式的方法。对于安装了多系统的环境,经常会由于重装Windows或者重新进行分区,导致GRUB被覆盖或者无法引导Lin
ux,本节也会对这些问题给出具体的解决方法。5.7.1进入Linux救援模式当因为某些原因导致无法通过正常引导进入系统(例
如GRUB损坏或者误删除了某些重要的系统配置文件)或需要进行某些特殊的系统维护任务(例如忘记了root用户的口令需要进行重置)时,
就需要使用Linux救援模式。5.7.2GRUB被Windows覆盖当安装双系统环境时,如果先安装Linux,再安装Win
dows;或者已经安装好双系统环境后,对Windows进行了重装,那么保存在MBR中的GRUB就会被Windows系统的引导装载程
序NTLDR所覆盖,导致Linux系统无法引导。这时候可以通过以下步骤恢复GRUB。(1)使用5.7.1节中所介绍的方法进入L
inux救援模式,并执行“chroot/mnt/sysimage”命令切换根分区到硬盘的根分区。(2)在Shell中执行GRU
B进入“grub>”提示符。(3)执行“exit”命令退出硬盘的根分区,然后再执行一次该命令重启计算机。5.7.2GRUB被Windows覆盖5.7.3重新分区后GRUB引导失败如果系统中已经安装了Linux,用户使用分区工具对分区进行更改后,可能会导致Linux无法正常引导。例如,系统中有两个分区,其中第一个分区安装了Windows(hda1),第二个分区安装了Linux(hda5)。5.7.3重新分区后GRUB引导失败
献花(0)
+1
(本文系Ning1232首藏)