原创 linux 开机/关机流程

2007-12-1 00:53 6256 5 6 分类: 软件与OS
启动和关机

系统启动流程:
  系统启动完成如下工作:
  .机器本身所进行的必要的有限的自检
  .查找一个可引导设备
  .从引导设备上读取内核
  .找到内核并初始化外设
  .启动基本系统任务
  .运行那些能提供服务的shell script
  .其他应用程序开始

  在系统启动过程中,绝大多数启动信息将同时写到主控台设备和系统日志文件,
  系统日志文件可以参考系统文档syslogd和配置文件/etc/syslog.conf,
  syslog.conf文件的最后一行为系统日志文件的位置.
1.初始化过程
  内核: /vmunix, /unix或/boot/zImage, 位于/文件系统,kernel执行后运行
  init, init将会创建一些正常操作所需要的子进程.这些操作包括设备主机名,
  检查相应的磁盘并加载文件系统,启动系统日志,配置网络接口,启动网络和邮
  件服务,清除临时分区,存储core dump, 要理解这些功能是如何实现的,需要更
  深入的了解父进程是如何操作的,SYSV/BSD对这一父进程称之为init, 但其各自
  的调用方式却差别很大.

.配置文件
  linux使用一个非常灵活的init进程,init会直接建立在/etc/inittab中所列出
  的任务, init通用运行级别如下:
  0     shutdown
  1     系统管理方式,所有的文件可以继续访问,但只有超级用户可以从主控台
        访问系统
  2     系统进入正常多用户操作方式
  3     多用户操作方式,但同时开启远程文件共享,启动一些额外的进程以允许
        远程文件共享,加载远程资源,同时向网上公布其远程资源(如nfs)
  4     用户自定义多用户环境
  5     自定义多用户环境,不同unix之间有所差别,如有些unix这试图关机并关闭电源
  6     关闭机器后重新启动到运行级别2或3, 不同unix不完全相同
  S/s   单用户方式,通常在inittab丢失或不对时使用此方式
  Q/q   不改变运行状态,重新检查inittab, 不重启机器而开始新的改动.


示列文件/etc/inittab

#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Things to run in every runlevel.
ud::once:/sbin/update

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly. 
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


# Run gettys in standard runlevels
1:12345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5
#x:5:respawn:/usr/bin/X11/xdm -nodaemon
x:3:respawn:/usr/bin/env KDEDIR="/opt/kde" /opt/kde/bin/kdm -nodaemon

文件每一行格式如下:
  identifier:runlevel:action-keyword:process

  identifier: 最长4个字符,唯一标识一项
  run-level:  为空表示所有级别,默认运行级别通常为2或3
  action-keyword: init所采取的动作。具体参数含义如下:

  Keyword       Action                                          Wait    Restart
  --------      --------------------------------------------    ----    -----
  boot          Executed only during a system boot.             NO      NO
                multiuser after the system is started. 
  initdefault   Start with this upon boot. The process field    N/A     N/A
                is ignored. If level
  off           Kill processes when in a given level. Ignore    N/A     N/A
                if the process doesn't exist.
  once          Run the process once.                           No      No
  powerfail     Run processes when a powerdown is requested.    No      No
  powerwait     Run processes when a powerdown is requested.    Yes     No
  respawn       If the process doesn't exist, start it. If      No      Yes
                the process does exist, do nothing.

  sysinit       Run processes before the login prompt is sent   Yes     No
                to the system console.
  wait          Start processes once.                           Yes     No
  ctrlaltdel    (Linux only.) The sequence was pressed on       No      No
                the keyboard.  Shutdown.
  kbrequest     (Linux only.) Keyboard spawned
                request. This is ill-defined.
  powerokwait   (Linux only.) Power has come back on.           Yes     No

  process:指作一daemon,shell script或program.这个进程可以执行其他二进制文件
        或shell script.

  在上面的示例中,系统加电后默认的运行状态为3,不同的运行级别所要执行的命令
  由shell script /etc/rc.d/rc控制,/etc/rc.d/rc根据参数(运行级别数)的不同决
  定执行/etc/rc.d/rc$runlevel.d/S*, 而运行级别1-6时如果没有到主控台的mingetty
  则启动mingetty tty?,而对于用户的热启动请求则会生新启动机器(ctrlaltdel).

  BSD类型的系统则使用另外一种灵活性稍差的init进程,init运行一个基本的重启
  序列,根据所调用的方式不同,启动一个多用户或单用户系统。init通过信号改变
  状态,使用kill命令来发送相应的信号,比如当从多用户切换到单用户时,超级用
  户发送一个kill -TERM 1.

