Debian 初始化运行级别

Debian 初始化运行级别

过去,当您引导大多数 Linux 时,您将引导至运行级别 6,除非您在引导加载期间执行了某些操作来更改运行级别。

然后,该进程将查找 /etc/init/rcX.d (IIRC),其中 X 是运行级别,并按字典排序顺序执行以 S 开头的所有脚本(因此 S01xxx 在 S20yyy 之前运行)。

当您完成关闭过程时,将以 K 开头的脚本将以反向字典排序顺序运行并 IIRC。

现在情况发生了变化,rcX.d 目录已移至 /etc,并添加了 /etc/rcS.d,默认运行级别为 2。

不幸的是,直到现在我还没有关注这些变化。有人可以描述一下当前系统中运行级别 2 的启动和关闭过程吗?

答案1

当系统从一个运行级别转换到另一个运行级别时,它会按顺序执行现有运行级别中的所有“K”脚本,然后按顺序执行新运行级别中的所有“S”脚本。 Debian 实现并行启​​动,因此大多数脚本将同时运行(但按顺序有效),并且有一个包含每个脚本的依赖信息的标准,以及用于插入/删除脚本的工具。您可以通过添加CONCURRENCY=NONE到 来关闭并发/etc/default/rcS

在 Debian 的 current 上inittab,在每个运行级别转换时运行的命令集是/etc/init.d/rc

当您启动时,系统被视为处于运行级别S。中的“S”脚本 /etc/rcS.d按顺序执行(按/etc/init.d/rc)。

当它们完成时,系统将进入您在内核命令行上指定的运行级别,或者默认的运行级别,如果您没有安装 X,则默认运行级别为 2。

没有“K”脚本,/etc/rcS.d因此什么也没有发生 - 运行级别“S”用于一般系统初始化。但随后所有“S”脚本/etc/rc2.d都会按顺序执行。

一旦这些完成,您就正式进入运行级别 2。该/etc/init.d/rc命令返回,并init生成它getty配置为执行的操作,并等待更改运行级别的信号。

当您关闭时,会向 发送一个信号init。然后,系统从运行级别 2 移动到 6(重新启动)或 0(关闭)。因此,所有“K”脚本/etc/rc2.d都会按顺序执行。然后,按顺序执行/etc/rc6.d或中的所有“S”脚本/etc/rc0.d(如果存在)。

然后,由于这是运行级别 0 或 6(请注意/etc/init.d/rc- 该脚本显式测试 0 或 6),它将立即转换出运行级别,导致所有“K”脚本运行。

0 或 6 的最终“K”脚本将是暂停/关闭电源或重新启动系统的命令。

答案2

/etc/inittab

就在我的/etc/inittab(Fedora 系统)中:

# Default runlevel. The runlevels used 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)
# 

我的这一行/etc/inittab控制我的默认运行级别:

id:5:initdefault:

像这样改变它:

$ sudo vim /etc/inittab
id:3:initdefault:

运行级别

您当前的运行级别是这样的:

$ runlevel
N 5

所以我以前的运行级别是未知的 ( N),而我当前的运行级别是 5。暂时更改您的运行级别:

telinit 3

请看一下这篇文章,标题为:启动管理器(文档),它解释了这个目录在 Debian 下是如何组织的。

在 Debian 下,它显示以下运行级别:

N System bootup (NONE).
S Single user mode (not to be switched to directly)
0 halt
1 single user mode
2 - 5 multi user mode
6 reboot

相关内容