Debian启动过程简介

http://www.ringkee.com/note/opensource/debian/ch09s03.html

Debian与其它的Linux发行版一样,系统启动主要分三个阶段,第一个阶段是BIOS启动阶段,第二个阶段是kernel启动阶段,第三个阶段是init初始化系统阶段。当电脑加电启动时会首先运行主板flash Memory中的程序,主要任务是检测电脑的基础组件,如主板、内存和硬盘等。当基础组件检测完成后,找到引导设备后,电脑就会进入kernel启动阶段。kernel启动阶段通过MBR中的引导程序(LILO or GRUB)把内核映像装入内存运行。Kernel启动阶段完成后,就开始启动系统的第一个进程init,它完成一系统初始化工作,使Linux系统可以正常使用。init进程是Linux系统所有进程的父进程。本节重点介绍init初始化程序。

init程序的配置文件是/etc/inittab 。内容如下:

# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:5:initdefault:    #默认的启动级别为5

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS    #第一个执行的初始化脚本

# What to do in single-user mode.
~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin

# What to do when CTRL-ALT-DEL is pressed.
#ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

# Action on special keypress (ALT-UpArrow).
#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."

# What to do when the power fails/returns.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop

# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
#  :::
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3

在这个配置文件中,以“#”号开头的内容是注释信息。第一个执行的脚本是/etc/init.d/rcS,它会执行/etc /rcS.d目录下的所有脚本。/etc/rcS.d目录下的脚本名都以大写字母“S”和一个顺序号开头,它们在系统初始化时都要被执行。如果某个脚本你不想执行,则改成以大写字母“K”开头即可。以”K“开头的脚本会先被执行,它调用了脚本的stop参数,用来关闭一些进程,接着再执行以”S“开头的脚本,它调用了脚本的start参数,用以启动进程。其实/etc/rcS.d目录下的所有脚本都是符号链接,真正执行的脚本存放在/etc/init.d 目录下。脚本会按从小到大的顺序执行,以S40开头的脚本执行之后,本地文件系统已加载,网络已启动,所有的驱动程序完成初始化。S60的脚本执行之后,系统时钟已设置,NFS文件系统已加载,文件系统已可用。

执行完系统级的初始化脚本后,init程序会继续执行默认运行级别指定的启动脚本。如指定的默认运行级别是5则会执行/etc/rc5.d目录下的脚本,如果是1则会执行/etc/rc1.d目录下的脚本。/etc/rc5.d目录下的脚本名的命名格式和rcS.d目录下的脚本一样,也是一些以“S”或“K”开头的符号链接。以“S”开头表示启动,以“K”开头的表示禁止。 Debian系统定义了从0到6共7个运行级别。每个级别代表意义如下:

  • Runlevel 0:关机操作,关闭所有程序,如果内核支持APM,还可以自动关闭主机电源。

  • Runlevel 1:单用户模式,提供一个root shell和只读的文件系统,该级别用于进行系统恢复。

  • Runlevel 2,3,4,5:多用户模式,由用户自由设定。

  • Runlevel 6:与级别0类似,但它不关闭电脑,而是重启电脑。

update-rc.d命令用以维护不同级别下的启动脚本,它会自动在rc?.d目录下创建到/etc/init.d目录中脚本的链接。在运行该命令前,请确保你要添加的启动脚本已位于/etc/init.d目录下。下面是一个update-rc.d命令示例:

debian:/etc# update-rc.d foo start 99 2 3 4 5 . stop 01 0 1 6 .
 Adding system startup for /etc/init.d/foo ...
   /etc/rc0.d/K01foo -> ../init.d/foo
   /etc/rc1.d/K01foo -> ../init.d/foo
   /etc/rc6.d/K01foo -> ../init.d/foo
   /etc/rc2.d/S99foo -> ../init.d/foo
   /etc/rc3.d/S99foo -> ../init.d/foo
   /etc/rc4.d/S99foo -> ../init.d/foo
   /etc/rc5.d/S99foo -> ../init.d/foo

/etc/inittab配置文件有专门的指令控制init进程的运行,指令格式如下:

id:runlevels:action:command

id是指令标识,runlevels表示运行级别,action表示执行的时机,command表示执行的命令。如:

l5:5:wait:/etc/init.d/rc 5

其中15是指令标识符,5是运行级别,wait表示进入运行级别时就开始执行”/etc/init.d/rc 5“命令,在执行命令期间,init程序会停下来,直到命令执行完成后init才继续往下执行。action有很多种,下面分别介绍:

  • respawn,启动命令并监视命令的执行,当进程退出时,会再次执行该命令。

  • wait,进行指定运行级别时,执行指定的命令,并且init进程会暂停,直到命令执行完成再继续。

  • once,进行指定运行级别时,执行一次指定命令。

  • boot,命令在系统引导时就被执行,不受运行级别约束。

  • bootwait,同上,但init进程会停下来等命令执行完才继续往下执行。

  • off,禁用所有运行级别下的某个命令。

  • initdefault,指定在系统引导时进入哪个运行级别。

  • powerwait,在电源不足时需要运行的命令,init进程会暂停,直到指定的命令完成。

  • powerfailnow,同上,但init进程不会暂停。

  • powerokwork,电源恢复正常后需运行的命令,init进程暂停,直到命令执行完成。

  • ctrlaltdel,在捕获到Ctrl+Alt+Del组合键时执行的命令。

  • kbdrequest,把特殊的动作映射到特定的按键上。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Debian网络启动镜像包是Debian操作系统的一种安装方式,它允许用户使用网络连接来安装并配置Debian系统。网络启动镜像包通常是一个轻量级的ISO镜像,包含了最基本的系统引导和网络支持的组件。 使用Debian网络启动镜像包,用户只需要一个可用的网络连接和一台空白的计算机即可开始安装。首先,用户需要将网络启动镜像包下载到一台可用设备上,如USB闪存驱动器或光盘。然后,将这个设备插入到目标计算机,并设置计算机从该设备启动。 一旦计算机从网络启动镜像包启动,它将加载并运行操作系统的基本引导组件。然后,用户将被引导到一个简单的安装程序,该程序将指导用户完成Debian系统的安装过程。 在安装过程,用户将需要配置网络连接参数,如IP地址、网关和DNS服务器等。用户可以选择使用有线或无线网络连接方式,根据实际情况进行设置。 此外,Debian网络启动镜像包还提供了一个软件仓库,用户可以从选择和安装所需的软件包。通过网络连接,用户可以直接从这个仓库下载和安装所需的软件,这使得用户可以根据自己的需求定制自己的系统。 总结来说,Debian网络启动镜像包是一种便捷的安装Debian系统的方式。通过网络连接,用户可以轻松地安装和配置Debian系统,并从软件仓库选择和安装所需的软件包。这种安装方式适用于没有光盘驱动器或需要远程安装的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值