rc script(系统启动脚本程序).
   BSD: /etc/rc /etc/rc.conf /etc/rc.conf.local ...
   SYSV:
        /etc/init.d/*
        /etc/rc$runlevel.d/S*   系统启动rc shell script, 执行顺序按文件名
                                数字从小到大,如先执行S10*, 再执行S12*.
        /etc/rc$runlevel.d/K*   系统关机rc shell script,执行顺序与启动文件
                                相反,先执行数字大的。
                通常情况下/etc/rc$runlevel.d/*是到/etc/init.d/目录下相应文件
                的连接。可执行ls -aF /etc/rc2.d/或file /etc/rc2.d/S*看一下。
                多个不同运行级别的目录下的启动文件可能会连接到/etc/init.d/
                下的同一个文件。
   Linux Redhat:        /etc/rc.d/init.d/*
                        /etc/rc.d/rc$runlevel.d/S*
                        /etc/rc.d/rc$runlevel.d/K*
                        /etc/rc.d/rc启动控制文件
                        网络配置文件: /etc/sysconfig/network
                                      /etc/sysconfig/network-script/*
                        模块配置文件: /etc/conf.modules
   Linux Slackware:     /etc/rc.d/*


.启动守户进程及程序
    使用ps aux |more应可以看到如下进程:
    init        进程号永远为1,用户任务及大多数系统任务的父进程
    inetd       Internet Super Server, 此进程监听来自网络上的socket连接,
                并调用相应的服务来处理所收到的信息,这种服务包括ftp,telnet,
                finger,talk,rsh等。
    getty       设置终端类型、速度、线路及其他方式
    syslogd     记录系统信息的守护进程
    crond       定时守户进程,可在指定时间及日期执行在crontab中所指定的任务。
    named       DNS服务
    routed      路由表维护进程,使用RIP协议,用于网络信息传输
    gated       路由表维护进程,所使用的路由协议比routed更多,功能更强
                只有在使用动态路由协议的路由器上才有必运行routed或gated,普通
                主机不用运行这两个守护进程。
    nfsd/biod   NFS相关进程
    telnetd     TELNET守护进程,当有远程telnet请求时由inetd启动telnetd
    ftpd        FTP守护进程,当有远程ftp请求时由inetd启动ftpd

注:如果有文件/etc/nologin存在,则只有超级用户可以从主控台进入系统,此时如
    果有其他用户试图连接系统则会看到/etc/nologin的文本内容。

2.关机
    关机会依次杀掉所有的进程,同步buffer与disk中的内容,然后umuont所有的文件
    系统,关机时最好看一下当前是否有用户在使用系统。可以使用shutdown, reboot,
    init,sync及halt关闭电源。最好不要使用halt关机,因为这样有可能损坏文件系统。

    推荐使用:
        shutdown [-h|-r] [-y] [ grace ]
                grace用户退出的时间,单位为秒,默认值为60秒。
        文件/etc/shutdown.allow列出可以执行shutdown的用户名。
    TIPS:启动、关机时取好看一下主控台信息。

文章评论1条评论)

登录后参与讨论

用户377235 2014-6-5 17:34

wdxde3

相关推荐阅读
用户1548568 2010-09-01 15:48
X86问题解决备忘
1. 无法关机现象:    每次关机后(SB电源还在),就会自动重新开机,S3没有问题,因此判断S3后的时序信号等没有问题,触发开机的情况应该是由前面的信号触发引起;结合出现这种情况的现象(几率性出现...
用户1548568 2010-08-09 08:52
(转载)网络安全设备Bypass功能介绍及分析
网络安全平台厂商往往需要用到一项比较特殊的技术,那就是Bypass,那么到底什么是Bypass呢,Bypass设备又是如何来实现的?下面我就对Bypass技术做一下简单的介绍和说明。  一、 什么是B...
用户1548568 2010-06-03 14:09
[转载]AC97声卡与HD AUDIO声卡的区别
一.AC97 声卡1.AC97的提出 1996年6月, 5家PC领域中颇具知名度和权威性的软硬件公司共同提出了一种全新思路的芯片级PC音源结构,也就是我们现在所见的“AC97”标准(Audio Cod...
用户1548568 2010-06-03 13:16
论“品”
这年头,大街小巷都能听到“没品..”,不明白这个品是什么意思,小侃一下:小弟认为那些动不动说人没品的,不过是拿着自已拼着老命积攒起来自以为是“品”的东西,然后看到所谓没“品”的人的表现,兴冲冲站上自已...
用户1548568 2010-05-23 20:02
电感选型
再来一篇,还是不很清楚,看来得找电感厂家问问,不知道鸟不鸟我啊。。。。路过的大侠还望出手帮忙啊TDK品牌电感: 1、SLF系列等功率电感,绕线贴片型产品;型号如:SLF7032T-220MR96-PF...
用户1548568 2010-05-23 19:48
为DC/DC转换器选择正确的电感器与电容器
现在需要自已做X86电源,没有办法,只能赶鸭子上架了啊,找了半天想找个说得比较清楚的功率电感选型文章,还没有找到特别好的,这篇先看看概念吧:随着手机、PDA以及其它便携式电子产品在不断小型化,其复杂性...
我要评论
1
5
关闭 站长推荐上一条 /2 下一条