Linux系统运行级与启动机制剖析.docx

上传人:b****8 文档编号:10531570 上传时间:2023-02-21 格式:DOCX 页数:8 大小:53.67KB
下载 相关 举报
Linux系统运行级与启动机制剖析.docx_第1页
第1页 / 共8页
Linux系统运行级与启动机制剖析.docx_第2页
第2页 / 共8页
Linux系统运行级与启动机制剖析.docx_第3页
第3页 / 共8页
Linux系统运行级与启动机制剖析.docx_第4页
第4页 / 共8页
Linux系统运行级与启动机制剖析.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

Linux系统运行级与启动机制剖析.docx

《Linux系统运行级与启动机制剖析.docx》由会员分享,可在线阅读,更多相关《Linux系统运行级与启动机制剖析.docx(8页珍藏版)》请在冰豆网上搜索。

Linux系统运行级与启动机制剖析.docx

Linux系统运行级与启动机制剖析

Linux系统运行级与启动机制剖析

一系统运行级

windows系统有安全运行模式和正常运行模式,这是两个不同的运行级,同样,linux也有系统运行级别,并且linux系统的运行级别更加灵活,更加多样化。

在讲述运行级别前,先讲述下linux下的init程序,因为init程序直接和系统运行级别相关联,init程序是linux操作系统最主要的程序之一,是一个由系统内核启动的用户级进程,同时init进程也是所有其它系统进程的鼻祖,也就是说init进程是系统运行的第一个进程,它的进程号始终为1。

linux系统有7个运行级别,这些运行级别均在/etc/inittab文件中指定,下面讲述/etc/inittab文件的具体实现。

以redhatlinux为例,下面是/etc/inittab的某段信息。

#Defaultrunlevel.TherunlevelsusedbyRHSare:

#  0-halt(DoNOTsetinitdefaulttothis)

#  1-Singleusermode

#  2-Multiuser,withoutNFS(Thesameas3,ifyoudonothavenetworking)

#  3-Fullmultiusermode

#  4-unused

#  5-X11

#  6-reboot(DoNOTsetinitdefaulttothis)

上面这段信息列出了linux系统的7个运行等级:

0-关机模式,

1-单用户模式,单用户只有系统管理员可以登录。

2-多用户模式,但是不支持文件共享,例如不支持NFS服务.这种模式不常用。

3-完全的多用户模式,支持NFS服务.最常用的用户模式,默认登录到系统的字符界面。

4-基本不用的用户模式,可以实现某些特定的登录请求。

5-完全多用户模式,默认登录到X-window系统,也就是登录到linux图形界面。

6-重启模式,也就是执行关闭所有运行的进程,然后重新启动系统。

这些运行级别和linux中的init程序相互对应,例如执行init1系统就进入单用户模式,执行init6系统将重新启动。

在inittab文件中以#开头的所有行都是注释行。

注释行有助于用户理解inittab文件每项的具体含义,inittab文件中的值都有如下格式组成:

   label:

runlevel:

action:

process

1.label字段

label是有1~4个字符组成的标签,用来标示输入的值。

一些系统只支持2个字符的标签。

鉴于此原因,多数人都将标签字符的个数限制在2个以内。

该标签可以是任意字符构成的字符串,在RedHatLinux中使用的标签有:

2.runlevel字段

runlevel字段指定系统的运行级别。

可以指定多个运行级别,也可以不为runlevel字段指定特定的值。

3.process字段

process字段包含了init执行的进程,也就是init程序具体要执行的命令,该进程采用的格式与在命令行下运行该进程的格式一样,因此process字段都以该进程的名字开头,后面是运行时要传递给该进程的参数。

比如/sbin/shutdown-t3-rnow。

4.action字段

   action字段定义了:

当系统进入相应的运行级别后,init程序应该以何种方式运行process字段对应的命令,action字段常用的值如下表所示:

明白了inittab文件的格式以后,我们就知道每项的含义了,接着看/etc/inittab下面的内容:

id:

5:

initdefault:

表示系统将默认启动到X-window界面下,如果我们想让系统默认开机启动到字符界面下,只需修改id:

5:

initdefault:

为id:

3:

initdefault:

即可。

#Systeminitialization.

si:

:

sysinit:

/etc/rc.d/rc.sysinit

该段告诉init程序,运行/etc/rc.d/rc.sysinit来进行系统初始化工作。

l0:

0:

wait:

/etc/rc.d/rc0

l1:

1:

wait:

/etc/rc.d/rc1

l2:

2:

wait:

/etc/rc.d/rc2

l3:

3:

wait:

/etc/rc.d/rc3

l4:

4:

wait:

/etc/rc.d/rc4

l5:

5:

wait:

/etc/rc.d/rc5

l6:

6:

wait:

/etc/rc.d/rc6

上面这段信息标明/etc/rc.d/rc可以运行在0~6各个运行级别,同时init程序等待/etc/rc.d/rc执行完毕才进入下一步操作。

#TrapCTRL-ALT-DELETE

ca:

:

ctrlaltdel:

/sbin/shutdown-t3-rnow

上面这段指定了当Ctrl+Alt+Del三个键同时按下时,init程序将执行/sbin/shutdown-t3-rnow,即重启系统。

#WhenourUPStellsuspowerhasfailed,assumewehaveafewminutes

#ofpowerleft. Scheduleashutdownfor2minutesfromnow.

#Thisdoes,ofcourse,assumeyouhavepowerdinstalledandyour

#UPSconnectedandworkingcorrectly. 

pf:

:

powerfail:

/sbin/shutdown-f-h+2"PowerFailure;SystemShuttingDown"

上面这段信息说明了:

系统电源被切断时,UPS通知init程序,init程序发出"PowerFailure;SystemShuttingDown"信号,然后执行关机操作。

#Ifpowerwasrestoredbeforetheshutdownkickedin,cancelit.

pr:

12345:

powerokwait:

/sbin/shutdown-c"PowerRestored;ShutdownCancelled"

这段说明了:

UPS接到电源恢复信号后,通知init进程,然后init程序发出"PowerRestored;ShutdownCancelled"信号,取消关机操作,这个过程在1~5运行级别上有效。

#Rungettysinstandardrunlevels

1:

2345:

respawn:

/sbin/mingettytty1

2:

2345:

respawn:

/sbin/mingettytty2

3:

2345:

respawn:

/sbin/mingettytty3

4:

2345:

respawn:

/sbin/mingettytty4

5:

2345:

respawn:

/sbin/mingettytty5

6:

2345:

respawn:

/sbin/mingettytty6

这段信息说明了:

在2~5运行级别上,始终打开6个终端控制台,即使某个控制台被关闭,系统也会自动启动。

#Runxdminrunlevel5

x:

5:

respawn:

/etc/X11/prefdm–nodaemon

最后这段信息表明,在X-window桌面下始终运行的进程是/etc/X11/prefdm。

二 系统启动过程

1.内核引导

 打开系统电源,开始BIOS自检,系统按照BIOS里的设置启动设备(一般是硬盘启动),接着进入linux引导程序,一般Linux系统提供两种引导方式:

GRUB和LOLO,其中GRUB是大多数Linux系统的默认引导方式,而LILO则是根据一些特殊需求或个人喜好而准备的,一旦linux引导程序载入内存,它显示一个图形界面给用户,这个界面里包含了不同的内核选项,用户可以通过上下键去选择不同的内核引导,当引导程序成功完成引导后,linux接管了对CPU的控制权,接着CPU开始执行linux内核映像程序,加载内核,在预定的地方找到initrd镜像的压缩包,对它进行解压和挂载,并载入所有必须的驱动,然后,Kernel会创建root设备,以只读方式挂载root分区,并释放所有没有被使用的内存,此时,Kernel已经被装载到内存里运行起来了。

但是,因为没有用户应用程序允许输入有意义的指令给系统,所以此时的系统不能做任何事情。

2.运行init

init进程是系统所有进程的起点,紧接上面,Linux在完成核内引导以后,就开始运行init程序,init程序需要读取配置文件/etc/inittab,而inittab是一个不可执行的文本文件,关于这个文件,我们将在”系统运行级”一节详细讲述。

3.系统初始化

init程序启动后首先调用rc.sysinit和rc程序,rc.sysinit主要完成一些系统初始化的工作,它是系统每一个运行级别都要首先运行的重要脚本。

它主要完成的工作有:

检查磁盘,加载硬件模块,激活交换分区,以及其它一些需要优先执行任务,当rc.sysinit程序执行完毕,引导返回到init程序。

4.启动运行级的守护进程

rc.sysinit程序执行完毕,接下来,rc程序启动,rc程序主要启动系统对应运行级别的守护进程,rc程序执行完毕,又将返回init程序继续下一步。

5.建立终端

