当前位置: 代码网 > 服务器>服务器>Linux > Linux开机启动流程详解 init进程和运行级别怎么理解

Linux开机启动流程详解 init进程和运行级别怎么理解

2026年09月29日 • Linux •我要评论
linux 系统启动过程可拆解为5 个核心阶段,每个阶段均有明确的执行逻辑、配置文件及工具命令。以下结合教程内容,分阶段解析启动流程,并总结关键命令与方法。一、linux 启动的 5 个核心阶段阶段

linux 系统启动过程可拆解为 5 个核心阶段,每个阶段均有明确的执行逻辑、配置文件及工具命令。

以下结合教程内容,分阶段解析启动流程,并总结关键命令与方法。

一、linux 启动的 5 个核心阶段

阶段 1:内核引导(kernel boot)

这是系统启动的 “硬件初始化→内核加载” 环节,是操作系统接管硬件的第一步。

  1. bios 自检:计算机通电后,首先执行 bios(基本输入输出系统) 开机自检,检查 cpu、内存、硬盘等硬件是否正常。
  2. 选择启动设备:bios 根据预设的启动顺序(如硬盘、u 盘)定位启动设备,由该设备加载操作系统。
  3. 加载内核文件:操作系统接管硬件后,优先读取 /boot 目录下的内核文件(如 vmlinuz,linux 内核镜像),完成内核初始化
  • 关键文件 / 路径:/boot(内核文件存放目录)
  • 无直接命令:此阶段为硬件级自动执行,无需用户干预。

阶段 2:运行 init 进程(初始化进程启动)

1.init 是 linux 系统所有进程的 “祖先”(pid=1),负责启动后续所有守护进程,其类型随系统版本差异而不同。

