分享:linux启动流程

发布时间:2020-12-08编辑:脚本学堂
本文详细介绍了linux系统的启动流程,以及linux服务启动顺序调整的相关知识,有需要的朋友参考学习下。

本节内容:
linux启动流程、linux启动服务。

一,Linux系统的启动步骤:
1,读取MBR的信息,启动Boot Manager
Windows使用NTLDR作为Boot Manager,如果系统中安装多个版本的Windows,则需要在NTLDR中选择您要进入的系统。
Linux通常使用功能强大,配置灵活的grub作为Boot Manager。

2,加载系统内核,启动init进程
init进程是Linux的根进程,所有的系统进程都是它的子进程。
init进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别,按顺序运行该运行级别对应文件夹下的脚本。脚本通常以 start 参数启动,并指向一个系统中的程序。

/etc/rcS.d/ 目录下的启动脚本首先被执行,然后是 /etc/rcN.d/ 目录。
例如,设定的运行级别为3,那么它对应的启动目录为 /etc/rc3.d/ 。
根据 /etc/rcS.d/ 文件夹中对应的脚本启动Xwindow服务器 xorg。
Xwindow为Linux下的图形用户界面系统。

3,启动登录管理器,等待用户登录
Ubuntu系统默认使用GDM作为登录管理器,您在登录管理器界面中输入用户名和密码后,便可以登录系统。(您可以在 /etc/rc3.d/ 文件夹中找到一个名为 S13gdm 的链接)

二,更改运行级别
在 /etc/inittab 文件中找到如下内容:
 

复制代码 代码示例:
# The default runlevel.
id:2:initdefault:

这一行中的数字 2 ,为系统的运行级别,默认的运行级别涵义如下:
0   关机
1   单用户维护模式
2~5 多用户模式
6   重启

服务管理

三,更改启动服务

在运行级别对应的文件夹中,可以看到许多文件名以 S## 和 K## 起始的启动脚本链接。
例如:
 

/etc/rcS.d/S35mountall.sh   挂载文件系统
/etc/rcS.d/S40networking    启用网络支持
/etc/rc2.d/S13gdm           启动登录管理器
/etc/rc2.d/S20makedev       创建设备文件
/etc/rc2.d/S23xinetd        启动超级进程
 

init进程将以 start 为参数,按文件名顺序执行所有以 S## 起始的脚本。

脚本名称中的数字越小,它将被越早执行。
例如,在 /etc/rc2.d/ 文件夹中, S13gdm 文件名中的数字小于 S23xinetd , S13gdm 将比 S23xinetd 先执行。

如果一个脚本链接,以 K## 起始,表示它将以 stop 参数被执行。如果相应服务没有启动,则不执行该脚本。
例如:
/etc/rc2.d/K20powernowd  针对某种硬件的电源管理支持
如果,需要禁止某一服务在启动时自动运行,可以将相应运行级别中的脚本由 S##xxx 重命名为 K##xxx 。

四,手动控制服务
可以手动运行带有以下参数的启动脚本,来控制系统服务。
- start 启动 - stop 停止 - restart 重启

例如:
/etc/rc2.d/K20powernowd start

推荐的方式:
可以直接使用 /etc/init.d/ 文件夹中的启动脚本( /etc/rcX.d/ 中的启动脚本链接到 /etc/init.d/ 文件夹下相应脚本)。

例如:
/etc/init.d/powernowd start
注意:以上命令的位置,没有包含在环境变量的搜索路径中,需要输入完整路径才可以。