此时系统基本环境已经设置好了,init程序接着会打开6个终端,以便用户登录。

6.登录系统

当我们看到mingetty的登录界面时,我们就可以输入用户名和密码登录系统了。

Linux的账号验证程序是login,当login程序执行成功后,最后就进入了shell终端。

这样linux系统就完成了从开机到启动的整个过程。

 

三 系统关机过程

在了解linux关机过程之前,我们先学习一下linux关机的一些常用命令,最常用的linux关机命令有如下几个:

init,shutdown,halt,reboot等,这些命令都可以达到关机重启的目的,但是每个命令的内部工作过程是不同的。

我们通过对关机命令的讲述,详细了解linux安全关机的过程。

1.shutdown命令

使用shutdown命令可以安全的关闭linux系统,有些linux初学者会使用直接关闭电源的方法来关闭linux,这是十分危险的,因为linux与windows不同,在linux后台运行着很多进程,这些进程控制着linux对系统的各种操作,如果强制关机,可能会造成进程的混乱以至丢失数据,如果在系统工作负荷很高的情况下,突然断电,不但会丢失数据,甚至会损坏硬件设备。

shutdown命令是用shell编写的程序,必须由超级用户才能执行,shutdown命令执行后,会以广播的形式通知正在系统中工作的所有用户,系统将在指定的时间内关闭,请保存文件,停止作业,注销用户;此时login指令被冻结,新的用户不能登录;当所有的用户从系统中注销或者指定时间已到时,shutdown就发送信号给init程序,要求init程序改变系统运行级别,接着,init程序根据shutdown指令传递过来的参数,相应的改变运行级,例如,shutdown指定的参数是关机命令的话,init程序就执行init0进行关机,如果shutdown指定的参数是要重启系统,那么init程序就执行init6进行系统重启。

 shutdown命令的详细语法:

shutdown[-fFhknrc(参数名称)][-t秒数]时间[警告信息]

具体各参数功能:

-f重新启动时不执行fsck(注:

fsck是Linux下的一个检查和修复文件系统的程序,我们会在以后章节详细讲述)。

-F重新启动时执行fsck。

-h将系统关机,在某种程度上功能与halt命令相当。

-k只是送出信息给所有用户,但并不会真正关机。

-n不调用init程序关机,而是由shutdown自己进行(一般关机程序是由shutdown调用init来实现关机动作),使用此参数将加快关机速度,但是不建议用户使用此种关机方式。

-rshutdown之后重新启动系统。

-c取消前一个shutdown命令。

例如,当执行一个如“shutdown-h15:

30”的命令时,只要按“Ctrl+C”键就可以中断关机的命令。

而执行如“shutdown-h15:

30&”的命令就将shutdown转到后台运行了,此时,就需要使用shutdown-c将前一个shutdown命令取消。

-t<秒数>送出警告信息和关机信号之间要延迟多少秒。

警告信息将提醒用户保存当前进行的工作。

[时间]设置多久时间后执行shutdown命令。

时间参数有hh:

mm或+m两种模式。

hh:

mm格式表示在几点几分执行shutdown命令。

例如“shutdown16:

50”表示将在16:

50执行shutdown,+m表示m分钟后执行shutdown,比较特别的用法是以now表示立即执行shutdown,值得注意的是这部分参数不能省略。

[警告信息]要传送给所有登入用户的信息。

 应用举例:

立即关机重启:

shutdown–rnow

立即关机:

shutdown–hnow

设定5分钟后关机,同时发出警告信息给登录的linux用户:

shutdown+5 “Systemwillshutdownafter5minutes”

2.halt命令

halt是最简单的关机命令,相当于shutdown–h组合,halt执行时,kill掉多有应用程序,然后调用系统指令sync,sync将所有内存信息通过文件系统写入硬盘,然后停止内核。

halt命令的部分参数如下:

[-f]没有调用shutdown而强制关机或重启。

[-i]关机或重新启动之前,关掉所有的网络接口。

[-p]关机时调用poweroff,此选项为缺省选项。

3.reboot命令

reboot命令的执行过程与halt基本类似,不同的是halt是用于关机,而reboot是关机后引发系统重启。

4.init命令

init进程是所有进程的鼻祖,其进程号始终为1,init程序主要用于系统不同运行级之间的切换,切换的工作是立即完成的,例如init0就是将系统运行级切换到0,也就是关机,init6命令用于将系统运行级别切换到6,也就是重启系统。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1