init 类型适用系统版本核心配置文件
sysv initcentos 5 及之前/etc/inittab
upstartcentos 6/etc/inittab、/etc/init/*.conf
systemdcentos 7 及之后/usr/lib/systemd/system、/etc/systemd/system

2.核心任务:管理运行级别:

  • init 通过 “运行级别(runlevel)” 区分启动场景(如服务器 / 桌面),不同级别启动不同 “守护进程(daemon,类似 windows 服务)”。
  • linux 共 7 个运行级别,含义如下:
运行级别含义注意事项
0系统停机状态不可设为默认级别,否则无法启动
1单用户模式(root 权限)用于系统维护,禁止远程登录
2多用户模式(无 nfs 服务)无网络文件系统支持
3完全多用户模式(有 nfs)登录后进入 命令行模式(服务器常用)
4保留级别系统未使用
5x11 图形模式登录后进入 图形 gui 界面(桌面常用)
6系统重启状态不可设为默认级别,否则无限重启
  • 关键文件:/etc/inittab(sysv/upstart 核心配置)、/usr/lib/systemd/system(systemd 配置)
  • 无直接命令:init 进程由内核自动启动,用户无需手动执行。

阶段 3:系统初始化(初始化系统环境)

此阶段通过脚本完成系统基础配置,确保硬件、网络等环境就绪,核心是执行 rc.sysinit 和对应运行级别的启动脚本。

执行 /etc/rc.d/rc.sysinit 脚本:

  • 由 init 配置文件中 si::sysinit:/etc/rc.d/rc.sysinit 触发,是所有运行级别都优先执行的脚本。
  • 核心功能:激活交换分区(swap)、检查硬盘健康、加载硬件驱动模块、初始化系统环境变量等。

执行对应运行级别的启动脚本:

以运行级别 5(图形模式)为例,init 执行 l5:5:wait:/etc/rc.d/rc 5,即调用 /etc/rc.d/rc 脚本并传入参数 5。

/etc/rc.d/rc 会扫描 /etc/rc.d/rc5.d/ 目录下的 “链接文件”(实际指向 /etc/rc.d/init.d/ 中的真实脚本):

  • 以 s 开头的链接:执行对应脚本的 start 命令(启动守护进程)。
  • 以 k 开头的链接:若对应进程已运行(通过 /var/lock/subsys/ 下的标志文件判断),先执行 stop 命令停止,再重启(确保运行级别切换时进程同步)。

管理守护进程的工具:用户可通过以下命令自定义启动的守护进程:

  • chkconfig:命令行工具,用于配置守护进程在不同运行级别的启动状态(如 chkconfig --list 查看所有守护进程状态)。
  • setup:图形化工具(需终端支持),通过 “system services” 选项勾选需启动的守护进程。
  • 关键文件 / 路径:/etc/rc.d/rc.sysinit、/etc/rc.d/rc、/etc/rc.d/rcx.d/(x 为运行级别,如 3、5)、/etc/rc.d/init.d/(真实守护进程脚本目录)
  • 关键命令:chkconfig(管理守护进程启动状态)、setup(图形化配置系统服务)

阶段 4:建立终端(创建用户登录终端)

系统环境初始化完成后,init 会创建 6 个虚拟终端,供用户登录使用。

终端配置来源:/etc/inittab 中定义 6 个终端的配置,示例如下:

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

...

6:2345:respawn:/sbin/mingetty tty6

  • 2345:表示在运行级别 2、3、4、5 中启动该终端。
  • respawn:若终端进程意外退出,自动重启。
  • /sbin/mingetty:终端启动程序,负责打开终端、设置模式,并显示文本登录界面。

阶段 5:用户登录系统

终端就绪后,用户通过身份验证登录系统,支持 3 种登录方式:

命令行登录(最基础):流程:mingetty 显示登录界面 → 用户输入用户名 → login 程序验证身份:

  • 额外限制:/etc/usertty 文件可对特定用户设置登录终端限制(无此文件则无限制)。
  • 若用户为 root:检查 /etc/securetty 文件,仅该文件中登记的终端允许 root 登录(无此文件则允许所有终端)。
  • 若用户名非 root:检查 /etc/nologin 文件,若存在则输出文件内容并拒绝登录(用于系统维护)。

ssh 登录(远程登录):通过 ssh 服务(如 sshd 守护进程)实现远程命令行登录,需提前启动 sshd 服务(可通过 chkconfig sshd on 设置开机启动)。

图形界面登录(可视化):运行级别为 5 时自动启动,登录界面由图形服务(如 gdm、kdm)提供,登录成功后直接进入 kde、gnome 等桌面环境。

  • 关键文件:/etc/nologin(非 root 登录限制)、/etc/securetty(root 终端限制)、/etc/usertty(用户终端限制)
  • 关键命令:login(身份验证程序,自动触发,无需手动执行)、sshd(ssh 服务守护进程,启动命令 service sshd start)

二、关键命令与方法总结

1. 运行级别与守护进程管理

命令功能示例
chkconfig配置守护进程在不同运行级别的启动状态chkconfig --list(查看所有守护进程状态)、chkconfig sshd on(设置 sshd 开机启动)
setup图形化配置系统服务(含守护进程)终端输入 setup → 选择 “system services” → 勾选需启动的服务
init [0-6]切换运行级别init 3(切换到命令行模式)、init 5(切换到图形模式)

2. 关机与重启命令

linux 关机需先同步内存数据到硬盘(避免数据丢失),正确流程:sync → 关机 / 重启命令。

命令功能示例
sync将内存数据同步到硬盘终端输入 sync(建议关机前执行 2-3 次)
shutdown关机 / 重启(支持定时)shutdown -h now(立即关机)、shutdown -r +10(10 分钟后重启)、shutdown -h 20:25(20:25 关机)
reboot立即重启等同于 shutdown -r now
halt立即关机等同于 shutdown -h now、poweroff
poweroff立即关机同 halt
init 0切换到运行级别 0(关机)终端输入 init 0
init 6切换到运行级别 6(重启)终端输入 init 6

3. systemd 服务控制(centos 7 及之后)

命令功能示例
systemctl start [服务名]启动服务systemctl start sshd
systemctl stop [服务名]停止服务systemctl stop firewalld
systemctl restart [服务名]重启服务systemctl restart nginx
systemctl enable [服务名]设置服务开机启动systemctl enable mariadb
systemctl status [服务名]查看服务状态systemctl status docker

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

赞 (0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com